From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id OA0TAtTtvmX0BwAA62LTzQ:P1 (envelope-from ) for ; Sun, 04 Feb 2024 02:52:20 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1.migadu.com with LMTPS id OA0TAtTtvmX0BwAA62LTzQ (envelope-from ) for ; Sun, 04 Feb 2024 02:52:20 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=lassieur.org header.s=fm2 header.b=Fn4BhxZW; dkim=fail ("body hash did not verify") header.d=messagingengine.com header.s=fm3 header.b="C 3zAixB"; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1707011539; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=6mfGz4keygwm5f/N5+RyYrlws8AIDoGbpxhnoxKEN8w=; b=fWewpeykwGD4lXR+/mVXNYHJmVKsdtsx4L81jtP7pTnexWZ4T/DPCjtalK5llXVq56IkkP 8hrCxHf/gXFdYgjcYho26cizv6F4QB04YOHimd0Wtrk0pCNa9m3lqjL8YElBTfbYPLGntQ JV03ZIaqXndxc46pNYV2d8NL76hMlDAeNWcUJ2V0R64liy5Ror1nBpi8tE1IxxC207ZHqg wl6yZ/zO391cm+HCiqNLvRMofZyR9hcmCUvy3HYLZhWrYJnX4Q6YWUjYxr+7kx7g8ViMN/ 9+69x1oYfIoD4/C+7a3eywNQmIdFeD8EVKfH7ukVFi4UE5Ledp/tCrV0t5qQqQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=lassieur.org header.s=fm2 header.b=Fn4BhxZW; dkim=fail ("body hash did not verify") header.d=messagingengine.com header.s=fm3 header.b="C 3zAixB"; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1707011539; a=rsa-sha256; cv=none; b=EXZ6P+lrwU2Cmj6XsOEmCOXA6zngusO/qTVufaartHKraanrly4lzu7OVTRvh5VC5m5l53 6FLPLt4R70Fc33kmT/ks/zJi/frfcocbcvztNxN3dFdcEK5L73CpoviuRktimq1GM01PEW k1OFigvkSWUu+60tkWwIVsGo/RCnn0QI66x8RejO6ljLwMfrdMjHwbhkf+UhsIbMYyzZg7 zRNxzJ0i50dUUauutXP5+UoYim60BU1vCy5eP+poKlmkAIykNYqoelQkJOBkKQapcaJ7Az COyWksy6wxSLPRIucvOGLIrSKn0hiwWi917NG/afC7/RZ/GQo3ABw+THr5XOGQ== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D55FB41140 for ; Sun, 4 Feb 2024 02:52:18 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rWRfl-0000I2-Pg; Sat, 03 Feb 2024 20:51:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rWRfj-0000Hb-SU for guix-patches@gnu.org; Sat, 03 Feb 2024 20:51:51 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rWRfj-0008RK-KT for guix-patches@gnu.org; Sat, 03 Feb 2024 20:51:51 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rWRfu-0005gM-9s; Sat, 03 Feb 2024 20:52:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#68577] [PATCH v3] gnu: Add mullvadbrowser. Resent-From: =?UTF-8?Q?Cl=C3=A9ment?= Lassieur Original-Sender: "Debbugs-submit" Resent-CC: nandre@riseup.net, jonathan.brielmaier@web.de, mhw@netris.org, guix-patches@gnu.org Resent-Date: Sun, 04 Feb 2024 01:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68577 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 68577@debbugs.gnu.org, =?UTF-8?Q?Cl=C3=A9ment?= Lassieur , Mark H Weaver , =?UTF-8?Q?Andr=C3=A9?= Batista , Jonathan Brielmaier , Ian Eure Cc: =?UTF-8?Q?Andr=C3=A9?= Batista , Jonathan Brielmaier , Mark H Weaver X-Debbugs-Original-Xcc: =?UTF-8?Q?Andr=C3=A9?= Batista , Jonathan Brielmaier , Mark H Weaver Received: via spool by 68577-submit@debbugs.gnu.org id=B68577.170701148621780 (code B ref 68577); Sun, 04 Feb 2024 01:52:02 +0000 Received: (at 68577) by debbugs.gnu.org; 4 Feb 2024 01:51:26 +0000 Received: from localhost ([127.0.0.1]:47338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rWRfJ-0005fD-BI for submit@debbugs.gnu.org; Sat, 03 Feb 2024 20:51:26 -0500 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:53081) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rWRfE-0005en-Tx for 68577@debbugs.gnu.org; Sat, 03 Feb 2024 20:51:23 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id B65B15C003F; Sat, 3 Feb 2024 20:51:02 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Sat, 03 Feb 2024 20:51:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lassieur.org; h= cc:content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1707011462; x=1707097862; bh=sUoGsS9fOHKzZwdVjna5HtEvQvsk2Uk3Or52+k2sAY8=; b= Fn4BhxZWOVQhnWeRcQwFvphGdiOakgR7efIBvwui2Cj8mdfsbP6RGMWve0Gv4P9v haM4127OVFL25rYGPJRmB/UyyvB+7fmqqzJ4wWSD83s0OTXsnDazyw6mFbi0NViw g3KeWcnqiDXfDbBucjIbF9VOQHERKzr4cVedDSGv+sAcBmj6lpK86O/5Ms3+hrV0 Ad7fItI+hJU/ie9JW3sJJ3B5uC/1BqA9B71k6JhFeah7r+U9dOBzbjGLyDd9EQ4P xgQeOk8e+cF2lHxp2vdRY4NLYDCIPHO8kyf5uVK1Sanl47Zrvvhb2ZyD3Lg4bG7Q CZxLwJGxiFyj71WnTRf2Lw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1707011462; x= 1707097862; bh=sUoGsS9fOHKzZwdVjna5HtEvQvsk2Uk3Or52+k2sAY8=; b=C 3zAixBqYA16uLVFR0pZ4Xy+L2wfz/71OckCDlfsaNJUMDnDJ+SkEfjhtgETUNH97 oNto0xPLzUwV+Moo2pDNFj+MLdsGiofVasGak3J47JQMH5wClZR5q/apDVELKV6E dUF2P8Ku3xsVJb+CPmVsGORdVCncwB1xgbjf4plNHXSTpCPAOXyOBcbu3yVLqFC9 okjhpU45I0MaD8SJsC7AzG17uZ43oIDWF9T7iXiIdVXHwDZMZaTtCSFZaNflMP7J AEXcQRaGkjosSxgK/3XQBA/fJfngV2Oae4/pKgkjPz382+zat/+a8Q71Eeuy/op1 jHQz1oO7D7yw87/o6qXdQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrfedujedggeduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepvehlrohm vghnthcunfgrshhsihgvuhhruceotghlvghmvghntheslhgrshhsihgvuhhrrdhorhhgqe enucggtffrrghtthgvrhhnpedtieeguedtudegjeegffeggeehleevffdvheeuleegteeh tddujeethfehfffgueenucffohhmrghinhepthhorhhprhhojhgvtghtrdhorhhgpdhmuh hllhhvrggurdhnvghtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghi lhhfrhhomheptghlvghmvghntheslhgrshhsihgvuhhrrdhorhhg X-ME-Proxy: Feedback-ID: i4c21472a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 3 Feb 2024 20:51:00 -0500 (EST) From: =?UTF-8?Q?Cl=C3=A9ment?= Lassieur Date: Sun, 4 Feb 2024 02:48:44 +0100 Message-ID: <242ec08074173df58abf4bd6fba9b2d743e52573.1707011291.git.clement@lassieur.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -0.26 X-Migadu-Queue-Id: D55FB41140 X-Spam-Score: -0.26 X-Migadu-Scanner: mx11.migadu.com X-TUID: z3sxlAUX/CPA * gnu/packages/tor-browsers.scm (%moz-build-date): Rename to %torbrowser-build-date. (make-torbrowser, torbrowser): Add a ‘build-date’ parameter and use it. (%mullvadbrowser-locales, %mullvadbrowser-build-date, %mullvadbrowser-version, %mullvadbrowser-firefox-version, translation-mullvad-browser, mullvadbrowser-assets, mullvadbrowser-base, mullvadbrowser): New variables. Change-Id: Ie6d48823b3794710f60f0ae201a0297925221f66 --- gnu/packages/tor-browsers.scm | 173 +++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 2 deletions(-) diff --git a/gnu/packages/tor-browsers.scm b/gnu/packages/tor-browsers.scm index fbae54922459..ec91bba3e4c1 100644 --- a/gnu/packages/tor-browsers.scm +++ b/gnu/packages/tor-browsers.scm @@ -148,7 +148,7 @@ (define %torbrowser-locales ;; We copy the official build id, which can be found there: ;; https://aus1.torproject.org/torbrowser/update_3/release/. -(define %moz-build-date "20240115174022") +(define %torbrowser-build-date "20240115174022") ;; To find the last version, look at https://www.torproject.org/download/. (define %torbrowser-version "13.0.9") @@ -160,6 +160,8 @@ (define %torbrowser-version "13.0.9") (define %torbrowser-firefox-version "115.7.0esr-13.0-1-build1") ;; See tor-browser-build/projects/translation/config. +;; If Tor Browser and Mullvad Browser updates are not synchronized, maybe this +;; will have to be duplicated. (define translation-base-browser (origin (method git-fetch) @@ -218,6 +220,7 @@ (define* (make-torbrowser #:key branding-directory assets locales + build-date base-browser-version) (package (name "torbrowser") @@ -538,7 +541,7 @@ (define* (make-torbrowser #:key (setenv "MOZ_CHROME_MULTILOCALE" (string-join (map car #$locales))) ;; Make build reproducible. - (setenv "MOZ_BUILD_DATE" #$%moz-build-date))) + (setenv "MOZ_BUILD_DATE" #$build-date))) (add-before 'configure 'mozconfig (lambda* (#:key configure-flags #:allow-other-keys) (with-output-to-file "mozconfig" @@ -837,4 +840,170 @@ (define-public torbrowser #:branding-directory "browser/branding/tb-release" #:assets torbrowser-assets #:locales %torbrowser-locales + #:build-date %torbrowser-build-date #:base-browser-version %torbrowser-version)) + + +;; See tor-browser-build/rbm.conf for the list. +;; See browser/locales/l10n-changesets.json for the changeset. +;; See update-mozilla-locales in gnuzilla.scm to automate updating changeset. +(define %mullvadbrowser-locales + (mozilla-locales + ;; sha256 changeset locale + ;;--------------------------------------------------------------------------- + ("14wnjv13alaj04pd8i8ysillbr3ic2jqa867rbj5ncz8h4hxxfxc" "4c7e24ef78bd" "ar") + ("0is7qbykv2pj0z9ll9r35vwjp0x29vmfr10yjl3s0amfaqzjqpqc" "0a0b774407cc" "da") + ("0yq7m4v7d7ayg90m66j73mflrnp709qw9n7skhpsl9h1wbhrd7q7" "633986260777" "de") + ("018qi9zn24kzfcidsj9lbqfg5n97r295yr8fs953nyfdbim9jsfv" "accf5e4506c0" "es-ES") + ("11prhmh2cp95dpv6z0k479mb11zbfm541bvigs3gnkh3nazjvc8q" "37aa71d77cb6" "fa") + ("1lv9l98q88ixb0ph970yzphahgzbl97x0w069bkxa54kblkv1ch1" "dc40a4fd5d0e" "fi") + ("0wx4k7mwhvpv5w0wa4y5pca2q3jac62jv804nxqnfwh1bvi90wv0" "415c1f0e84bd" "fr") + ("1n7l5idw9399n8ih1r1d6m8vzpzhwmnxmr9i7jvygkdc8d6adp1k" "07d5e1ff5f9b" "it") + ("1w6nw9cd92p1ndy82wwlq9xizyq3i8rq0nj7118gbxbx368mk2kj" "e6f9db9ce3e6" "ja") + ("116a8s0k2yvijy7qf0xpqm5w66gdzs32jhc06364sdar5v34lyhh" "805b85981696" "ko") + ("0kk3cjlpghbi7j3ndb2s0c7g838fzd2mpzg01bp0cra8lzd0n2ac" "4ab6f0d05aa6" "my") + ("1i3r2ici95mazw07m2mrf192fc6bfa3x6j3c2pcc1zg7z9srihgh" "561b0cd86ec1" "nb-NO") + ("1c0m8jhn52h1dif5bswrdwrlzppgga01y61wlii4aaaw15imd6yd" "2a55df0cc389" "nl") + ("1gssvg306b80drp7kvc35kvcxwldb5sga0bapaxhv362irq1nya8" "a64a7dab01c4" "pl") + ("1dzh13x85a7src8szbrq5pjmrbak4isln9xdwjk7a1yq4g9h7jgs" "33bf2a9f4c49" "pt-BR") + ("09x2jirf04kgc118a70z0xrb3msbm7vr4f41ig4xrwf2s5b816r3" "528b76d6aaca" "ru") + ("1cyimbd42aaq2amyhdbbx26jwsns77lsfl8g9a70bsjlpwzwzryg" "cc8e8962e59c" "sv-SE") + ("03mqrvcal7i172gf9239q9fnynfp5kg9b3r1w8gr9iz7rkr22gw5" "d361502c559e" "th") + ("12srgqkqwaidcwbz0y7zr59165f7aq5k5s3b81ql7ixdbwia91pm" "f6173aca4762" "tr") + ("1dl2dpif4wwrlpx7zkz5qf8kk4vhxyf63016xcfpbhxizqqwc1ki" "df2d025ed631" "zh-CN") + ("1c63ngff9lsc1x3pi6lnkyxw19gdc65yc67p7alzvrka3cv292ia" "11f8d68148a4" "zh-TW"))) + +;; We copy the official build id, which can be found there: +;; https://cdn.mullvad.net/browser/update_responses/update_1/release. +(define %mullvadbrowser-build-date "20240115174108") + +;; To find the last version, look at +;; https://mullvad.net/en/download/browser/linux. +(define %mullvadbrowser-version "13.0.9") + +;; To find the last Firefox version, browse +;; https://archive.torproject.org/tor-package-archive/mullvadbrowser/<%mullvadbrowser-version> +;; There should be only one archive that starts with +;; "src-firefox-mullvad-browser-". +(define %mullvadbrowser-firefox-version "115.7.0esr-13.0-1-build1") + +;; See tor-browser-build/projects/translation/config. +(define translation-mullvad-browser + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.torproject.org/tpo/translation.git") + (commit "57de1569da0e2c48fd999a13e555f6b522041993"))) + (file-name "translation-mullvad-browser") + (sha256 + (base32 + "1q3979ac92c5mib573hx9w06x3hrfw7r52wzmj9r75sz2hhsmrq3")))) + +(define mullvadbrowser-assets + ;; This is a prebuilt Mullvad Browser from which we take the assets we need. + (package + (name "mullvadbrowser-assets") + (version %mullvadbrowser-version) + (source + (origin + (method url-fetch) + (uri + (string-append + "https://archive.torproject.org/tor-package-archive/mullvadbrowser/" + version "/mullvad-browser-linux-x86_64-" version ".tar.xz")) + (sha256 + (base32 + "1f930j3c1xq88cqlqmnj0m00k0hd63cmgnxd788sp9hz56al22sc")))) + (arguments + (list + #:install-plan + ''(("Browser" "." #:include-regexp + ("^\\./fonts/" + "^\\./fontconfig/fonts.conf" + ;; Mullvad Browser Extension + "^\\./distribution/extensions/\\{d19a89b9-76c1-4a61-bcd4-49e8de916403\\}.xpi" + ))))) + (build-system copy-build-system) + (home-page "https://www.torproject.org") + (synopsis "Mullvad Browser assets") + (description "This package contains fonts and configuration files for +Mullvad Browser.") + (license license:silofl1.1))) + +(define mullvadbrowser-base + (make-torbrowser #:moz-app-name "mullvadbrowser" + #:moz-app-remotingname "Mullvad Browser" + #:branding-directory "browser/branding/mb-release" + #:assets mullvadbrowser-assets + #:locales %mullvadbrowser-locales + #:build-date %mullvadbrowser-build-date + #:base-browser-version %mullvadbrowser-version)) + +(define-public mullvadbrowser + (package + (inherit mullvadbrowser-base) + (name "mullvadbrowser") + (version %mullvadbrowser-version) + (source + (origin + (method url-fetch) + (uri + (string-append + "https://archive.torproject.org/tor-package-archive/mullvadbrowser/" + version "/src-firefox-mullvad-browser-" + %mullvadbrowser-firefox-version ".tar.xz")) + (sha256 + (base32 + "16chkc07pqr4ypmmgy4z2grvlpvbyr161gpzy72w35dgzzff46f9")))) + (arguments + (substitute-keyword-arguments (package-arguments mullvadbrowser-base) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'ublock-private-allowed + (lambda _ + (substitute* "toolkit/components/extensions/Extension.sys.mjs" + ;; The code that gives the correct permission only applies to + ;; distribution add-ons (see installDistributionAddon() in + ;; XPIProvider.jsm). + (("this.isNoScript") + "this.isNoScript || this.id === \"uBlock0@raymondhill.net\"")))) + ;; See tor-browser-build/projects/firefox/build. + (replace 'copy-torbrowser-locales + (lambda _ + (for-each + (lambda (lang) + (system + (format #f "cp -Lr ~a/~a .mozbuild/l10n-central/" + #$translation-mullvad-browser lang))) + (map car #$%mullvadbrowser-locales)))) + (add-before 'build 'fix-profiles + ;; Otherwise the profile would change every time the install + ;; location changes, that is: at every package update. These + ;; values are already the default values for Icecat and Tor + ;; Browser. + (lambda _ + (substitute* "browser/moz.configure" + (("\"MOZ_DEDICATED_PROFILES\", True") + "\"MOZ_DEDICATED_PROFILES\", False") + (("\"MOZ_BLOCK_PROFILE_DOWNGRADE\", True") + "\"MOZ_BLOCK_PROFILE_DOWNGRADE\", False")))) + (add-after 'deploy-fonts 'deploy-extension + (lambda* (#:key inputs #:allow-other-keys) + (let ((lib (in-vicinity #$output "lib/mullvadbrowser"))) + ;; Mullvad Browser Extension (FIXME: package it) + (copy-recursively + (in-vicinity #$mullvadbrowser-assets "distribution") + (in-vicinity lib "distribution"))))) + (delete 'deploy-tor-assets) + (delete 'autoconfig-tor))))) + (inputs + (modify-inputs (package-inputs torbrowser) + (delete go-gitlab-torproject-org-tpo-anti-censorship-pluggable-transports-lyrebird))) + (propagated-inputs + (modify-inputs (package-propagated-inputs torbrowser) + (append ublock-origin/icecat))) + (home-page "https://mullvad.net/en/browser") + (synopsis "Privacy-focused web browser") + (description "Mullvad Browser is a privacy-focused web browser developed +in collaboration between Mullvad VPN and the Tor Project. It’s produced to +minimize tracking and fingerprinting."))) base-commit: abeffc82379c4f9bd2e6226ea27453b22cb4e0c8 -- 2.41.0