Delivery-date: Thu, 05 Jun 2025 08:10:53 -0700 Received: from mail-oo1-f63.google.com ([209.85.161.63]) by mail.fairlystable.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1uNCF2-0000ta-AZ for bitcoindev@gnusha.org; Thu, 05 Jun 2025 08:10:53 -0700 Received: by mail-oo1-f63.google.com with SMTP id 006d021491bc7-60ed8bbe694sf973540eaf.0 for ; Thu, 05 Jun 2025 08:10:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1749136246; cv=pass; d=google.com; s=arc-20240605; b=K6WzcCf8KPjR10prvk9Rg+GFeGcYuFefzC6NeTeD/ruotkn+Fip3bJPKhZh/W/Xr9T 2uB38Qf0cOltCk6aAquRZBaIE3R/ZDAokZO34gu580+YRE2ocsl1Lu1MQgZtwJxsJDOC IedUsrEXMURO0gGTmI7F9fznamode6i8TQYelh1SOsOBhxaPJzQaOuRHOTg5NqBWMSUp 674AM90qeTEc2OGvGODPlAAcdtJx4f9sZoDBDTOWmue4D13eW9vX1g/Afckgdw75eTUU zCLDODtly8ed+ydS4LfUsUjccF1g3jlpA+A+28fH54ozsJ03eDRf5EWSQFrIJ4tWIqGc VA1Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:mime-version:feedback-id :references:in-reply-to:message-id:subject:cc:from:to:date :dkim-signature; bh=oqYFxeHXXo8flvSHbhzHnasrYgc3xqhZnwAb/OJKT0M=; fh=YAD/fgmp7NNbEze/YZpQQV+cIxWAR5TXuH9DZXGNljI=; b=NG3ruelmAbk5yeSPKM4GBKA8vdZkJRIuCpi1p9+9iMzOokyMFf1fGjFDOUMH6PuADq dg+LFsZzZaIruX/xXoe3eGHe8cuMuVbbJEmSS4HS8C8MWEvSVDNdP9qdlEUgxONxRiKd meBv1BgrfZrUIeocdBkIpOZKbdw4HueSdYoBa9JTftGXe/xtrYXT8Dtc1YTsTbvELz/h LefAeu00bEbeUy1jkGnSRWSiv6g+Kc5h/3/7Cs6uJ/TEi3eS2M+oii8Yp9LOGguet4rc r7UUb0qEuW43HExe8go3Gan72Q0GV9AvBXq6CcE02pXZXdLWH5VOB0opODZy49wlM1Ds DzlA==; darn=gnusha.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@proton.me header.s=protonmail header.b=NlPnYML6; spf=pass (google.com: domain of conduition@proton.me designates 185.70.43.16 as permitted sender) smtp.mailfrom=conduition@proton.me; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=proton.me DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1749136246; x=1749741046; darn=gnusha.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :feedback-id:references:in-reply-to:message-id:subject:cc:from:to :date:from:to:cc:subject:date:message-id:reply-to; bh=oqYFxeHXXo8flvSHbhzHnasrYgc3xqhZnwAb/OJKT0M=; b=Q5RuRc+0sukOcYKwoal39wtNQyx5snrO4w2sPRfGfzckjpiXyz1isDRSXRseIuUeMk JK//j6k8zPrZaCdl7REgSd0ApzNGWAVWijveDJX9l+27BsIFZH5K0ih+WGvMPLelGRzX dYXp505lBvaui7qp5UwpK3ACa9si6MPWKcwK+a6cb3Hsi3yGXQtUdxafTpO74VoLkbG3 bd88YvyiPh03+dozG/WseNWmJ4xazrSp4YlmSX89tAnhlt/PGU451FLMLjS366EOdFer CfM2hrS4fzkNSYmrYA9WtOfDTB8BgkALGDYAhHAHlwfYLcExHVvoAWBLbl8hpnp7PH8s qn5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749136246; x=1749741046; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :feedback-id:references:in-reply-to:message-id:subject:cc:from:to :date:x-beenthere:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=oqYFxeHXXo8flvSHbhzHnasrYgc3xqhZnwAb/OJKT0M=; b=qqs/REW301lX7/FPdwqnSKBziqrz8k4JvkTR2d8RT5rHkF18tcLRxUU+suVjg8DwrN C2pmQ1P68WDjTCWDekUJoqYco7UjkFIkBTLV2sBGDOyj3qAha7/z1qjCnRpZ1f1cUCjf YdINSS6IMpA8E38E5atI9jsLcTKv723tlP5qqM3JfKNWBu5qBxeTQpGUHej07aLJzrt3 U9GR6ITgVd3hX/LmNgbZQj0tvjfNuaE2aEHvtEVptcSqbv5ryU5HBqGmbMhpwRz9h3VT oHHo8T1gYetDBKLXbsWqVwt1RfLTS1+g9Nk/HRD/1mP54V1AeusbJrsfOGmOzonXaWQ/ HdKA== X-Forwarded-Encrypted: i=2; AJvYcCV6VJl5CbUFQA25NvnRmzoNN49rLyOpe4jJ/L30Gsk67Le8QgeoG0Wjj5TYkViFp5CQMlB2fTbEjYKF@gnusha.org X-Gm-Message-State: AOJu0YwRSTKLFbBt+Un0ErqeVWOEyRxI05VhoYAwCkc1KXCkZJ9PUBsf F3SzSApoIcj1gewbr+9FdxhjLkZvYcZJaRC35owM7B/EP9TtLxYQ2HaZ X-Google-Smtp-Source: AGHT+IFuBglNO2oAYJFELet6O8onK9OX9qLUFnsoPDAmPAistQx4eTuzXIMkpst4BSchYgYqc8JpSA== X-Received: by 2002:a4a:c68d:0:b0:608:3493:b807 with SMTP id 006d021491bc7-60f27f04f75mr1974329eaf.2.1749136246294; Thu, 05 Jun 2025 08:10:46 -0700 (PDT) X-BeenThere: bitcoindev@googlegroups.com; h=AZMbMZdbS018jaHjh4EUhKNCb/k87Iyf2G3YzSa1NzRl2LUpHg== Received: by 2002:a4a:e0c4:0:b0:60b:c628:4ae0 with SMTP id 006d021491bc7-60f2833a416ls357560eaf.0.-pod-prod-00-us; Thu, 05 Jun 2025 08:10:42 -0700 (PDT) X-Received: by 2002:a05:6808:2287:b0:3fe:aebe:dde7 with SMTP id 5614622812f47-408fabaa2bamr3296937b6e.2.1749136242822; Thu, 05 Jun 2025 08:10:42 -0700 (PDT) Received: by 2002:ab3:66d2:0:b0:2b1:9db7:3101 with SMTP id a1c4a302cd1d6-2b4d1c1dc73msc7a; Thu, 5 Jun 2025 08:01:33 -0700 (PDT) X-Received: by 2002:a05:651c:b0f:b0:32a:78f7:9c03 with SMTP id 38308e7fff4ca-32ac720454amr22973691fa.1.1749135689939; Thu, 05 Jun 2025 08:01:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1749135689; cv=none; d=google.com; s=arc-20240605; b=J6B2gFDMltYzziPRndA+IM9E/Qs2VBVe4tXPNppjzaftTYnMRHUyPX/VrBq1y8+vmr FRpu2OrHI6sh36IhRBSmFoDB5vZd1VlMKqgAhMLbSFwlzB/ZsKZxF+iPFHoI7DecIHmM a8tOQ/w97+DB1Xcga7l0V3sgDtf9Ut3tEPFp9UBSednHlE9F8nf7HxHA7+yaHs4fiv19 43hiRrwkjhePNHt8A4NfwyYjs8aYH3TfmjyJ5OBaylDJuokUitJvxU6UtjSpmdmRcFPk cU5w0IdYK6rUuWejpHg2eM2wSh11Bj47i7LBgFYPRyhUvzc3YXg2GUYnL67om7gVAHZd LFcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=mime-version:feedback-id:references:in-reply-to:message-id:subject :cc:from:to:date:dkim-signature; bh=5ClNP8CRdCa/y2T8caIoOmwF3m9uhljIcIPQ0eyGpFs=; fh=e79b22hAuSaC6/8oKXuBX7NFmH7iXgOLPA7D5tCVfno=; b=MJYJr2rRrDLZ9M/Qas1IBLmdz+h3dj3JjbleTD1T4MX8WNCIc7lC2eH/q3CNk2HGtb /CdtG7dRZ2AD1d+kQk5+wdelpVmaOozYf/mht0vlgiwAsWSOcaQ3OWKbyuIF4HLjEa2X XUR58IPocfhT6dK5D9LpfryKNxxiftFFFWtltHvf0hvUDymeV7xj67qkD6STVDYWOqfd QttUsDc/YohRy3zFRwhqYG9Rt9Ad1zGxzysMuGWJo4HzGayjyw5k2GCw1XFgUVcjddE3 0CQ/q7tzalstKrgNJ3+fHfUrFSx26Mwd4qWvmzCMh/znw0JiBQSDwKXQMMlCVFEWiD8a UCYQ==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@proton.me header.s=protonmail header.b=NlPnYML6; spf=pass (google.com: domain of conduition@proton.me designates 185.70.43.16 as permitted sender) smtp.mailfrom=conduition@proton.me; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=proton.me Received: from mail-4316.protonmail.ch (mail-4316.protonmail.ch. [185.70.43.16]) by gmr-mx.google.com with ESMTPS id 38308e7fff4ca-32a85a58c58si5006481fa.0.2025.06.05.08.01.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 08:01:28 -0700 (PDT) Received-SPF: pass (google.com: domain of conduition@proton.me designates 185.70.43.16 as permitted sender) client-ip=185.70.43.16; Date: Thu, 05 Jun 2025 15:01:23 +0000 To: Leo Wandersleb From: "'conduition' via Bitcoin Development Mailing List" Cc: Bitcoin Development Mailing List Subject: Re: [bitcoindev] Pre-emptive commit/reveal for quantum-safe migration (poison-pill) Message-ID: In-Reply-To: References: <2c3b7e1c-95dd-4773-a88f-f2cdb37acf4a@gmail.com> <33f67e84-5d1c-4c14-80b9-90a3fec3cb36@gmail.com> <5e393f57-ac87-40fd-93ef-e1006accdb55n@googlegroups.com> <5d9f6ac9-a623-4636-8a91-ee7c057bc08an@googlegroups.com> <44b5aa4c-a71b-49ed-beee-071140b16aacn@googlegroups.com> Feedback-ID: 72003692:user:proton X-Pm-Message-ID: d7acaee4d1b96f3b08862bca1583d87badc66280 MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha512; boundary="------5af7ff11c1bb66dbb0299a13576d1771d8c18aeb4ef4d5fc600f816269e7f575"; charset=utf-8 X-Original-Sender: conduition@proton.me X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@proton.me header.s=protonmail header.b=NlPnYML6; spf=pass (google.com: domain of conduition@proton.me designates 185.70.43.16 as permitted sender) smtp.mailfrom=conduition@proton.me; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=proton.me X-Original-From: conduition Reply-To: conduition Precedence: list Mailing-list: list bitcoindev@googlegroups.com; contact bitcoindev+owners@googlegroups.com List-ID: X-Google-Group-Id: 786775582512 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Score: -1.0 (-) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------5af7ff11c1bb66dbb0299a13576d1771d8c18aeb4ef4d5fc600f816269e7f575 Content-Type: multipart/mixed;boundary=---------------------de912584191c92e30f13bb827246d093 -----------------------de912584191c92e30f13bb827246d093 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Hi Leo, When a user reveals a transaction + commitment proof, are you assuming it will be included in a block? Or is the reveal TX somehow put "on ice" for those 144 blocks, and only then mined?=20 If the former, this implies your protocol would need to allow double-spending of UTXOs even after many confirmations, as Tim has noted. Otherwise having an older announcement wouldn't give any advantage. I don't see how you'd implement this without breaking many founding assumptions of Bitcoin, maybe introducing some new special "confirmed-but-pending" state specifically for the outputs of these reveal TXs. If the latter, and the TX isn't immediately mineable, then how exactly do nodes know when to consider it consensus-valid? Imagine you're a node and you receive a reveal transaction with a valid (old enough) commitment proof. The TX claims to have been created 144 blocks ago and thus should be mineable. But how do you verify that, if the TX wasn't included in a past block? regards, conduition On Thursday, June 5th, 2025 at 7:55 AM, Leo Wandersleb wrote: > Hi Boris, hi list, > I think the weak announcement is a bad idea once EC crypto is broken to t= he point where an attacker can break the key before the transaction gets mi= ned but the strong announcements should still hold as they have less urgenc= y. If the attacker sees the transaction in a strong announcement with a ful= l transaction, he cannot win even if he gets into a block first, as the str= ong announcement proves a prior commitment to that transaction and would wi= n even if it gets mined only some blocks later. >=20 > A scheme where the announcement does not contain the full transaction is = problematic as the transaction might then turn out to not be valid. Then no= des would wait for the "winning" wtxid blocking the UTXO forever. >=20 > So the scheme is: >=20 > After activation at block height X: >=20 > 1. **Vulnerable UTXOs cannot be spent directly** - they require a prior a= nnouncement > 2. **Commitment** to a wTXID that spends the vulnerable UTXO. Multiple wT= XIDs can be stored in a hash tree in an OP_RETURN > 3. **Reveal** full transaction with proof of prior commitment but not as = a normal transaction yet > 4. **Counter Reveal**: For 144 blocks, others can reveal older commitment= s. This protects exposed pubkeys! > 5. **After 144 blocks**: The UTXO can be spent according to the strongest= announcement (oldest commitment of valid transaction wins). >=20 > As (5) is just the normal transaction, the scheme is a soft fork and comp= atible with pre-recorded transactions where the keys were lost. It would at= least double the on-chain costs for these vulnerable UTXOs as they would h= ave to store the full transaction twice. We can make the announcements prun= able again though. >=20 > Best, >=20 > Leo > On Wednesday, 4 June 2025 at 20:40:32 UTC+2 Boris Nagaev wrote: >=20 > > Hi Leo, > >=20 > > I think it is possible to provide privacy for Satoshi and also reduce t= he size of a weak announcement (strong announcements can already be small: = just a txid or a Merkle root of many txids). > >=20 > > Importantly, we cannot include the whole signed transaction in the weak= announcement. Doing so would leak the EC public key immediately, allowing = an attacker to create their own valid weak announcement. We must avoid reve= aling the public key until the actual spending transaction is broadcast. > >=20 > > We need a scheme where the EC public key is not leaked in a weak announ= cement, but the legitimate owner can verify it, while no one else can. Also= , once the EC public key is revealed, anyone should be able to verify a pas= t weak announcement (to validate the transaction when it is broadcast). Thi= s reduces to the following requirement: we need a proof of knowledge of the= EC public key that can be verified if the public key is known and provides= no information otherwise. > >=20 > > I think this is called a zero-knowledge proof. One simple approach coul= d be to apply a tagged hash function to the concatenation of the EC public = key and the future wTXID, and include this in the weak announcement. The st= ructure would be: > >=20 > > - UTXO (previous TXID and output index) > > - future spending wTXID > > - proof :=3D tagged_hash(EC public key || wTXID) > >=20 > > The wTXID is included in the concatenation to bind the proof to a parti= cular future transaction. Otherwise, someone could copy a weak announcement= and substitute their own wTXID. > >=20 > > Satoshi could publish a strong announcement now and then monitor all we= ak announcements involving his UTXOs. If someone publishes a weak announcem= ent for one of his coins, he could verify the "proof" field. If it is valid= , it would mean someone has cracked his key with a quantum computer, and he= would need to use his strong announcement immediately to reclaim the funds= before the attacker does. > >=20 > > Best, > > Boris > >=20 > > On Wednesday, June 4, 2025 at 2:40:53=E2=80=AFPM UTC-3 Leo Wandersleb w= rote: > >=20 > > > Hi Boris, > > > the announcements, weak and strong would have to not be transactions = yet to be compatible with legacy nodes and thus keep it a soft-fork. They c= ould be OP_RETURN data. Only after the 144 blocks, the upgraded full nodes = would allow the inclusion of the actual transaction. This would mean the tr= ansaction would be both in full in the OP_RETURN strong announcement and wi= thout the witness part later, so it would be a bit expensive this way but m= aybe we can do better? > > >=20 > > > A node that gets updated would have to re-index all the blockchain to= find announcements if we don't introduce a time frame for actually using t= he announcements. We could also say that any announcement has to be used wi= thin another 1000 blocks. Then the upgrading node would have to re-index th= e last 1000 blocks. > > >=20 > > > The legitimate owner of a UTXO might wait for an attack for privacy r= easons. My proposal would allow Satoshi himself to make all his UTXOs quant= um safe without any of us learning about him being active. He could add one= 64B OP_RETURN in 2027 and when QC becomes an issue, we would learn about h= im having been active in 2027 in 2040 when actually somebody tried to attac= k and not in 2027 when people started to panic because of imminent quantum = breakthroughs. > > > Hmm ... a problem is the weak announcement doesn't require keys, so a= nybody could provoke Satoshi to come forward. Maybe we have to add key owne= rship as a requirement for the "weak" announcement, too. So it should also = contain a serialized transaction. > > >=20 > > > Best, > > >=20 > > > Leo > > >=20 > > > On Wednesday, 4 June 2025 at 04:15:59 UTC+2 Nagaev Boris wrote: > > >=20 > > > > Hi Leo, > > > >=20 > > > > Thanks for the clarifications, much appreciated! > > > > I have a couple of questions: > > > >=20 > > > > 1. How is a weak announcement stored in the blockchain and in the U= TXO set? > > > > I assume it must be a transaction, correct? And it should somehow m= ark > > > > the UTXO as planned to be spent for 144 blocks? > > > > How would older (non-upgraded) nodes interpret a transaction > > > > containing a weak announcement? Would they just skip over it withou= t > > > > any special processing? > > > > If so, is there a problem for nodes that upgrade after the fork: wo= uld > > > > they have to reprocess all blocks since the fork to find and index = all > > > > missed weak announcements? > > > >=20 > > > > 2. In the case of reclaiming a UTXO after a weak announcement by an > > > > attacker: why would the legitimate owner wait for a weak announceme= nt > > > > at all? > > > > If the EC public key was already leaked, it seems they should publi= sh > > > > a strong announcement themselves rather than wait. If the EC public > > > > key wasn't leaked, there's nothing to worry about even if someone > > > > publishes a weak announcement: they are most likely bluffing, since > > > > they wouldn't have the actual public key. > > > >=20 > > > > Best, > > > > Boris > > > >=20 > > > > On Tue, Jun 3, 2025 at 3:29=E2=80=AFPM Leo Wandersleb wrote: > > > > > > > > > > Hi conduition, > > > > > > > > > > Thanks for your careful analysis - excellent catches. > > > > > > > > > > You're absolutely right about the txid vulnerability. The commitm= ent must be to the complete transaction including witness data (wTXID or eq= uivalent) to prevent an attacker from pre-committing to unsigned transactio= ns. This is essential - otherwise an attacker could indeed enumerate the UT= XO set and create commitments without knowing the private keys. > > > > > > > > > > Regarding updates: You're correct that frequent updates would be = needed as wallets receive new UTXOs. However, I don't see this as a major i= ssue - users could batch their commitments periodically (say, monthly) rath= er than after every transaction. The scheme is particularly important for e= xisting UTXOs that already have exposed pubkeys (old P2PK, reused addresses= , etc.). For new UTXOs, wallets should ideally migrate to quantum-safe addr= esses once available. OpenTimestamps aggregation would indeed help with sca= ling and provide plausible deniability about the number of UTXOs being prot= ected. > > > > > > > > > > The time delay serves a different purpose than you might expect. = It's not about preventing commitment forgery after pubkey exposure, but rat= her about allowing priority based on commitment age when multiple parties c= laim the same UTXO: > > > > > > > > > > 1. Weak announcement starts the 144-block window > > > > > 2. During this window, anyone with a strong commitment can reveal= it > > > > > 3. The oldest valid commitment wins > > > > > > > > > > This creates the "poison pill" effect: an attacker might crack a = key and try to spend a UTXO, but if the original owner has an older commitm= ent, they can reclaim it during the window. The uncertainty about which UTX= Os have poison pills makes attacking large "lost" UTXOs risky - hence less = disruptive to the network. > > > > > > > > > > The delay essentially allows a "commitment priority contest" wher= e age determines the winner, protecting users who prepared early while stil= l allowing these users to not move their funds. > > > > > > > > > > Best, > > > > > > > > > > Leo > > > > > > > > > > -- > > > > > You received this message because you are subscribed to the Googl= e Groups "Bitcoin Development Mailing List" group. > > > > > To unsubscribe from this group and stop receiving emails from it,= send an email to bitcoindev+...@googlegroups.com. > > > > > To view this discussion visit https://groups.google.com/d/msgid/b= itcoindev/5e393f57-ac87-40fd-93ef-e1006accdb55n%40googlegroups.com. > > > >=20 > > > >=20 > > > >=20 > > > > -- > > > > Best regards, > > > > Boris Nagaev >=20 > -- > You received this message because you are subscribed to the Google Groups= "Bitcoin Development Mailing List" group. > To unsubscribe from this group and stop receiving emails from it, send an= email to bitcoindev+unsubscribe@googlegroups.com. > To view this discussion visit https://groups.google.com/d/msgid/bitcoinde= v/ea71bbd5-1325-445b-977f-a52b8017eab4n%40googlegroups.com. --=20 You received this message because you are subscribed to the Google Groups "= Bitcoin Development Mailing List" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to bitcoindev+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/= dupr0g-yupBxLl70WyuEcfAIt1DNXZDY6Z_RuhZsKwAQro1aONB8IIWcsAjytBQjsDmlXsoDjBN= I5KEaMqfzqIWLvrXY60gLKxy4n9wKzQg%3D%40proton.me. -----------------------de912584191c92e30f13bb827246d093 Content-Type: application/pgp-keys; filename="publickey - conduition@proton.me - 0x474891AD.asc"; name="publickey - conduition@proton.me - 0x474891AD.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - conduition@proton.me - 0x474891AD.asc"; name="publickey - conduition@proton.me - 0x474891AD.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4ak1FWkRub0tSWUpLd1lCQkFI YVJ3OEJBUWRBcnBZYWFjZDgwcXdocmNaQW9VbW9NSHNWS21iZWlPZUEKcFhXbk1ybFdPZkxOSzJO dmJtUjFhWFJwYjI1QWNISnZkRzl1TG0xbElEeGpiMjVrZFdsMGFXOXVRSEJ5CmIzUnZiaTV0WlQ3 Q2pBUVFGZ29BUGdXQ1pEbm9LUVFMQ1FjSUNaQjRLV3p0aFBhenhRTVZDQW9FRmdBQwpBUUlaQVFL YkF3SWVBUlloQkVkSWthMENNdHJMZGcxM2EzZ3BiTzJFOXJQRkFBQTZhQUVBM1RmNHdqSVoKYnox K0diS0h4K09WQytNUXlVdi84RStoWUpjTE5QZnA0NEFBLzNiak5OTXN4WHdJTGZEM0xManNVVWFo CitBV2JyblVjVUFqQ2R1d3hUT01LempnRVpEbm9LUklLS3dZQkJBR1hWUUVGQVFFSFFDSXYxZW5J MU5MbAo3Zm55RzlVWk1wQ3ZsdG5vc0JrTmhQUVZxT3BXL3RKSkF3RUlCOEo0QkJnV0NBQXFCWUpr T2VncENaQjQKS1d6dGhQYXp4UUtiREJZaEJFZElrYTBDTXRyTGRnMTNhM2dwYk8yRTlyUEZBQUFR TFFEL2NCR2kwUDdwCkZTTkl2N1B6OVpkeUNVQjhzTy90dWZkV3NjQkNZK2ZMYTV3QkFNK0hTL3Jp S014RGt0TkhLakRGc2EvUgpEVDFxUGNBYXZCaXc2dDZ4Ti9jRgo9Y3d5eAotLS0tLUVORCBQR1Ag UFVCTElDIEtFWSBCTE9DSy0tLS0tCg== -----------------------de912584191c92e30f13bb827246d093-- --------5af7ff11c1bb66dbb0299a13576d1771d8c18aeb4ef4d5fc600f816269e7f575 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wrsEARYKAG0FgmhBsTEJkHgpbO2E9rPFRRQAAAAAABwAIHNhbHRAbm90YXRp b25zLm9wZW5wZ3Bqcy5vcmckpKSkwRYbT+95axteICChQc0m0HSkOTf+XfCs stXbdRYhBEdIka0CMtrLdg13a3gpbO2E9rPFAADQ2AD/QLv2kQbOZUQOiexe BHl1OxE2vkTnvlWDVV9WSOuW6ncA/18nqHARweGNhs76fAJpX2X/5+qHuqNQ yzQtTfOokdQN =+mZM -----END PGP SIGNATURE----- --------5af7ff11c1bb66dbb0299a13576d1771d8c18aeb4ef4d5fc600f816269e7f575--