Update to 106.0

This commit is contained in:
Martin Stransky 2022-10-14 15:03:58 +02:00
parent 949ba97268
commit c3c6c167a2
5 changed files with 148 additions and 86 deletions

2
.gitignore vendored
View File

@ -536,3 +536,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-105.0.1-20220922.tar.xz
/firefox-105.0.2.source.tar.xz
/firefox-langpacks-105.0.2-20221005.tar.xz
/firefox-langpacks-106.0-20221014.tar.xz
/firefox-106.0.source.tar.xz

View File

@ -162,13 +162,13 @@ ExcludeArch: i686
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 105.0.2
Release: 2%{?pre_tag}%{?dist}
Version: 106.0
Release: 1%{?pre_tag}%{?dist}
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
%if %{with langpacks}
Source1: firefox-langpacks-%{version}%{?pre_version}-20221005.tar.xz
Source1: firefox-langpacks-%{version}%{?pre_version}-20221014.tar.xz
%endif
Source2: cbindgen-vendor.tar.xz
Source10: firefox-mozconfig
@ -242,7 +242,6 @@ Patch402: mozilla-1196777.patch
Patch407: mozilla-1667096.patch
Patch408: mozilla-1663844.patch
Patch415: mozilla-1670333.patch
Patch416: mozilla-1791856.patch
Patch417: D158747.diff
# PGO/LTO patches
@ -501,7 +500,6 @@ This package contains results of tests executed during build.
%patch407 -p1 -b .1667096
%patch408 -p1 -b .1663844
%patch415 -p1 -b .1670333
%patch416 -p1 -b .1791856
%patch417 -p1 -b .D158747
# PGO patches
@ -515,7 +513,7 @@ This package contains results of tests executed during build.
%patch990 -p1 -b .work-around-GCC-ICE-on-arm
%ifnarch ppc64le %{arm}
%patch1000 -p1 -b .libwebrtc-screen-cast-sync
#%patch1000 -p1 -b .libwebrtc-screen-cast-sync
%endif
%patch1100 -p1 -b .ppc-mobzuild
@ -1092,6 +1090,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
* Fri Oct 14 2022 Martin Stransky <stransky@redhat.com>- 106.0-1
- Updated to 106.0
* Fri Oct 14 2022 Martin Stransky <stransky@redhat.com>- 105.0.2-2
- Fixed crashes on multi-monitor systems (mzbz#1793922)

View File

@ -1,7 +1,7 @@
diff -up firefox-98.0/media/ffvpx/libavcodec/codec_list.c.1667096 firefox-98.0/media/ffvpx/libavcodec/codec_list.c
--- firefox-98.0/media/ffvpx/libavcodec/codec_list.c.1667096 2022-03-01 11:15:54.962398882 +0100
+++ firefox-98.0/media/ffvpx/libavcodec/codec_list.c 2022-03-01 11:17:46.605000755 +0100
@@ -11,6 +11,9 @@ static const AVCodec * const codec_list[
diff -up firefox-106.0/media/ffvpx/libavcodec/codec_list.c.1667096 firefox-106.0/media/ffvpx/libavcodec/codec_list.c
--- firefox-106.0/media/ffvpx/libavcodec/codec_list.c.1667096 2022-10-10 18:05:25.000000000 +0200
+++ firefox-106.0/media/ffvpx/libavcodec/codec_list.c 2022-10-14 10:43:44.943418216 +0200
@@ -11,6 +11,9 @@ static const FFCodec * const codec_list[
#if CONFIG_MP3_DECODER
&ff_mp3_decoder,
#endif
@ -11,10 +11,10 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/codec_list.c.1667096 firefox-98.0/m
#if CONFIG_LIBDAV1D
&ff_libdav1d_decoder,
#endif
diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c
--- firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 2022-03-01 11:15:54.963398914 +0100
+++ firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c 2022-03-01 11:15:54.963398914 +0100
@@ -0,0 +1,409 @@
diff -up firefox-106.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-106.0/media/ffvpx/libavcodec/libfdk-aacdec.c
--- firefox-106.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 2022-10-14 10:43:44.943418216 +0200
+++ firefox-106.0/media/ffvpx/libavcodec/libfdk-aacdec.c 2022-10-14 13:33:42.604975843 +0200
@@ -0,0 +1,498 @@
+/*
+ * AAC decoder wrapper
+ * Copyright (c) 2012 Martin Storsjo
@ -40,6 +40,7 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+#include "libavutil/common.h"
+#include "libavutil/opt.h"
+#include "avcodec.h"
+#include "codec_internal.h"
+#include "internal.h"
+
+#ifdef AACDECODER_LIB_VL0
@ -73,7 +74,14 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ int drc_heavy;
+ int drc_effect;
+ int drc_cut;
+ int album_mode;
+ int level_limit;
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ int output_delay_set;
+ int flush_samples;
+ int delay_samples;
+#endif
+ AVChannelLayout downmix_layout;
+} FDKAACDecContext;
+
+
@ -92,17 +100,23 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ OFFSET(drc_boost), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 127, AD, NULL },
+ { "drc_cut", "Dynamic Range Control: attenuation factor, where [0] is none and [127] is max compression",
+ OFFSET(drc_cut), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 127, AD, NULL },
+ { "drc_level", "Dynamic Range Control: reference level, quantized to 0.25dB steps where [0] is 0dB and [127] is -31.75dB",
+ OFFSET(drc_level), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 127, AD, NULL },
+ { "drc_level", "Dynamic Range Control: reference level, quantized to 0.25dB steps where [0] is 0dB and [127] is -31.75dB, -1 for auto, and -2 for disabled",
+ OFFSET(drc_level), AV_OPT_TYPE_INT, { .i64 = -1}, -2, 127, AD, NULL },
+ { "drc_heavy", "Dynamic Range Control: heavy compression, where [1] is on (RF mode) and [0] is off",
+ OFFSET(drc_heavy), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 1, AD, NULL },
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ { "level_limit", "Signal level limiting", OFFSET(level_limit), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 1, AD },
+ { "level_limit", "Signal level limiting",
+ OFFSET(level_limit), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, AD },
+#endif
+#if FDKDEC_VER_AT_LEAST(3, 0) // 3.0.0
+ { "drc_effect","Dynamic Range Control: effect type, where e.g. [0] is none and [6] is general",
+ OFFSET(drc_effect), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 8, AD, NULL },
+#endif
+#if FDKDEC_VER_AT_LEAST(3, 1) // 3.1.0
+ { "album_mode","Dynamic Range Control: album mode, where [0] is off and [1] is on",
+ OFFSET(album_mode), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 1, AD, NULL },
+#endif
+ { "downmix", "Request a specific channel layout from the decoder", OFFSET(downmix_layout), AV_OPT_TYPE_CHLAYOUT, {.str = NULL}, .flags = AD },
+ { NULL }
+};
+
@ -132,6 +146,14 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ }
+ avctx->sample_rate = info->sampleRate;
+ avctx->frame_size = info->frameSize;
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ if (!s->output_delay_set && info->outputDelay) {
+ // Set this only once.
+ s->flush_samples = info->outputDelay;
+ s->delay_samples = info->outputDelay;
+ s->output_delay_set = 1;
+ }
+#endif
+
+ for (i = 0; i < info->numChannels; i++) {
+ AUDIO_CHANNEL_TYPE ctype = info->pChannelType[i];
@ -209,17 +231,15 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ ch_error = 1;
+ }
+ }
+ if (!ch_error &&
+ av_get_channel_layout_nb_channels(ch_layout) != info->numChannels) {
+
+ av_channel_layout_uninit(&avctx->ch_layout);
+ av_channel_layout_from_mask(&avctx->ch_layout, ch_layout);
+ if (!ch_error && avctx->ch_layout.nb_channels != info->numChannels) {
+ av_log(avctx, AV_LOG_WARNING, "unsupported channel configuration\n");
+ ch_error = 1;
+ }
+ if (ch_error)
+ avctx->channel_layout = 0;
+ else
+ avctx->channel_layout = ch_layout;
+
+ avctx->channels = info->numChannels;
+ avctx->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
+
+ return 0;
+}
@ -261,11 +281,19 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ return AVERROR_UNKNOWN;
+ }
+
+ if (avctx->request_channel_layout > 0 &&
+ avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE) {
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
+ if (avctx->request_channel_layout) {
+ av_channel_layout_uninit(&s->downmix_layout);
+ av_channel_layout_from_mask(&s->downmix_layout, avctx->request_channel_layout);
+ }
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+ if (s->downmix_layout.nb_channels > 0 &&
+ s->downmix_layout.order != AV_CHANNEL_ORDER_NATIVE) {
+ int downmix_channels = -1;
+
+ switch (avctx->request_channel_layout) {
+ switch (s->downmix_layout.u.mask) {
+ case AV_CH_LAYOUT_STEREO:
+ case AV_CH_LAYOUT_STEREO_DOWNMIX:
+ downmix_channels = 2;
@ -274,7 +302,7 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ downmix_channels = 1;
+ break;
+ default:
+ av_log(avctx, AV_LOG_WARNING, "Invalid request_channel_layout\n");
+ av_log(avctx, AV_LOG_WARNING, "Invalid downmix option\n");
+ break;
+ }
+
@ -311,6 +339,12 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ }
+
+ if (s->drc_level != -1) {
+ // This option defaults to -1, i.e. not calling
+ // aacDecoder_SetParam(AAC_DRC_REFERENCE_LEVEL) at all, which defaults
+ // to the level from DRC metadata, if available. The user can set
+ // -drc_level -2, which calls aacDecoder_SetParam(
+ // AAC_DRC_REFERENCE_LEVEL) with a negative value, which then
+ // explicitly disables the feature.
+ if (aacDecoder_SetParam(s->handle, AAC_DRC_REFERENCE_LEVEL, s->drc_level) != AAC_DEC_OK) {
+ av_log(avctx, AV_LOG_ERROR, "Unable to set DRC reference level in the decoder\n");
+ return AVERROR_UNKNOWN;
@ -325,6 +359,7 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ }
+
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ // Setting this parameter to -1 enables the auto behaviour in the library.
+ if (aacDecoder_SetParam(s->handle, AAC_PCM_LIMITER_ENABLE, s->level_limit) != AAC_DEC_OK) {
+ av_log(avctx, AV_LOG_ERROR, "Unable to set in signal level limiting in the decoder\n");
+ return AVERROR_UNKNOWN;
@ -340,6 +375,15 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ }
+#endif
+
+#if FDKDEC_VER_AT_LEAST(3, 1) // 3.1.0
+ if (s->album_mode != -1) {
+ if (aacDecoder_SetParam(s->handle, AAC_UNIDRC_ALBUM_MODE, s->album_mode) != AAC_DEC_OK) {
+ av_log(avctx, AV_LOG_ERROR, "Unable to set album mode in the decoder\n");
+ return AVERROR_UNKNOWN;
+ }
+ }
+#endif
+
+ avctx->sample_fmt = AV_SAMPLE_FMT_S16;
+
+ s->decoder_buffer_size = DECODER_BUFFSIZE * DECODER_MAX_CHANNELS;
@ -350,22 +394,38 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ return 0;
+}
+
+static int fdk_aac_decode_frame(AVCodecContext *avctx, void *data,
+static int fdk_aac_decode_frame(AVCodecContext *avctx, AVFrame *frame,
+ int *got_frame_ptr, AVPacket *avpkt)
+{
+ FDKAACDecContext *s = avctx->priv_data;
+ AVFrame *frame = data;
+ int ret;
+ AAC_DECODER_ERROR err;
+ UINT valid = avpkt->size;
+ UINT flags = 0;
+ int input_offset = 0;
+
+ err = aacDecoder_Fill(s->handle, &avpkt->data, &avpkt->size, &valid);
+ if (err != AAC_DEC_OK) {
+ av_log(avctx, AV_LOG_ERROR, "aacDecoder_Fill() failed: %x\n", err);
+ return AVERROR_INVALIDDATA;
+ if (avpkt->size) {
+ err = aacDecoder_Fill(s->handle, &avpkt->data, &avpkt->size, &valid);
+ if (err != AAC_DEC_OK) {
+ av_log(avctx, AV_LOG_ERROR, "aacDecoder_Fill() failed: %x\n", err);
+ return AVERROR_INVALIDDATA;
+ }
+ } else {
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ /* Handle decoder draining */
+ if (s->flush_samples > 0) {
+ flags |= AACDEC_FLUSH;
+ } else {
+ return AVERROR_EOF;
+ }
+#else
+ return AVERROR_EOF;
+#endif
+ }
+
+ err = aacDecoder_DecodeFrame(s->handle, (INT_PCM *) s->decoder_buffer, s->decoder_buffer_size / sizeof(INT_PCM), 0);
+ err = aacDecoder_DecodeFrame(s->handle, (INT_PCM *) s->decoder_buffer,
+ s->decoder_buffer_size / sizeof(INT_PCM),
+ flags);
+ if (err == AAC_DEC_NOT_ENOUGH_BITS) {
+ ret = avpkt->size - valid;
+ goto end;
@ -381,11 +441,36 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ goto end;
+ frame->nb_samples = avctx->frame_size;
+
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ if (flags & AACDEC_FLUSH) {
+ // Only return the right amount of samples at the end; if calling the
+ // decoder with AACDEC_FLUSH, it will keep returning frames indefinitely.
+ frame->nb_samples = FFMIN(s->flush_samples, frame->nb_samples);
+ av_log(s, AV_LOG_DEBUG, "Returning %d/%d delayed samples.\n",
+ frame->nb_samples, s->flush_samples);
+ s->flush_samples -= frame->nb_samples;
+ } else {
+ // Trim off samples from the start to compensate for extra decoder
+ // delay. We could also just adjust the pts, but this avoids
+ // including the extra samples in the output altogether.
+ if (s->delay_samples) {
+ int drop_samples = FFMIN(s->delay_samples, frame->nb_samples);
+ av_log(s, AV_LOG_DEBUG, "Dropping %d/%d delayed samples.\n",
+ drop_samples, s->delay_samples);
+ s->delay_samples -= drop_samples;
+ frame->nb_samples -= drop_samples;
+ input_offset = drop_samples * avctx->ch_layout.nb_channels;
+ if (frame->nb_samples <= 0)
+ return 0;
+ }
+ }
+#endif
+
+ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
+ goto end;
+
+ memcpy(frame->extended_data[0], s->decoder_buffer,
+ avctx->channels * avctx->frame_size *
+ memcpy(frame->extended_data[0], s->decoder_buffer + input_offset,
+ avctx->ch_layout.nb_channels * frame->nb_samples *
+ av_get_bytes_per_sample(avctx->sample_fmt));
+
+ *got_frame_ptr = 1;
@ -408,26 +493,30 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-98.
+ av_log(avctx, AV_LOG_WARNING, "failed to clear buffer when flushing\n");
+}
+
+AVCodec ff_libfdk_aac_decoder = {
+ .name = "libfdk_aac",
+ .long_name = NULL_IF_CONFIG_SMALL("Fraunhofer FDK AAC"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_AAC,
+const FFCodec ff_libfdk_aac_decoder = {
+ .p.name = "libfdk_aac",
+ .p.long_name = NULL_IF_CONFIG_SMALL("Fraunhofer FDK AAC"),
+ .p.type = AVMEDIA_TYPE_AUDIO,
+ .p.id = AV_CODEC_ID_AAC,
+ .priv_data_size = sizeof(FDKAACDecContext),
+ .init = fdk_aac_decode_init,
+ .decode = fdk_aac_decode_frame,
+ FF_CODEC_DECODE_CB(fdk_aac_decode_frame),
+ .close = fdk_aac_decode_close,
+ .flush = fdk_aac_decode_flush,
+ .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF,
+ .priv_class = &fdk_aac_dec_class,
+ .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
+ | AV_CODEC_CAP_DELAY
+#endif
+ ,
+ .p.priv_class = &fdk_aac_dec_class,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
+ FF_CODEC_CAP_INIT_CLEANUP,
+ .wrapper_name = "libfdk",
+ .p.wrapper_name = "libfdk",
+};
diff -up firefox-98.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-98.0/media/ffvpx/libavcodec/moz.build
--- firefox-98.0/media/ffvpx/libavcodec/moz.build.1667096 2022-03-01 11:15:54.963398914 +0100
+++ firefox-98.0/media/ffvpx/libavcodec/moz.build 2022-03-01 11:18:00.646453768 +0100
@@ -123,6 +123,12 @@ if CONFIG['MOZ_LIBAV_FFT']:
diff -up firefox-106.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-106.0/media/ffvpx/libavcodec/moz.build
--- firefox-106.0/media/ffvpx/libavcodec/moz.build.1667096 2022-10-10 18:05:25.000000000 +0200
+++ firefox-106.0/media/ffvpx/libavcodec/moz.build 2022-10-14 10:43:44.943418216 +0200
@@ -129,6 +129,12 @@ if CONFIG['MOZ_LIBAV_FFT']:
'avfft.c',
]
@ -440,10 +529,10 @@ diff -up firefox-98.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-98.0/medi
SYMBOLS_FILE = 'avcodec.symbols'
NoVisibilityFlags()
diff -up firefox-98.0/toolkit/moz.configure.1667096 firefox-98.0/toolkit/moz.configure
--- firefox-98.0/toolkit/moz.configure.1667096 2022-03-01 11:15:54.881396269 +0100
+++ firefox-98.0/toolkit/moz.configure 2022-03-01 11:15:54.963398914 +0100
@@ -1950,6 +1950,15 @@ with only_when(compile_environment):
diff -up firefox-106.0/toolkit/moz.configure.1667096 firefox-106.0/toolkit/moz.configure
--- firefox-106.0/toolkit/moz.configure.1667096 2022-10-14 10:43:44.912417169 +0200
+++ firefox-106.0/toolkit/moz.configure 2022-10-14 10:43:44.944418250 +0200
@@ -2148,6 +2148,15 @@ with only_when(compile_environment):
set_config("MOZ_SYSTEM_PNG", True, when="--with-system-png")

View File

@ -1,30 +0,0 @@
diff -up firefox-105.0.1/widget/gtk/nsWindow.cpp.old firefox-105.0.1/widget/gtk/nsWindow.cpp
--- firefox-105.0.1/widget/gtk/nsWindow.cpp.old 2022-09-30 10:23:00.424784507 +0200
+++ firefox-105.0.1/widget/gtk/nsWindow.cpp 2022-09-30 10:24:36.345005046 +0200
@@ -1949,26 +1949,6 @@ void nsWindow::NativeMoveResizeWaylandPo
bool needsPositionUpdate = newBounds.TopLeft() != mBounds.TopLeft();
bool needsSizeUpdate = newBounds.Size() != mLastSizeRequest;
- if (needsPositionUpdate) {
- // See Bug 1735095
- // Font scale causes rounding errors which we can't handle by move-to-rect.
- // The font scale should not be used, but let's handle it somehow to
- // avoid endless move calls.
- if (StaticPrefs::layout_css_devPixelsPerPx() > 0 ||
- gfxPlatformGtk::GetFontScaleFactor() != 1) {
- bool roundingError = (abs(newBounds.x - mBounds.x) < 2 &&
- abs(newBounds.y - mBounds.y) < 2);
- if (roundingError) {
- // Keep the window where it is.
- GdkPoint topLeft = DevicePixelsToGdkPointRoundDown(mBounds.TopLeft());
- LOG(" apply rounding error workaround, move to %d, %d", topLeft.x,
- topLeft.y);
- gtk_window_move(GTK_WINDOW(mShell), topLeft.x, topLeft.y);
- needsPositionUpdate = false;
- }
- }
- }
-
if (needsSizeUpdate) {
// Wayland compositor changed popup size request from layout.
// Set the constraints to use them in nsMenuPopupFrame::SetPopupPosition().

View File

@ -1,4 +1,4 @@
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
SHA512 (cbindgen-vendor.tar.xz) = 0d45c1decfd7aaee853748745c9f5a907c0c6a0cf809c2387aac1cdcf680b0844b1ef4d05148e0527de4ff6e4d4666110bea317bd00b7d73a1210eb58a815563
SHA512 (firefox-105.0.2.source.tar.xz) = 49f4c0e7ecf2cef6fa7de8362185bd9ce6950304dadbbea0522a5782016587b9d58f32b45f0e0edf7a2cc31ea158ed10c886b287a18d1f2bff3daf50d9f0b926
SHA512 (firefox-langpacks-105.0.2-20221005.tar.xz) = 4145606fbe11d57d91b3bfa93c54150c8ce8cad852349cacd96370a94960a1e176ea98eb6f7f4c8520dc51132202f6e434e96ee586c13a26c787281707d3da17
SHA512 (firefox-langpacks-106.0-20221014.tar.xz) = 92f90a91107f48e27bb223c3d06941eca9a68bf7d2909d6192e6413191d291cec3d92654e0d64afea691ced7954c17444d79d7231a426a989d9969955ad5c8f3
SHA512 (firefox-106.0.source.tar.xz) = 30ced2fff818858267eaab23974f6962c5d39433ce8e26507589535fc9348f00cf5e45b90997dfb6e2361b70900547fdb0e70d741127cc6705089ea585ea2296