From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 30D3F4B182
	for <ffmpegdev@gitmailbox.com>; Thu, 24 Apr 2025 14:47:31 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1020868B672;
	Thu, 24 Apr 2025 17:47:27 +0300 (EEST)
Received: from nef.ens.fr (nef2.ens.fr [129.199.96.40])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 987A46882FB
 for <ffmpeg-devel@ffmpeg.org>; Thu, 24 Apr 2025 17:47:20 +0300 (EEST)
X-ENS-nef-client: 129.199.129.80 ( name = phare.normalesup.org )
Received: from phare.normalesup.org (phare.normalesup.org [129.199.129.80])
 by nef.ens.fr (8.14.4/1.01.28121999) with ESMTP id 53OElJ2N001537
 for <ffmpeg-devel@ffmpeg.org>; Thu, 24 Apr 2025 16:47:20 +0200
Received: by phare.normalesup.org (Postfix, from userid 1001)
 id D30822EFE7; Thu, 24 Apr 2025 16:47:19 +0200 (CEST)
Date: Thu, 24 Apr 2025 16:47:19 +0200
From: Nicolas George <george@nsup.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Message-ID: <aApO93t0mv_talsa@phare.normalesup.org>
References: <DM8P223MB036504CFC0521633C2ADCCE3BABB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <DM8P223MB036504CFC0521633C2ADCCE3BABB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3
 (nef.ens.fr [129.199.96.32]); Thu, 24 Apr 2025 16:47:20 +0200 (CEST)
Subject: [FFmpeg-devel] On errors,
 asserts and crashing (was: Shaping the AVTextFormat API Surface)
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/aApO93t0mv_talsa@phare.normalesup.org/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

c29mdHdvcmt6IC4gKEhFMTIwMjUtMDQtMjIpOgo+IEF0IHRoZSBpbXBsZW1lbnRhdGlvbiBsZXZl
bCwgSSBzZW5zZWQgdGhhdCAieW91IiAoIkZGbXBlZyIpCj4gYXJlIGZvbGxvd2luZyBzb21lIHBy
aW5jaXBsZXMgd2hpY2ggYXJlIHNvbWV3aGF0IGNvbnRyYWRpY3RpdmUgdG8gCj4gdGhvc2UgdGhh
dCBJJ20gdXN1YWxseSBhZGhlcmluZyB0byAoZS5nLiAicGFyYW1ldGVyIHZhbGlkYXRpb24KPiBi
ZWluZyBhIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsIHNpdGUsIGNyYXNoaW5nIG90aGVyd2lz
ZSAKPiBiZWluZyBhY2NlcHRhYmxlIikuIE5vbmV0aGVsZXNzLCBJJ20gdGhlIG9uZSB3aG8gaGFz
IHRvIGFkYXB0LAo+IGFuZCBJJ20gbm90IGdvaW5nIHRvIHF1ZXN0aW9uIHRoYXQuCgpJIGFtIGZl
ZWxpbmcgZGlkYWN0aWMsIHNvIEkgd2lsbCB3cml0ZSB3aGF0IEkgaGF2ZSB0byBzYXkgb24gdGhl
IHRvcGljCmluIGZ1bGwgZGV0YWlscywgc28gdGhhdCBpdCBjYW4gYWxzbyBzZXJ2ZSBhcyBmdXR1
cmUgcmVmZXJlbmNlLgoKQ3Jhc2hpbmcgaW1tZWRpYXRlbHkgd2hlbiBzb21lIHVuZXhwZWN0ZWQg
Y29uZGl0aW9uIGhhcHBlbnMgaXMgbm90IGEKcXVpcmsgb2YgYSBmZXcgRkZtcGVnIGRldmVsb3Bl
cnMsIGl0IGlzIHZlcnkgb2Z0ZW4gdGhlIG9ubHkgd2F5IHRvIGRvCnRoaW5ncyBhbmQgYWxzbyBv
ZnRlbiBiZXR0ZXIgdGhhbiBhbnkgYXZhaWxhYmxlIGFsdGVybmF0aXZlLiBLbm93aW5nCndoYXQg
dG8gZG8gd2hlbiBpdCBpcyBvbmx5IGFuIG9wdGlvbiBpcyBub3QgYWx3YXlzIG9idmlvdXMsIGJ1
dCB0aGlzIGlzCkZGbXBlZywgbm90IHNvbWUgbWFuYWdlbWVudCBzb2Z0d2FyZSBwcm9qZWN0IGRl
dmVsb3BlZCBieSBlbmdpbmVlcnMKZnJlc2ggZnJvbSBhbiBhdmVyYWdlIHNjaG9vbC4KCkNvbnNp
ZGVyIHRoZSBzaW1wbGVzdCBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIHRoYXQgY2FuIGZhaWwsIGEg
ZGl2aXNpb246CgoJYSA9IGIgLyBjOwoKV2hhdCBoYXBwZW5zIGlmIGMgaXMgMD8KCkl0IGRlcGVu
ZHM6IG9uIHRoZSBsYW5ndWFnZSwgdGhlIENQVSwgdGhlIGJ1aWxkIG9wdGlvbnMsIHBvc3NpYmx5
IHRoZQpwaGFzZXMgb2YgdGhlIE1vb24uIEJ1dCBtb3N0bHksIHdoYXQgaGFwcGVucyBsaXZlcyBi
ZXR3ZWVuIHR3byBleHRyZW1lczoKCi0gaXQgY3Jhc2hlcyBpbW1lZGlhdGVseSwgc29tZXRpbWVz
IGV2ZW4gd2l0aCBhIGhhcmR3YXJlIGV4Y2VwdGlvbgogIGdlbmVyYXRlZCBieSB0aGUgQ1BVOwoK
LSBpdCByZXR1cm5zIHNvbWUga2luZCBvZiBjaGVlc3kgbm90LWEtbnVtYmVyIHZhbHVlIHRoYXQg
d2lsbAogIGNvbnRhbWluYXRlIGFsbCBjb21wdXRhdGlvbnMgZG9uZSB3aXRoIGEsIGxlYWRpbmcg
dG8gc2lsZW50bHkKICBjb3JydXB0ZWQgb3V0cHV0LgoKSW50ZXJtZWRpYXRlIGNhc2VzIGNhbiBi
ZTogcmV0dXJuIGEgbm90LWEtbnVtYmVyIGJ1dCBzb21ldGhpbmcgbGF0ZXIKdGVzdHMgaXQgYW5k
IGNyYXNoZXM7IG9yOiByZXR1cm4gbm90IGEgbnVtYmVyIGFuZCBiZSBsYXRlciBjb25kaXRpb25h
bGx5CmRpc2NhcmRlZCB0byBwcm9kdWNlIGNvcnJ1cHQgb3V0cHV0IG9ubHkgb25jZSBpbiBhIHdo
aWxlLiBGb3IgdGhlIHNha2UKb2Ygc2ltcGxpY2l0eSwgbGV0IHVzIGZvY3VzIG9uIHRoZSBleHRy
ZW1lIGNhc2VzLgoKVGhlcmUgYXJlIHR3byB0aGluZ3MgdG8gc2F5IGhlcmU6CgotIGJvdGggYXJl
IHZlcnkgYmFkOwoKLSBzaWxlbnRseSBjb3JydXB0aW5nIHRoZSBvdXRwdXQgaXMgdGhlIHdvcnN0
LgoKKFRoZXJlIGFyZSBsYW5ndWFnZXMgd2hlcmUgZGl2aXNpb24gYnkgemVybyBoYXMgYSBwcmVj
aXNlIGFuZAptYXRoZW1hdGljYWxseSBjb25zaXN0ZW50IHNlbWFudGljIHRoYXQgYSB2ZXJ5IGNh
cmVmdWwgcHJvZ3JhbW1lciBjb3VsZAptYWtlIHVzZSBvZi4gVGhhdCBkb2VzIG5vdCBpbnZhbGlk
YXRlIG15IHBvaW50LikKCkJvdGggYXJlIGJhZDogdGhhdCBtZWFucyB0aGF0IHdoZW5ldmVyIHdl
IHdyaXRlIGEgZGl2aXNpb24sIHdlIG11c3QgYmUKc3VyZSB0aGF0IHRoZSBkaXZpc29yIGlzIG5v
dCB6ZXJvLiBTb21ldGltZXMsIGl0IGlzIHZlcnkgZWFzeToKCgl1bnNpZ25lZCBuID0gMDsKCWRv
IHsgbisrOyB9IHdoaWxlICgqKHArKykpOwoJYSA9IGIgLyBuOwoKTG9vcHMgb2YgdGhlIGRv4oCm
d2hpbGUga2luZCBhcmUgYWx3YXlzIGV4ZWN1dGVkIGF0IGxlYXN0IG9uY2UsIHRoZXJlZm9yZQp3
ZSBrbm93IHRoYXQgbiDiiaAgYXQgdGhlIGVuZC4gKERpZCB5b3Ugbm90aWNlIHRoZSBmbGF3IGlu
IHRoYXQgcmVhc29uaW5nPwpJIHdpbGwgY29tZSBiYWNrIHRvIGl0IGxhdGVyLikKClNvbWV0aW1l
cywgaXQgaXMganVzdCBhIG1hdHRlciBvZiB0ZXN0aW5nOgoKCWlmIChuYl9ub3RlcyA9PSAwKQoJ
ICAgIGRpZSgiV2h5IGFyZSB5b3UgYXNraW5nIG1lIHRvIGNvbXB1dGUgYW4gYXZlcmFnZSB3aGVu
IHlvdQoJICAgICAgICAgaGF2ZSBub3QgeWV0IGVudGVyZWQgYW55IG5vdGUsIHlvdSBpZGlvdD8i
KTsKCkFuZCBzb21ldGltZXMgaXQgcmVsaWVzIG9uIGEgMTAtcGFnZXMgbWF0aGVtYXRpY2FsIHBy
b29mIHRoYXQgdGhlCmFsZ29yaXRobSB3ZSBhcmUgaW1wbGVtZW50aW5nIGlzIGNvcnJlY3QuCgpC
dXQgaGFyZCBvciBlYXN5LCBpdCBpcyBhbHdheXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBw
cm9ncmFtbWVyIHRvCmtub3cgdGhhdCB0aGUgZGl2aXNvciBpcyBub3QgemVybyBiZWZvcmUgY29k
aW5nIGEgZGl2aXNpb24uCgpUaGlzIGlzIG5vdCB1bmlxdWUgdG8gZGl2aXNpb25zOgoKV2UgbXVz
dCBrbm93IGEgcG9pbnRlciBwb2ludHMgdG8gYSB2YWxpZCBvYmplY3QgYmVmb3JlIGRlcmVmZXJl
bmNpbmcgaXQuCgpXZSBtdXN0IGtub3cgYSBwb2ludGVyIHBvaW50cyB0byB3cml0YWJsZSBtZW1v
cnkgYmVmb3JlIHdyaXRpbmcgdG8gaXQuCgpXZSBtdXN0IGtub3cgYW4gaW5kZXggaXMgd2l0aGlu
IHRoZSBib3VuZGFyaWVzIG9mIGFuIGFycmF5IGJlZm9yZQphY2Nlc3NpbmcgaXQuCgpBbmQgdGhp
cyBpcyBub3QgbGltaXRlZCB0byBDIGFuZCBvdGhlciBwcm9ncmFtcyBGRm1wZWcgaXMgZm9uZCBv
Zjogd3JpdGUKaW50byBhIGNlbGwgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGFycmF5IGluIEMsIGl0
IHdpbGwgbGV0IHlvdSBtb2RpZnkKc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgYW5kIHRoYXQgbWln
aHQgbGV0IHRoZSBzcG9va3Mgb3IgY3J5cHRsb2NrZXJzCmluOyBidXQgZG8gaXQgaW4gSmF2YSBv
ciBPQ2FtbCwgaXQgd2lsbCB0cmlnZ2VyIGFuIGV4Y2VwdGlvbiB0aGF0IHdlCnByb2JhYmx5IG5l
Z2xlY3RlZCB0byBjYXRjaCwgYmVjYXVzZSBpZiB3ZSB0aG91Z2h0IG9mIGNhdGNoaW5nIGl0IHdl
CndvdWxkIHByb2JhYmx5IGhhdmUgd3JpdHRlbiBpdCBtb3JlIGVsZWdhbnRseS4KClRoZSBjb25j
bHVzaW9uIG9mIHRoaXMgc2VjdGlvbiBpcyB0aGlzOgoKQW55IHByb2dyYW1tZXIgd29ydGggdGhl
aXIgc2FsdCBtdXN0IGtub3cgYSBsb3Qgb2YgaW52YXJpYW50cyBhYm91dCBlYWNoCmxpbmUgb2Yg
dGhlaXIgY29kZSwgaW52YXJpYW50cyB0aGF0IGFyZSBub3Qgd3JpdHRlbiBpbnRvIHRoZSBjb2Rl
IGJ1dAp0aGF0IHRoZXkgd291bGQgYmUgYWJsZSB0byBleHByZXNzIGFuZCBwcm92ZSBpZiBhc2tl
ZCB0by4g4oCcQXQgdGhpcwpwb2ludCwgdGhpcyBudW1iZXIgaXMgbm90IHplcm/igJ07IOKAnGF0
IHRoaXMgcG9pbnQsIHRoaXMgcG9pbnRlciBjb21lcyBmcm9tCm1hbGxvYygpIG9yIHJlYWxsb2Mo
KeKAnSwg4oCcYXQgdGhpcyBwb2ludCB0aGVyZSBhcmUgbm8gb3RoZXIgcmVmZXJlbmNlcyB0bwp0
aGlzIG9iamVjdOKAnSwg4oCcYXQgdGhpcyBwb2ludCB0aGlzIGJsb2NrIG9mIG1lbW9yeSBoYXMg
YSAwIGJlZm9yZSB0aGUKZW5k4oCdIGFuZCBzbyBvbi4KCkZhaWx1cmUgdG8gYWNjb3VudCBmb3Ig
dGhlIGludmFyaWFudHMgcmVxdWlyZWQgYnkgdGhlIGNvbnN0cnVjdHMgdXNlZCBpbgp0aGUgcHJv
Z3JhbSB3aWxsIHJlc3VsdCBpbiB0aGUgcHJvZ3JhbSBtaXNiZWhhdmluZyBpbiBtb3JlIG9yIGxl
c3MKaGFybWZ1bCB3YXlzLgoKCk5vdyBhYm91dCBmdW5jdGlvbiBjYWxscyBhbmQgQVBJLgoKQXMg
SSBzYWlkLCBjb25zdHJ1Y3RzIGluIHRoZSBwcm9ncmFtIGhhdmUgaW52YXJpYW50IHJlcXVpcmVt
ZW50czogaWYgd2UKZGl2aWRlLCBpdCBtdXN0IG5vdCBiZSBieSB6ZXJvLiBUaGVzZSByZXF1aXJl
bWVudHMgcHJvcGFnYXRlIGJhY2t3YXJkcwphbG9uZyB0aGUgZmxvdyBvZiB0aGUgcHJvZ3JhbTog
aWYgbCBtdXN0IG5vdCBiZSB6ZXJvLCB0aGVuIHRoZSBzdHJpbmcKaXQgaXMgdGhlIGxlbmd0aCBv
ZiBtdXN0IG5vdCBiZSBlbXB0eSwgdGhlcmVmb3JlIHRoZSBsaXN0IGZyb20gd2hpY2ggaXQKaXMg
YnVpbHQgbXVzdCBub3QgaXRzZWxmIGJlIGVtcHR5LCBhbmQgc28gb24uCgpBIHByb2dyYW0gYmVo
YXZlcyBjb3JyZWN0bHkgaWYgYXQgYWxsIHBsYWNlcyBpbiB0aGUgY29kZSBmbG93LCB0aGUKaW52
YXJpYW50cyBndWFyYW50ZWVkIGJ5IHRoZSBlYXJsaWVyIHBhcnRzIGFyZSBhdCBsZWFzdCBhcyBz
dHJpY3QgYXMgdGhlCmludmFyaWFudCByZXF1aXJlbWVudHMgaW1wb3NlIGJ5IHRoZSBsYXRlciBw
YXJ0cy4KCkluIGEgY29tcGxldGUgcHJvZ3JhbSwgZnVuY3Rpb25zIGFyZSBqdXN0IHJvdWRhYm91
dHMgaW4gdGhlIHByb2dyYW0KZmxvdy4gQXMgc3VjaCwgbGlrZSBhbnkgcGxhY2UgaW4gdGhlIHBy
b2dyYW0gdGhlcmUgYXJlIGludmFyaWFudApyZXF1aXJlbWVudHMuIEJ1dCBpZiB3ZSB0aGluayBv
ZiBmdW5jdGlvbnMgYXMgc2VwYXJhdGluZyBkaWZmZXJlbnQgcGFydHMKb2YgYSBwcm9ncmFtIHRo
YXQgYXJlIHVuZGVyIHRoZSByZXNwb25zaWJpbGl0eSBvZiBkaWZmZXJlbnQgcGVyc29uCihvciB0
aGUgc2FtZSBwZXJzb24gYXQgZGlmZmVyZW50IHRpbWVzKSwgdGhlc2VzIGludmFyaWFudHMgcmVx
dWlyZW1lbnRzCm11c3QgYmUgZG9jdW1lbnRlZC4KClNvbWV0aW1lcywgaXQgaXMgdmVyeSBzdWJ0
bGU6IOKAnFRoZSBzdHJsZW4gZnVuY3Rpb24gY29tcHV0ZXMgdGhlIGxlbmd0aApvZiB0aGUgc3Ry
aW5nIHBvaW50ZWQgdG8gYnkgc+KAnTogd2hlcmUgZG9lcyBpdCBzYXkgcyBtdXN0IG5vdCBiZSBh
IE5VTEwKcG9pbnRlcj8gTm90IGV4cGxpY2l0bHksIGJ1dCBpdCBpcyBpbXBsaWVkIGJ5IOKAnHN0
cmluZyBwb2ludGVkIHRv4oCdLApiZWNhdXNlIE5VTEwgZG9lcyBub3QgcG9pbnQgdG8gYW55dGhp
bmcsIGxldCBhbG9uZSBhIHN0cmluZy4KCldoYXQgaGFwcGVucyBpZiB3ZSBjYWxsIHN0cmxlbigp
IG9uIGEgTlVMTCBwb2ludGVyPyBUaGF0IGRlcGVuZHMuIE9uClVuaXggc3lzdGVtcywgaXQgdXN1
YWxseSByZXN1bHRzIGluIGEgU0lHU0VHVjsgc29tZXRoaW5nIHNpbWlsYXIgd2lsbApoYXBwZW4g
d2l0aCBvdGhlciBtZW1vcnktcHJvdGVjdGVkIE9TZXMuIEJ1dCBvbiBhIG1pY3JvY29udHJvbGxl
ciwgaXQKd2lsbCBqdXN0IGNvbXB1dGUgaG93IG1hbnkgbm9uLTAgb2N0ZXRzIHRoZXJlIGFyZSBh
dCB0aGlzIHBsYWNlIGluIHRoZQptZW1vcnkuIFdoYXRldmVyIHRoZSBlZmZlY3QsIGl0IG1pc2Jl
aGF2ZXMuCgoKV2hhdCBhYm91dCBtaXN0YWtlcz8KCkV2ZW4gZXhjZWxsZW50IHByb2dyYW1tZXJz
LCBwcm9ncmFtbWVycyB3b3J0aCByb3NlIEhpbWFsYXlhbiBzYWx0LCBjYW4KbWFrZSBtaXN0YWtl
cy4gRm9yIGV4YW1wbGUsIGluIHRoZSBjb2RlIEkgZ2F2ZSBhYm92ZSBhcyBhbiBleGFtcGxlIHdo
ZXJlCml0IGlzIGVhc3kgdG8gYmUgc3VyZSB0aGF0IG4gaXMgbm90IHplcm8sIHdoYXQgaGFwcGVu
cyBvbiB4ODZfNjQgaWYgcApwb2ludHMgdG8gZm91ciBnaWdhLW9jdGV0cyBvZiBub24temVybyB2
YWx1ZXMgYW5kIHRoZW4gYSAwPyBPb3BzLgoKSW4gdGhlIGlkZWFsIHdvcmxkLCB0aGF0IHdvdWxk
IGJlIGltcG9zc2libGUuIEluIHRoZSBpZGVhbCB3b3JsZCwgdGhlCmNvbXBpbGVyIHdvdWxkIHJl
ZnVzZSB0byBjb21waWxlIGEgcHJvZ3JhbSB1bmxlc3MgaXQgY2FuIHByb3ZlIHRoZQpyZXF1aXJl
ZCBpbnZhcmlhbnRzIGFyZSBtZXQsIHdpdGggdGhlIGhlbHAgb2YgYW5ub3RhdGlvbnMgaGVscGZ1
bGx5CnByb3ZpZGVkIGJ5IHRoZSBwcm9ncmFtbWVyLgoKVGhpcyBpcyB3aGF0IFJ1c3QgdHJpZWQg
dG8gZG8gYW5kIGxhbWVudGFibHkgZmFpbGVkIGF0LgoKKFRoYXQgd291bGQgbGVhdmUgb3V0IHBy
b2dyYW1zIHVzZWQgdG8gZXhwbG9yZSB1bnByb3ZhYmxlIG1hdGhlbWF0aWNhbApwcm9wZXJ0aWVz
LiBJIGFtIHBlcmZlY3RseSBmaW5lIGxldHRpbmcgdGhlbSB1c2Ugc29tZSBraW5kIG9mCuKAnGln
bm9yZS1pbnZhcmlhbnTigJ0gcHJhZ21hLCBhcyBsb25nIGFzIGl0IGlzIG5vdCB1c2VkIGluIGEg
cHJvZ3JhbSB0aGF0Cm1pZ2h0IGNyYXNoIGEgc3BhY2UgcHJvYmUsIGV4cGxvZGUgYSBudWNsZWFy
IHBsYW50IG9yLCB3b3JzZSwgbWFrZSBhCmdhbWUgdW53aW5uYWJsZS4pCgpJbiB0aGUgcmVhbCB3
b3JsZCwgd2UgYXJlIG5vdCB0aGVyZSB5ZXQsIGJ5IGZhci4gWWV0IHdlIG11c3QgZGVjaWRlIHdo
YXQKdG8gZG8gYWJvdXQgYWxsIHRoZXNlIGludmFyaWFudHMuIEluIG1vc3Qgb2YgdGhlIHBsYWNl
cywgd2UgZG8gbm90aGluZywKYmVjYXVzZSB0aGUgcm9hZCBpcyBzdHJhaWdodCBhbmQgaWYgd2Ug
YXJlIHNwZWVkaW5nLCB0aGUgc3BlZWQgYnVtcCBhCmh1bmRyZWQgbWV0ZXJzIGZyb20gbm93IHdp
bGwgdHJhc2ggdXMuIEJ1dCBpdCBpcyBzdGlsbCB1c2VmdWwgdG8gYWRkIG91cgpvd24gc3BlZWQg
YnVtcHMgYW5kIHRyYWZmaWMgbGlnaHRzIGF0IHN0cmF0ZWdpYyBwbGFjZXMuCgpUaGUgd29yc3Qg
dGhpbmcgd2UgY291bGQgZG8gaXMgcHVtcCB0aGUgYnJha2VzIGJlZm9yZSB0aGUgc3BlZWQgYnVt
cC4gSXQKaXMgY2FsbGVkIOKAnGRlZmVuc2l2ZSBwcm9ncmFtbWluZ+KAnTog4oCcYXQgdGhpcyBw
b2ludCwgdGhpcyB2YWx1ZSBzaG91bGQgbm90CmJlIG5lZ2F0aXZlLCBsZXQgdXMgY2hlY2sgaWYg
aXQgaXMgYW5kIG1ha2UgaXQgMCBpZiBuZWNlc3NhcnksIHRoZSBzaG93Cm11c3QgZ28gb24h4oCd
IFdlbGwsIGl0IGlzIG5vdCBhIHNob3csIGl0IGlzIGEgcHJvZ3JhbSBwcm9kdWNpbmcgYSByZXN1
bHQsCmFuZCBpZiBpdCBnb2VzIG9uIGFmdGVyIGJyZWFraW5nIG9uZSBvZiBpdHMgaW52YXJpYW50
IHJlcXVpcmVtZW50cyBpdAp3aWxsIGFsbW9zdCBjZXJ0YWlubHkgcHJvZHVjZSBpbnZhbGlkIHJl
c3VsdC4gVGhhdCBpcyBldmlsLgoKCkJ1dCBkbyB3ZSBhZGQgdHJhZmZpYyBsaWdodHMgb3IgYSBz
cGVlZCBidW1wPyBNeSB0cmFmZmljIGFuYWxvZ3kgYnJlYWtzCmRvd24sIEkgd2lsbCBzdG9wIHVz
aW5nIGl0LiBEbyB3ZSBhZGQgZG8gbm90aGluZywgZG8gd2UgYW4gYXNzZXJ0IG9yIGRvCndlIHJl
dHVybiBhbiBlcnJvcj8KCkJ1dCBmaXJzdCwgYSBzaG9ydCBwb2ludCBhYm91dCBhc3NlcnRzLiBM
b2dpY2FsbHksIGFuIGFzc2VydCBhbmQgZG9pbmcKbm90aGluZyBhcmUgdGhlIHNhbWUsIGJlY2F1
c2UgYXNzZXJ0cyBhcmUgb2Z0ZW4gcmVtb3ZlZCBhdCBidWlsZCB0aW1lCihieSB0aGUgd2F5LCBJ
IGhvcGUgYWxsIEZGbXBlZyBkZXZlbG9wZXJzIHJlbWVtYmVyIHRvIGFsd2F5cyB3b3JrIHdpdGgK
dGhlIG1heGltdW0gYXNzZXJ0IGxldmVsKS4gQW5kIGJlY2F1c2Ug4oCcY3Jhc2hpbmcgcmlnaHQg
bm934oCdIGlzIG9uZSBjYXNlCm9mIOKAnGFueXRoaW5nIGNhbiBoYXBwZW7igJ0uIEJ1dCBhc3Nl
cnRzLCB3aGVuIHRoZXkgYXJlIGVuYWJsZWQsIG1ha2UKbWlzdGFrZXMgZWFzaWVyIHRvIGRlYnVn
LCBiZWNhdXNlIHRoZXkgbWFrZSB0aGVpciBjb25zZXF1ZW5jZXMgbW9yZQp2aXNpYmxlIGVhcmxp
ZXIuCgpTbzogZG8gbm90aGluZyAvIGFzc2VydCwgb3IgcmV0dXJuIGFuIGVycm9yPyBUaGlzIGlz
IHRoZSBwb2ludCB3aGVyZQp0aGVyZSBpcyBubyBsb25nZXIgYW4gZWFzeSBhbnN3ZXIuIEl0IHJl
cXVpcmVzIHdlaWdodGluZyB0aGUgcHJvcyBhbmQKdGhlIGNvbnMuIFRoZSBvbmx5IHRoaW5nIEkg
Y2FuIGRvIGlzIG1ha2UgYSBsaXN0IG9mIGEgZmV3IGNvbnNpZGVyYXRpb25zCnRoYXQgYWZmZWN0
cyB0aGUgd2VpZ2h0aW5nIG9mIHRoZSBwcm9zIGFuZCBjb25zLgoKTW9zdGx5LCBJIHdpbGwgdGFs
ayBhYm91dCBjb2RlIHdyYXBwZWQgaW5zaWRlIGEgZnVuY3Rpb24sIHdpdGggdGhlCmNhbGxlciBw
b3NzaWJseSB1bmRlciB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYSBkaWZmZXJlbnQgcHJvZ3JhbW1l
ci4KCk9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgb25lcyBpczogSXMgdGhlcmUgYWxyZWFkeSBh
IGNoYW5uZWwgdG8gcmV0dXJuCmFuIGVycm9yPwoKSWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGV4
cGVjdGVkIHRvIGNoZWNrIGZvciBhbiBlcnJvciByZXR1cm4gZHVlIHRvCmNvbmRpdGlvbnMgb3V0
c2lkZSBvZiB0aGUgY29udHJvbCBvZiBhbnkgcHJvZ3JhbW1lciAodGhlIGhhcmQgZHJpdmUKZGll
ZCEpLCB0aGVuIHVzaW5nIGl0IHRvIHNpZ25hbCBhIHByb2dyYW1taW5nIGVycm9yIGlzIGFuIGVh
c3kgb3B0aW9uLgpPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIG9m
IHR5cGUgdm9pZCBmb3IgdGVuIHllYXJzLApjaGFuZ2luZyBpdCB0byByZXR1cm4gYW4gZXJyb3Ig
bm93IGlzIGFsbW9zdCBjZXJ0YWlubHkgbm90IGEgZ29vZCBpZGVhLApiZWNhdXNlIGEgbG90IG9m
IGNvZGUgYWxyZWFkeSBjYWxscyBpdCB3aXRob3V0IGNoZWNraW5nIGZvciBhbiBlcnJvci4KCkV2
ZW4gd29yc2UgaWYgdGhlIGZ1bmN0aW9uIHVzZWQgdG8gcmV0dXJuIGEgcG9zaXRpdmUgdmFsdWUg
dGhhdCB3YXMgbm90CnN1cHBvc2VkIHRvIGJlIGFuIGVycm9yLCBhbmQgbm93IHdlIHdhbnQgdG8g
cmV0dXJuIGFuIGVycm9yIHdpdGggYQpkaXN0aW5jdCBzZXQgb2YgdmFsdWUgKG5lZ2F0aXZlIEFW
RVJST1IgY29kZSk6IHdlIGFyZSBpbiB0aGUg4oCcY2hlZXN5Cm5vdC1hLW51bWJlciB2YWx1ZeKA
nSBjYXNlIGFuZCByaXNrIGNvbnRhbWluYXRpbmcgdGhlIG91dHB1dC4KCkFub3RoZXIgaW1wb3J0
YW50IG9uZSBpczogSG93IGVhc3kgaXMgaXQgdG8gZW5zdXJlIHRoZSByZXF1aXJlbWVudCBpcwpt
ZXQ/CgrigJxQb2ludGVyIG11c3Qgbm90IGJlIG51bGzigJ0gaXMgb25lIG9mIHRoZSBlYXNpZXN0
IHRvIGVuc3VyZSwgYW5kIGFzIGEKY29uc2VxdWVuY2UgaXQgaXMgb25lIHRoYXQgaXMgdmVyeSBv
ZnRlbiBjb21wbGV0ZWx5IG5lZ2xlY3RlZCwgcmVseWluZwpvbiB0aGUgT1Mgc2VuZGluZyBhIFNJ
R1NFR1YuCgrigJxGbGFncyBtdXN0IGJlIGEgYmluYXJ5IE9SIG9mIHRoZSBmb2xsb3dpbmcgY29u
c3RhbnRz4oCdIGlzIGFub3RoZXIgdmVyeQplYXN5IG9uZToganVzdCBkbyBub3QgZG8gYW55IGZh
bmN5IGFyaXRobWV0aWMgd2l0aCB0aGUgdmFsdWUgdGhhdCB3aWxsCmVuZCB1cCBpbiB0aGUgZmxh
Z3MuIElmIHdlIG9ubHkgdXNlIHRoZSBkZXNpZ25hdGVkIGNvbnN0YW50cyBhbmQgYmluYXJ5CmFy
aXRobWV0aWMsIHdlIGFyZSBndWFyYW50ZWVkIHRvIGJlIGdvb2QuIElmIG5vdCwgd2hhdCBhcmUg
d2UgZG9pbmcKZXhhY3RseT8KCk9uIHRoZSBvdGhlciBoYW5kLCDigJxleHByIG11c3QgcG9pbnQg
dG8gYSBzdHJpbmcgd2l0aCBhIHN5bnRhY3RpY2FsbHkKdmFsaWQgZXhwcmVzc2lvbuKAnTogSSBj
YW5ub3QgY2hlY2sgdGhlIHN5bnRheCBvZiBleHByIHdpdGhvdXQgZHVwbGljYXRpbmcKYSBsYXJn
ZSBwYXJ0IG9mIHRoZSBjb2RlIEkgYW0gYWJvdXQgdG8gY2FsbCwgYW5kIHNvbWV0aW1lcyBJIG1p
Z2h0IHdhbnQKdG8gdXNlIGFuIGV4cHJlc3Npb24gdGhhdCBjb21lcyBmcm9tIHRoZSBvdXRzaWRl
LgoKVXNlZnVsIHJ1bGUgb2YgdGh1bWI6IFdoYXQgd291bGQgdGhlIEMgbGFuZ3VhZ2UgZG8/CgpX
aGVuIHdyaXRpbmcgYSBuZXcgZnVuY3Rpb24sIHdlIGNhbiB0cnkgdG8gaW1hZ2luZSBob3cgaXQg
d291bGQgd29yayBpZgp3YXMgYSBzdGFuZGFyZCBDIGZ1bmN0aW9uLCBhbmQgZm9yIHRoYXQgbG9v
ayBhdCBzaW1pbGFyIGNhc2VzIGluIHRoZQpsaWJjLiBGb3IgZXhhbXBsZSwgbWFueSBtYW55IEMg
ZnVuY3Rpb25zIHNheSDigJx1bmRlZmluZWQgYmVoYXZpb3LigJ0gaWYKTlVMTCBpcyBwYXNzZWQg
d2hlcmUgTlVMTCBpcyBub3QgZXhwZWN0ZWQuIFdoZW5ldmVyIHRoZSBhbnN3ZXIgdG8g4oCcd2hh
dAp3b3VsZCB0aGUgQyBsYW5ndWFnZSBkb+KAnSBjb250YWlucyB0aGUgd29yZHMg4oCcdW5kZWZp
bmVkIGJlaGF2aW9y4oCdLCB0aGVuCnRoZSBiZXN0IGNob2ljZSBpcyB0byBkbyBub3RoaW5nLCBw
b3NzaWJseSB3aXRoIGFuIGFzc2VydC4KClN5c3RlbSBjYWxscywgb24gdGhlIG90aGVyIGhhbmQs
IGFyZSBub3QgYSB2ZXJ5IGdvb2QgcnVsZSBvZiB0aHVtYjogdGhleQphcmUgaGVhdmlseSBza2V3
ZWQgdG93YXJkcyDigJxldmVyeXRoaW5nIHJldHVybnMgYW4gZXJyb3IgY29kZSwgaXQgaXMgYQpn
cmF2ZSBtaXN0YWtlIHRvIGlnbm9yZSBpdOKAnTsgdGhleSBhcmUgaGVhdmlseSBidXJkZW5lZCBi
eSB0aGUgbmVlZCBmb3IKY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGNvZGUgYW5kIG90aGVy
IHN5c3RlbXM7IGFuZCB0aGUgY29uc2VxdWVuY2VzCm9mIGRvaW5nIG5vdGhpbmcgYW5kIGp1c3Qg
bGV0IHRoZSBkaWNlIGZhbGwgd291bGQgYmUgY2F0YXN0cm9waGljLgoKClRvIHN1bW1hcml6ZTog
RGVjaWRpbmcgd2hhdCB0byBkbyB3aGVuIGludmFsaWQgdmFsdWVzIGFyZSBtZXQgcmVxdWlyZXMK
cHJvcGVybHkgdW5kZXJzdGFuZGluZyB0aGUgaW52YXJpYW50IHJlcXVpcmVtZW50cyBvZiB0aGUg
cHJvZ3JhbSBhbmQKZG9pbmcgYSBjb3N0LWFuYWx5c2lzIG9mIHRoZSBvcHRpb25zLCBpbmNsdWRp
bmcgd2hldGhlciB0aGUgcmVzdCBvZiB0aGUKY29kZSBjYW4gZWFzaWx5IGVuZm9yY2UgdGhvc2Ug
aW52YXJpYW50cyBhbmQgd2hldGhlciBpdCBjYW4gZG8gc29tZXRoaW5nCmdyYWNlZnVsIHdpdGgg
YW4gZXJyb3IuCgpBZHZpY2UgYWRkcmVzc2VkIGFyZSBtb3JlIGJlZ2lubmVyIHByb2dyYW1tZXJz
IHRlbmQgdG8gYmUgbW9yZQpvbmUtc2l6ZS1maXQtYWxsLCBhbmQgYXMgc3VjaCBpbmVmZmljaWVu
dC4gQW5kIG9mdGVuIG1vcmUgZG9nbWF0aWMuIAoKUmVnYXJkcywKCi0tIAogIE5pY29sYXMgR2Vv
cmdlCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBl
Zy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1w
ZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlz
aXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3
aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K