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 E45214D6DA
	for <ffmpegdev@gitmailbox.com>; Sat, 19 Apr 2025 10:37:12 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8245C687D6E;
	Sat, 19 Apr 2025 13:37:07 +0300 (EEST)
Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com
 [209.85.219.49])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4CEB5687D59
 for <ffmpeg-devel@ffmpeg.org>; Sat, 19 Apr 2025 13:37:01 +0300 (EEST)
Received: by mail-qv1-f49.google.com with SMTP id
 6a1803df08f44-6f2b05f87bcso25485726d6.3
 for <ffmpeg-devel@ffmpeg.org>; Sat, 19 Apr 2025 03:37:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1745059020; x=1745663820; darn=ffmpeg.org;
 h=content-transfer-encoding:in-reply-to:autocrypt:from
 :content-language:references:to:subject:user-agent:mime-version:date
 :message-id:from:to:cc:subject:date:message-id:reply-to;
 bh=S4DoWCJuKmpvVBVb59ycshUNFwgsGUVmCXvJymGI95Q=;
 b=nKj/Qy96gtT0/3wU997nfl063joqwOWm7Txbs5tGnCt4FLj0BEJXYmA6oPf+X7x2+Q
 9rM1uEqeHD3wIL7GXSJcQsqvaN0DTWFcyIXEMpXQxAkJ9OuDUjzMIJ5IsjsujN520E4n
 qVIw9xuQLQ+cjr+t1B8AzIiW9HQA0GpKiyINycfL+jLxLtfibhjuUGWjuRg7fUVWkAyf
 1UV35HNp7mqAIXrKvN9Z4D7EM6+mL7GHmDAEpEPX4hgD2bKkTnr6bP7n0PY8vhynNAfK
 K5vbhNqVR/S4I6DHFcpV75VInLdAP8NGx3ABPuXcFQXhnrIsw3gSbQpsjc910yh1r1ET
 bfcQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1745059020; x=1745663820;
 h=content-transfer-encoding:in-reply-to:autocrypt:from
 :content-language:references:to:subject:user-agent:mime-version:date
 :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=S4DoWCJuKmpvVBVb59ycshUNFwgsGUVmCXvJymGI95Q=;
 b=Cad3bRA8MilTxgHJnrcultb1sN4N2YTZzi495CDsVDP7xQl83y8uWENFsw/lDdjHwi
 yBIugCcJL8jAeNInPA0iti1C5QODydke5EY8xI2Ze5shqmT7skuWEO0ryLVk2PvEsUoH
 mvawUePwkSva5DVRBYbIplrZpXZnm3Felj33MBAgpXIdvIIqIeWL7S7UITpgxn3vY3z4
 k7Q4QQBRqhM2jQiVQFu2JQGhek6+6mWIDWS38a5OdmiD/7yNsiNM3LDdYzpKKdhsjO6K
 go86usdgQehWzD85cBwvN1+Q6R0qkaypV1qq8B4lLuv8j4dFH/FdecB1NtvNFjt4ppoT
 0AUQ==
X-Gm-Message-State: AOJu0YylS0l6t5edrRe5bcoYyi6CRmJbiTapXcAUSFdQ0aZym80vUFy8
 3sAvNMhBPiM1V1jdHLXGGk+MFZszMiKTUH9a0KsIL/7razws954o7+GJig==
X-Gm-Gg: ASbGncujgqPugP/KwrS07ADpRmZU4IE9fIZzAaVaayCxPFrLx9Lks2pTV6jnRd2guJB
 RJCZzF2rmslsd7fX06zSpw0lSWTPaYqX8af+/TPgNYAWsp19VC0mbXHuwvK9Aof1vhscvLsvgcG
 edTKu3fLSWSQaFegm908Y2Yr/aMr+7LIE4vIbNZwLp7JqVopmCHJkaJw3sb6iJnkqWP0mtPrO0j
 TKsDBbqgNarcUN9RHnGyX8QQTcXHKlFnHalB1vuQ4JuDeXrSQFbEFrJ3aKv3gRpWXle0TmwV/to
 IwIjEk/gy9Q5DOXIO3CXBtK8UufiTbnYQVphfafdnRAMy4ZKBa0vAUJCWmJMuvPWdIOwaXeTcqX
 NqSiA41mj05bkf93cTDCj
X-Google-Smtp-Source: AGHT+IElO1GKthNvt5Fknay72M8BG8pGK9rxiboTydqnn9JJHKMurpvXC8Kh9Gd+aTnfIz2Ule7AbA==
X-Received: by 2002:a05:6214:500f:b0:6eb:2f7a:45b0 with SMTP id
 6a1803df08f44-6f2c46baaaamr113972996d6.38.1745059019156; 
 Sat, 19 Apr 2025 03:36:59 -0700 (PDT)
Received: from [192.168.1.35] (99-104-239-121.lightspeed.livnmi.sbcglobal.net.
 [99.104.239.121]) by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-6f2c2af1c27sm20481726d6.2.2025.04.19.03.36.56
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 19 Apr 2025 03:36:57 -0700 (PDT)
Message-ID: <ef669c75-c548-4a04-8dca-147e59f67c08@gmail.com>
Date: Sat, 19 Apr 2025 06:36:56 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <20250417165241.3266643-1-michael@niedermayer.cc>
Content-Language: en-US-large
From: Leo Izen <leo.izen@gmail.com>
Autocrypt: addr=leo.izen@gmail.com; keydata=
 xjMEZZw8HxYJKwYBBAHaRw8BAQdAgcfI+LbtjWarA7LQu6/WAPlKkn9tn4HalmHgGVhMUdzN
 KkxlbyBJemVuIChUcmFuZXB0b3JhKSA8bGVvLml6ZW5AZ21haWwuY29tPsKTBBMWCgA7FiEE
 HYMKC85GcJ4gOyb8dk5I6kgiGDMFAmWcPB8CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcC
 F4AACgkQdk5I6kgiGDOnGAEA+oJFwblAblnhK+T5a5EuEbXMTZG4FkYTYz0VmjJ0NHIA/Rn9
 ZE9+EEsH8fmT0hRJSiM3+zbkwQJA9gVVYAek9kMKzjgEZZw8HxIKKwYBBAGXVQEFAQEHQDes
 4thejF9AU2rkGuDuut3CQYwB4SVpI4EzU8uvPJgfAwEIB8J4BBgWCgAgFiEEHYMKC85GcJ4g
 Oyb8dk5I6kgiGDMFAmWcPB8CGwwACgkQdk5I6kgiGDOv3QD+PLXrL0Ihk675Ip5FG+VJOodN
 6e+5n3iYC6wJ75eqG3EA/1nCywoGXlCYuzXgq3el6NOn+8awwaXcTVJFzZCRbe8M
In-Reply-To: <20250417165241.3266643-1-michael@niedermayer.cc>
Subject: Re: [FFmpeg-devel] [PATCH v3] libavutil: Add AVMap
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-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/ef669c75-c548-4a04-8dca-147e59f67c08@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

T24gNC8xNy8yNSAxMjo1MiwgTWljaGFlbCBOaWVkZXJtYXllciB3cm90ZToNCj4gQVZMIFRyZWUg
YmFzZWQgTWFwDQo+IA0KPiBjb21wYXJlZCB0byBBVkRpY3Rpb25hcnkgdGhpcyBoYXMNCj4gICAq
IGNsb25lIGlzIE8obikgaW5zdGVhZCBvZiBPKG7CsikNCj4gICAqIGNvcHkgaXMgTyhuKmxvZyBu
KSBpbnN0ZWFkIG9mIE8obsKyKQ0KPiAgICogTyhsb2cgbikgbWFsbG9jKCkgY2FsbHMgYnkgZGVm
YXVsdCBhbmQgTygxKSBpZiBhdl9tYXBfcmVhbGxvYygpIGlzIHVzZWQgaW5zdGVhZCBvZiBPKG4p
DQo+ICAgKiBnZXQvYWRkL2RlbGV0ZSBpcyBPKGxvZyBuKQ0KPiAgICoNCj4gICAqIFlvdSBjYW4g
YWRkIChpZiBtZW1vcnkgaXMgcmVhbGxvY2VkIGJlZm9yZSkgYW5kIHJlbW92ZSBlbnRyaWVzIHdo
aWxlIGEgaXRlcmF0b3Igc3RheXMgdmFsaWQNCj4gICAqIGNvcHkgaXMgYXRvbWljLCBhIGZhaWx1
cmUgbWVhbnMgdGhlIGRzdCBpcyB1bmNoYW5nZWQNCj4gICAqDQo+ICAgKiB0aGVyZSBhcmUgcmVz
dHJpY3Rpb25zIG9uIHdoYXQgY29tcGFyZSBmdW5jdGlvbiBjYW4gYmUgdXNlZCBvbiBnZXQgZGVw
ZW5kaW5nIG9uIGhvdyB0aGUgTWFwIHdhcyBjcmVhdGVkDQo+ICAgKiB5b3UgY2FuIG1peCBjYXNl
IHNlbnNpdGl2ZSBhbmQgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJlIHdpdGggYXZfbWFwX3N1cGVy
Y21wXyoNCj4gICAqIFN1cHBvcnRzIGJpbmFyeSBvYmplY3RzLCBub3QganVzdCBzdHJpbmdzDQo+
IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1h
eWVyLmNjPg0KPiAtLS0NCj4gICBsaWJhdnV0aWwvTWFrZWZpbGUgICAgICAgIHwgICAzICsNCj4g
ICBsaWJhdnV0aWwvbWFwLmMgICAgICAgICAgIHwgNDE1ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+ICAgbGliYXZ1dGlsL21hcC5oICAgICAgICAgICB8IDI3MCArKysr
KysrKysrKysrKysrKysrKysrKysrDQo+ICAgbGliYXZ1dGlsL3Rlc3RzL21hcC5jICAgICB8IDIy
MSArKysrKysrKysrKysrKysrKysrKw0KPiAgIGxpYmF2dXRpbC90cmVlLmMgICAgICAgICAgfCAg
IDYgKy0NCj4gICBsaWJhdnV0aWwvdHJlZV9pbnRlcm5hbC5oIHwgIDI4ICsrKw0KPiAgIHRlc3Rz
L2ZhdGUvbGliYXZ1dGlsLm1hayAgfCAgIDQgKw0KPiAgIHRlc3RzL3JlZi9mYXRlL21hcCAgICAg
ICAgfCAgMjcgKysrDQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCA5NjkgaW5zZXJ0aW9ucygrKSwgNSBk
ZWxldGlvbnMoLSkNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL21hcC5jDQo+ICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9tYXAuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWJhdnV0aWwvdGVzdHMvbWFwLmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGls
L3RyZWVfaW50ZXJuYWwuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9t
YXANCj4gDQo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvTWFrZWZpbGUgYi9saWJhdnV0aWwvTWFr
ZWZpbGUNCj4gaW5kZXggOWVmMTE4MDE2YmIuLjNhOTI3NDhhNDgyIDEwMDY0NA0KPiAtLS0gYS9s
aWJhdnV0aWwvTWFrZWZpbGUNCj4gKysrIGIvbGliYXZ1dGlsL01ha2VmaWxlDQo+IEBAIC04MSw2
ICs4MSw3IEBAIEhFQURFUlMgPSBhZGxlcjMyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICAgcmVwbGF5Z2Fpbi5oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAg
ICAgICAgIHJpcGVtZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KPiAgICAgICAgICAgICBzYW1wbGVmbXQuaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICBtYXAuaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN
Cj4gICAgICAgICAgICAgc2hhLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgICAgICAgIHNoYTUxMi5oICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgICAg
ICBzcGhlcmljYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCj4gQEAgLTE3Myw2ICsxNzQsNyBAQCBPQkpTID0gYWRsZXIzMi5vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAg
ICAgIHJjNC5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KPiAgICAgICAgICByaXBlbWQubyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgc2FtcGxlZm10
Lm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
DQo+ICsgICAgICAgbWFwLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgICAgIHNpZGVfZGF0YS5vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgICBz
aGEubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCj4gICAgICAgICAgc2hhNTEyLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+IEBAIC0yOTAsNiArMjkyLDcgQEAgVEVT
VFBST0dTID0gYWRsZXIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KPiAgICAgICAgICAgICAgIHJhbmRvbV9zZWVkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICAgICByYXRp
b25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
DQo+ICAgICAgICAgICAgICAgcmlwZW1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgbWFwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgICAg
ICAgIHNoYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCj4gICAgICAgICAgICAgICBzaGE1MTIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgICAgICAgICAgc2lkZV9kYXRh
X2FycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiBk
aWZmIC0tZ2l0IGEvbGliYXZ1dGlsL21hcC5jIGIvbGliYXZ1dGlsL21hcC5jDQo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi41OWI4N2ExZjA3NA0KPiAtLS0gL2Rl
di9udWxsDQo+ICsrKyBiL2xpYmF2dXRpbC9tYXAuYw0KPiBAQCAtMCwwICsxLDQxNSBAQA0KPiAr
LyoNCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNSBNaWNoYWVsIE5pZWRlcm1heWVyDQo+ICsgKg0K
PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KPiArICoNCj4gKyAqIEZGbXBlZyBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4gKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMN
Cj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcg0KPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ICsgKg0KPiArICogRkZtcGVnIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUNCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuDQo+ICsgKg0KPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KPiArICogTGljZW5zZSBhbG9uZyB3
aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KPiArICogRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAwMjExMC0xMzAxIFVTQQ0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0K
PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArDQo+ICsjaW5jbHVkZSAiYXZhc3NlcnQuaCINCj4g
KyNpbmNsdWRlICJhdnN0cmluZy5oIg0KPiArI2luY2x1ZGUgImVycm9yLmgiDQo+ICsjaW5jbHVk
ZSAibWVtLmgiDQo+ICsjaW5jbHVkZSAibWFwLmgiDQo+ICsNCj4gKyNpbmNsdWRlICJ0cmVlX2lu
dGVybmFsLmgiIC8vIEZvciBpbXByb3ZlZCByZWFkYWJpbGl0eSB3aXRoIEFWVHJlZU5vZGUsIGRv
IE5PVCB0b3VjaCBBVlRyZWVOb2RlIGludGVybmFscw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdHsN
Cj4gKyAgICBBVk1hcEVudHJ5IG1hcF9lbnRyeTsNCj4gKyAgICB1aW50OF90IHRyZWVub2RlX2Fu
ZF9rZXl2YWx1ZVswXTsNCj4gK30gQVZNYXBJbnRlcm5hbEVudHJ5Ow0KPiArDQo+ICtzdHJ1Y3Qg
QVZNYXB7DQo+ICsjZGVmaW5lIENNUF9NQVNLIDMxDQo+ICsgICAgQVZNYXBDb21wYXJlRnVuYyBj
bXBbMjddOw0KPiArICAgIEFWTWFwQ29weUZ1bmMgY29weTsNCj4gKyAgICBBVk1hcEZyZWVGdW5j
IGZyZWVmOw0KPiArICAgIGludCBjb3VudDsNCj4gKyAgICBpbnQgZGVsZXRlZDsNCj4gKyAgICBp
bnQgbmV4dDsgICAgICAgICAgICAgICAgICAgLy8vPCBpbmRleCBvZiBlbnRyeSBpbiByb290IGFy
cmF5IGFmdGVyIGFsbCB1c2VkIGVudHJpZXMNCg0KSW5kaWNlcyBpbnRvIGFycmF5cyBhbmQgY291
bnRzIGFuZCB0aGUgbGlrZSBzaG91bGQgYmUgc2l6ZV90Lg0KDQo+ICsgICAgdW5zaWduZWQgaW50
ZXJuYWxfZW50cmllc19sZW47DQo+ICsgICAgQVZUcmVlTm9kZSAqdHJlZV9yb290Ow0KPiArICAg
IEFWTWFwSW50ZXJuYWxFbnRyeSAqaW50ZXJuYWxfZW50cmllczsNCj4gK307DQo+ICsNCj4gK3N0
YXRpYyB1aW50OF90IGRlbGV0ZWRfZW50cnk7DQoNCnN0YXRpYyBjb25zdCBzaG91bGQgYWxsb3cg
dGhlIGNvbXBpbGVyIHRvIHB1dCBpdCBpbiBhIGRpZmZlcmVudCBzZWN0aW9uIA0KaWYgaXQgd2lz
aGVzLiBZb3UgY2FuIHN0aWxsIGFkZHJlc3MgaXQgZXZlbiB0aGVuLg0KDQo+ICsNCj4gK3N0YXRp
YyBpbmxpbmUgaW50IGludGVybmFsX2VudHJ5X2xlbihBVk1hcEludGVybmFsRW50cnkgKkkpIHsN
Cj4gKyAgICByZXR1cm4gKEktPm1hcF9lbnRyeS5rZXlsZW4gKyBJLT5tYXBfZW50cnkudmFsdWVs
ZW4gKyBzaXplb2YgKCpJKSArIHNpemVvZihBVlRyZWVOb2RlKSAtIDEpIC8gc2l6ZW9mICgqSSkg
KyAxOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIEFWVHJlZU5vZGUgKiBpbnRlcm5hbF90
cmVlbm9kZShjb25zdCBBVk1hcEludGVybmFsRW50cnkgKkkpDQo+ICt7DQo+ICsgICAgcmV0dXJu
IChBVlRyZWVOb2RlICopSS0+dHJlZW5vZGVfYW5kX2tleXZhbHVlOw0KPiArfQ0KPiArDQo+ICtz
dGF0aWMgaW5saW5lIHVpbnQ4X3QgKiBpbnRlcm5hbF9rZXkoQVZNYXBJbnRlcm5hbEVudHJ5ICpJ
KQ0KPiArew0KPiArICAgIHJldHVybiBJLT50cmVlbm9kZV9hbmRfa2V5dmFsdWUgKyBzaXplb2Yo
QVZUcmVlTm9kZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdWludDhfdCAqIGludGVy
bmFsX3ZhbHVlKEFWTWFwSW50ZXJuYWxFbnRyeSAqSSkNCj4gK3sNCj4gKyAgICByZXR1cm4gSS0+
dHJlZW5vZGVfYW5kX2tleXZhbHVlICsgc2l6ZW9mKEFWVHJlZU5vZGUpICsgSS0+bWFwX2VudHJ5
LmtleWxlbjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSBBVk1hcEludGVybmFsRW50cnkg
KiBrZXl2YWx1ZTJpbnRlcm5hbChjb25zdCB1aW50OF90ICprZXl2YWx1ZSkNCj4gK3sNCj4gKyAg
ICByZXR1cm4gKEFWTWFwSW50ZXJuYWxFbnRyeSopKGtleXZhbHVlIC0gb2Zmc2V0b2YoQVZNYXBJ
bnRlcm5hbEVudHJ5LCB0cmVlbm9kZV9hbmRfa2V5dmFsdWUpIC0gc2l6ZW9mKEFWVHJlZU5vZGUp
KTsNCj4gK30NCj4gKw0KPiAraW50IGF2X21hcF9zdHJjbXBfa2V5dmFsdWUoY29uc3QgY2hhciAq
YSwgY29uc3QgY2hhciAqYikNCj4gK3sNCj4gKyAgICBpbnQgdiA9IHN0cmNtcChhLGIpOw0KPiAr
ICAgIGlmKCF2KQ0KPiArICAgICAgICB2ID0gc3RyY21wKGEgKyBzdHJsZW4oYSkgKyAxLCBiICsg
c3RybGVuKGEpICsgMSk7IC8vIHBsZWFzZSBvcHRpbWl6ZSB0aGlzIGRlYXIgY29tcGlsZXIsIHdl
IGtub3cgdGhlIHN0cmxlbiBhZnRlciBzdHJjbXAoKQ0KPiArICAgIHJldHVybiB2Ow0KPiArfQ0K
PiArDQo+ICtpbnQgYXZfbWFwX3N1cGVyY21wX2tleShjb25zdCBjaGFyICphLCBjb25zdCBjaGFy
ICpiKQ0KPiArew0KPiArICAgIGludCB2ID0gYXZfc3RyY2FzZWNtcChhLGIpOw0KPiArICAgIGlm
ICghdikNCj4gKyAgICAgICAgdiA9IHN0cmNtcChhLGIpOw0KPiArDQo+ICsgICAgcmV0dXJuIHY7
DQo+ICt9DQo+ICsNCj4gK2ludCBhdl9tYXBfc3VwZXJjbXBfa2V5dmFsdWUoY29uc3QgY2hhciAq
YSwgY29uc3QgY2hhciAqYikNCj4gK3sNCj4gKyAgICBpbnQgdiA9IGF2X21hcF9zdXBlcmNtcF9r
ZXkoYSxiKTsNCj4gKyAgICBpZiAoIXYpDQo+ICsgICAgICAgIHYgPSBzdHJjbXAoYSArIHN0cmxl
bihhKSArIDEsIGIgKyBzdHJsZW4oYSkgKyAxKTsNCj4gKw0KPiArICAgIHJldHVybiB2Ow0KPiAr
fQ0KPiArDQo+ICtpbnQgYXZfbWFwX2FkZF9jbXBfZnVuYyhBVk1hcCAqbSwgQVZNYXBDb21wYXJl
RnVuYyBjbXAsIGludCBjbXBfZmxhZ3MpDQo+ICt7DQo+ICsgICAgc3RhdGljIGNvbnN0IHVpbnQ4
X3Qgc2Vuc2l0aXZpdHlbMjddWzNdID0gew0KPiArICAgICAgICB7MCwwLCAwfSx7MSwwLCAwfSx7
MiwwLCAwfSwgezAsMywgMH0sezEsMywgMH0sezIsMywgMH0sIHswLDYsIDB9LHsxLDYsIDB9LHsy
LDYsIDB9LA0KPiArICAgICAgICB7MCwwLCA5fSx7MSwwLCA5fSx7MiwwLCA5fSwgezAsMywgOX0s
ezEsMywgOX0sezIsMywgOX0sIHswLDYsIDl9LHsxLDYsIDl9LHsyLDYsIDl9LA0KPiArICAgICAg
ICB7MCwwLDE4fSx7MSwwLDE4fSx7MiwwLDE4fSwgezAsMywxOH0sezEsMywxOH0sezIsMywxOH0s
IHswLDYsMTh9LHsxLDYsMTh9LHsyLDYsMTh9LH07DQo+ICsgICAgaW50IGNhc2Vfc2Vuc2l0aXZl
ICAgICAgID0gIHNlbnNpdGl2aXR5W2NtcF9mbGFnc11bMF07DQo+ICsgICAgaW50IGtleXZhbHVl
X3NlbnNpdGl2ZSAgID0gIHNlbnNpdGl2aXR5W2NtcF9mbGFnc11bMV07DQo+ICsgICAgaW50IHRy
dW5jYXRlZF9zZW5zaXRpdmUgID0gIHNlbnNpdGl2aXR5W2NtcF9mbGFnc11bMl07DQo+ICsNCj4g
KyAgICBpZiAoIWtleXZhbHVlX3NlbnNpdGl2ZSB8fCAhdHJ1bmNhdGVkX3NlbnNpdGl2ZSB8fCBj
bXBfZmxhZ3MgPj0gMjdVKQ0KPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KDQpO
ZWVkIHRvIGNoZWNrIGZvciBjbXBfZmxhZ3MgPj0gMjdVIGJlZm9yZSBpbmRleGluZyBpbnRvIHRo
ZSBhcnJheS4gVGhlIA0KY29tcGlsZXIgbWF5IHB1bGwgdGhpcyBhcnJheSBvZmYgdGhlIHN0YWNr
IGNhdXNlIGl0J3Mgc3RhdGljIGNvbnN0IHNvIA0KeW91IHJpc2sgaGl0dGluZyBhIGRlYWQgcGFn
ZSBoZXJlLg0KDQo+ICsNCj4gKyAgICBhdl9hc3NlcnQxKGNhc2Vfc2Vuc2l0aXZlICsga2V5dmFs
dWVfc2Vuc2l0aXZlICsgdHJ1bmNhdGVkX3NlbnNpdGl2ZSA9PSBjbXBfZmxhZ3MpOw0KPiArDQo+
ICsgICAgaWYgKCAgICAgY2FzZV9zZW5zaXRpdmUgPT0gQVZfTUFQX0NNUF9DQVNFX1NFTlNJVElW
RSAmJiBtLT5jbXBba2V5dmFsdWVfc2Vuc2l0aXZlICsgQVZfTUFQX0NNUF9DQVNFX0lOU0VOU0lU
SVZFXSkNCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4gKyAgICBpZiAoIGtl
eXZhbHVlX3NlbnNpdGl2ZSA9PSBBVl9NQVBfQ01QX0tFWVZBTFVFICAgICAgICYmIG0tPmNtcFtB
Vl9NQVBfQ01QX0tFWV0pDQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+ICsg
ICAgaWYgKHRydW5jYXRlZF9zZW5zaXRpdmUgPT0gQVZfTUFQX0NNUF9OT05fVFJVTkNBVEVEICAm
JiBtLT5jbXBba2V5dmFsdWVfc2Vuc2l0aXZlICsgQVZfTUFQX0NNUF9UUlVOQ0FURURdKQ0KPiAr
ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KPiArDQo+ICsgICAgLy9tYXggZnVuY3Rp
b25zIGlzIEtWIE5UIENTIC0+IEtWIE5UIENJIC0+IEtWIFQgQ0kgKENJL1QgaXMgYWJvdXQgdmFs
dWUgb25seSkgLT4gSyBOVCBDUyAtPiBLIE5UIENJIC0+IEsgVCBDSQ0KPiArICAgIC8vbWlzc2lu
ZyBpcyBLViBUIENTIGFuZCBLIFQgQ1MsIHdpdGggdGhlbSB3ZSBjYW4gaGF2ZSBLViBOVCBDUyAt
PiBLViBUIENTIC0+IEsgTlQgQ1MgLT4gSyBUIENTDQo+ICsNCj4gKyAgICBmb3IgKGludCBpPTA7
IGk8ODsgaSsrKSB7DQo+ICsgICAgICAgIGludCBmbGFncyA9IDA7DQo+ICsgICAgICAgIGlmIChp
JjEpIGZsYWdzICs9IGNhc2Vfc2Vuc2l0aXZlOw0KPiArICAgICAgICBpZiAoaSYyKSBmbGFncyAr
PSBrZXl2YWx1ZV9zZW5zaXRpdmU7DQo+ICsgICAgICAgIGlmIChpJjQpIGZsYWdzICs9IHRydW5j
YXRlZF9zZW5zaXRpdmU7DQo+ICsNCj4gKyAgICAgICAgaWYgKCFtLT5jbXBbZmxhZ3NdKQ0KPiAr
ICAgICAgICAgICAgbS0+Y21wW2ZsYWdzXSA9IGNtcDsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJu
IDA7DQo+ICt9DQo+ICsNCj4gK2ludCBhdl9tYXBfaXNfY21wX2ZsYWdzX3N1cHBvcnRlZChBVk1h
cCAqbSwgaW50IGNtcF9mbGFncykNCj4gK3sNCj4gKyAgICBpZiAoY21wX2ZsYWdzID49IDI3VSkN
Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4gKyAgICByZXR1cm4gISFtLT5j
bXBbY21wX2ZsYWdzXTsNCj4gK30NCj4gKw0KPiArQVZNYXAgKmF2X21hcF9uZXcoQVZNYXBDb21w
YXJlRnVuYyBjbXBfa2V5dmFsdWUsIGludCBjbXBfZmxhZ3MsIEFWTWFwQ29weUZ1bmMgY29weSwg
QVZNYXBGcmVlRnVuYyBmcmVlZikNCj4gK3sNCj4gKyAgICBBVk1hcCAqcyA9IGF2X21hbGxvY3oo
c2l6ZW9mKCpzKSk7DQo+ICsgICAgaWYgKCFzKQ0KPiArICAgICAgICByZXR1cm4gTlVMTDsNCj4g
Kw0KPiArICAgIHMtPmNvcHkgICAgICAgICAgPSBjb3B5Ow0KPiArICAgIHMtPmZyZWVmICAgICAg
ICAgPSBmcmVlZjsNCj4gKw0KPiArICAgIGF2X21hcF9hZGRfY21wX2Z1bmMocywgY21wX2tleXZh
bHVlLCBjbXBfZmxhZ3MpOw0KDQpObyBjaGVjayBmb3IgcmV0dXJuIHZhbHVlLiBhdl9tYXBfYWRk
X2NtcF9mdW5jIGNhbiByZXR1cm4gDQpBVkVSUk9SKEVJTlZBTCkgZGVwZW5kaW5nIG9uIGNtcF9m
bGFncy4NCg0KPiArDQo+ICsgICAgcmV0dXJuIHM7DQo+ICt9DQo+ICsNCj4gK2NvbnN0IEFWTWFw
RW50cnkgKmF2X21hcF9nZXRfbXVsdGlwbGUoY29uc3QgQVZNYXAgKnMsIGNvbnN0IEFWTWFwRW50
cnkgKnByZXYsIGNvbnN0IGNoYXIgKmtleXZhbHVlLCBpbnQgZmxhZ3MpDQo+ICt7DQo+ICsgICAg
QVZNYXBDb21wYXJlRnVuYyBjbXAgPSBzLT5jbXBbZmxhZ3MgJiBDTVBfTUFTS107DQo+ICsNCj4g
KyAgICBpZiAocHJldikgew0KPiArICAgICAgICB2b2lkICpuZXh0X25vZGVbMl0gPSB7IE5VTEws
IE5VTEwgfTsNCj4gKyAgICAgICAgdm9pZCAqcHJldl9rZXl2YWx1ZSA9IGF2X3RyZWVfZmluZDIo
cy0+dHJlZV9yb290LCBwcmV2LT5rZXksIHMtPmNtcFswXSwgbmV4dF9ub2RlLCAyKTsNCj4gKyAg
ICAgICAgYXZfYXNzZXJ0MihwcmV2X2tleXZhbHVlKTsNCj4gKyAgICAgICAgaWYgKCFuZXh0X25v
ZGVbMV0gfHwgY21wKG5leHRfbm9kZVsxXSwga2V5dmFsdWUpKQ0KPiArICAgICAgICAgICAgcmV0
dXJuIE5VTEw7DQo+ICsNCj4gKyAgICAgICAga2V5dmFsdWUgPSBuZXh0X25vZGVbMV07DQo+ICsg
ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgdm9pZCAqbmV4dF9ub2RlWzRdID0geyBOVUxMLCBOVUxM
LCBOVUxMLCBOVUxMIH07DQo+ICsgICAgICAgIGtleXZhbHVlID0gYXZfdHJlZV9maW5kMihzLT50
cmVlX3Jvb3QsIGtleXZhbHVlLCBjbXAsIG5leHRfbm9kZSwgNCk7DQo+ICsgICAgICAgIGlmIChu
ZXh0X25vZGVbMl0pIC8vIElmIHdlIGhhdmUgYSBsZWZ0bW9zdCBlcXVhbCBrZXl2YWx1ZSwgdXNl
IGl0IGluc3RlYWQNCj4gKyAgICAgICAgICAgIGtleXZhbHVlID0gbmV4dF9ub2RlWzJdOw0KPiAr
ICAgIH0NCj4gKw0KPiArICAgIGlmICgha2V5dmFsdWUpDQo+ICsgICAgICAgIHJldHVybiBOVUxM
Ow0KPiArDQo+ICsgICAgcmV0dXJuICZrZXl2YWx1ZTJpbnRlcm5hbChrZXl2YWx1ZSktPm1hcF9l
bnRyeTsNCj4gK30NCj4gKw0KPiArY29uc3QgQVZNYXBFbnRyeSAqYXZfbWFwX2dldChjb25zdCBB
Vk1hcCAqcywgY29uc3QgY2hhciAqa2V5dmFsdWUsIGludCBmbGFncykNCj4gK3sNCj4gKyAgICBB
Vk1hcENvbXBhcmVGdW5jIGNtcCA9IHMtPmNtcFtmbGFncyAmIENNUF9NQVNLXTsNCj4gKw0KPiAr
ICAgIGtleXZhbHVlID0gYXZfdHJlZV9maW5kMihzLT50cmVlX3Jvb3QsIGtleXZhbHVlLCBjbXAs
IE5VTEwsIDApOw0KPiArDQo+ICsgICAgaWYgKCFrZXl2YWx1ZSkNCj4gKyAgICAgICAgcmV0dXJu
IE5VTEw7DQo+ICsNCj4gKyAgICByZXR1cm4gJmtleXZhbHVlMmludGVybmFsKGtleXZhbHVlKS0+
bWFwX2VudHJ5Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB1cGRhdGVfcG9pbnRlcnMoQVZN
YXAgKmRzdCwgQVZNYXBJbnRlcm5hbEVudHJ5ICpkc3RfaW50ZXJuYWxfZW50cmllcywgY29uc3Qg
QVZNYXBJbnRlcm5hbEVudHJ5ICpzcmNfaW50ZXJuYWxfZW50cmllcykNCj4gK3sNCj4gKyAgICBB
VlRyZWVOb2RlICpzcmNfdHJlZV9yb290ID0gZHN0LT50cmVlX3Jvb3Q7DQo+ICsNCj4gKyAgICBp
ZiAoc3JjX3RyZWVfcm9vdCkgew0KPiArICAgICAgICBkc3QtPnRyZWVfcm9vdCA9IHNyY190cmVl
X3Jvb3QgLSBpbnRlcm5hbF90cmVlbm9kZShzcmNfaW50ZXJuYWxfZW50cmllcykgKyBpbnRlcm5h
bF90cmVlbm9kZShkc3RfaW50ZXJuYWxfZW50cmllcyk7DQo+ICsgICAgICAgIGF2X3RyZWVfbW92
ZShkc3QtPnRyZWVfcm9vdCwgc3JjX3RyZWVfcm9vdCwgZHN0X2ludGVybmFsX2VudHJpZXMsIHNy
Y19pbnRlcm5hbF9lbnRyaWVzKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvL1RPRE8gV2UgY291
bGQgYXR0ZW1wdCB0byBjb21wYWN0IGZyZWUgc3BhY2UNCj4gKyAgICBmb3IoaW50IGkgPSAwOyBp
PGRzdC0+bmV4dDsgaSsrKSB7DQo+ICsgICAgICAgIGlmIChkc3RfaW50ZXJuYWxfZW50cmllc1tp
XS5tYXBfZW50cnkua2V5ICE9ICZkZWxldGVkX2VudHJ5KSB7DQo+ICsgICAgICAgICAgICBkc3Rf
aW50ZXJuYWxfZW50cmllc1tpXS5tYXBfZW50cnkua2V5ICAgPSBpbnRlcm5hbF9rZXkgIChkc3Rf
aW50ZXJuYWxfZW50cmllcyArIGkpOw0KPiArICAgICAgICAgICAgZHN0X2ludGVybmFsX2VudHJp
ZXNbaV0ubWFwX2VudHJ5LnZhbHVlID0gaW50ZXJuYWxfdmFsdWUoZHN0X2ludGVybmFsX2VudHJp
ZXMgKyBpKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBpICs9IGludGVybmFsX2VudHJ5X2xl
bihkc3RfaW50ZXJuYWxfZW50cmllcyArIGkpIC0gMTsNCj4gKyAgICB9DQo+ICsgICAgZHN0LT5p
bnRlcm5hbF9lbnRyaWVzID0gZHN0X2ludGVybmFsX2VudHJpZXM7DQo+ICt9DQo+ICsNCj4gK2lu
dCBhdl9tYXBfcmVhbGxvYyhBVk1hcCAqcywgaW50IGV4dHJhX2VsZW1lbnRzLCBpbnQgZXh0cmFf
c3BhY2UpIHsNCj4gKyAgICBpbnQ2NF90IGFkdmFuY2UgPSBleHRyYV9lbGVtZW50cyArIChleHRy
YV9zcGFjZSArIChpbnQ2NF90KWV4dHJhX2VsZW1lbnRzKihzaXplb2YoKnMtPmludGVybmFsX2Vu
dHJpZXMpICsgc2l6ZW9mKEFWVHJlZU5vZGUpIC0gMSkpIC8gc2l6ZW9mKCpzLT5pbnRlcm5hbF9l
bnRyaWVzKTsNCj4gKw0KPiArICAgIGlmIChhZHZhbmNlID4gKElOVDMyX01BWCAtIHMtPm5leHQp
IC8gc2l6ZW9mKEFWTWFwSW50ZXJuYWxFbnRyeSkpDQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9S
KEVOT01FTSk7DQo+ICsNCj4gKyAgICBBVk1hcEludGVybmFsRW50cnkgKm5ld19pbnRlcm5hbF9l
bnRyaWVzID0gYXZfZmFzdF9yZWFsbG9jKHMtPmludGVybmFsX2VudHJpZXMsICZzLT5pbnRlcm5h
bF9lbnRyaWVzX2xlbiwgKHMtPm5leHQgKyBhZHZhbmNlKSAqIHNpemVvZihBVk1hcEludGVybmFs
RW50cnkpKTsNCj4gKw0KPiArICAgIGlmICghbmV3X2ludGVybmFsX2VudHJpZXMpDQo+ICsgICAg
ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQo+ICsNCj4gKyAgICBpZiAobmV3X2ludGVybmFs
X2VudHJpZXMgIT0gcy0+aW50ZXJuYWxfZW50cmllcykgew0KPiArICAgICAgICB1cGRhdGVfcG9p
bnRlcnMocywgbmV3X2ludGVybmFsX2VudHJpZXMsIHMtPmludGVybmFsX2VudHJpZXMpOw0KPiAr
ICAgIH0NCg0KQ29kZSBzdHlsZTogcmVtb3ZlIHt9DQoNCg0KPiArICAgIHJldHVybiBhZHZhbmNl
Ow0KPiArfQ0KPiArDQo+ICtpbnQgYXZfbWFwX2FkZChBVk1hcCAqcywgY29uc3QgY2hhciAqa2V5
LCBpbnQga2V5bGVuLCBjb25zdCBjaGFyICp2YWx1ZSwgaW50IHZhbHVlbGVuLCBpbnQgZmxhZ3Mp
DQo+ICt7DQo+ICsgICAgYXZfYXNzZXJ0MihrZXlsZW4gfHwgdmFsdWVsZW4pOyAvLyBwYXRjaCB3
ZWxjb21lIGJ1dCBob3cgd291bGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24gY29tcGFyZSBhIGxlbj0w
IGVsZW1lbnQgd2l0aG91dCBrbm93aW5nIGl0IGlzIGEgbGVuIDAgZWxlbWVudA0KPiArDQoNClRo
aXMgaXMgYSBwdWJsaWMgZnVuY3Rpb24gc28gd2Ugc2hvdWxkIGJlIHJldHVybmluZyBBVkVSUk9S
KEVJTlZBTCkgb24gDQppbnZhbGlkIGlucHV0IHJhdGhlciB0aGFuIGFzc2VydGluZy4gU2luY2Ug
YSBsaWJyYXJ5IHVzZXIgY291bGQgZG8gdGhhdC4NCg0KPiArICAgIGludCBhZHZhbmNlID0gYXZf
bWFwX3JlYWxsb2MocywgMSwga2V5bGVuICsgdmFsdWVsZW4pOw0KPiArICAgIGlmIChhZHZhbmNl
IDwgMCkNCj4gKyAgICAgICAgcmV0dXJuIGFkdmFuY2U7DQo+ICsNCj4gKyAgICBBVk1hcEVudHJ5
ICplbnRyeSA9ICZzLT5pbnRlcm5hbF9lbnRyaWVzW3MtPm5leHRdLm1hcF9lbnRyeTsNCj4gKyAg
ICBBVlRyZWVOb2RlICpuZXh0ID0gaW50ZXJuYWxfdHJlZW5vZGUocy0+aW50ZXJuYWxfZW50cmll
cyArIHMtPm5leHQpOw0KPiArICAgIG1lbXNldChuZXh0LCAwLCBzaXplb2YoKm5leHQpKTsNCj4g
KyAgICBlbnRyeS0+a2V5bGVuICA9IGtleWxlbjsNCj4gKyAgICBlbnRyeS0+dmFsdWVsZW49IHZh
bHVlbGVuOw0KPiArICAgIGVudHJ5LT5rZXkgICAgID0gaW50ZXJuYWxfa2V5ICAocy0+aW50ZXJu
YWxfZW50cmllcyArIHMtPm5leHQpOw0KPiArICAgIGVudHJ5LT52YWx1ZSAgID0gaW50ZXJuYWxf
dmFsdWUocy0+aW50ZXJuYWxfZW50cmllcyArIHMtPm5leHQpOw0KPiArICAgIG1lbWNweShlbnRy
eS0+a2V5ICAsIGtleSAgLCBrZXlsZW4pOw0KPiArICAgIG1lbWNweShlbnRyeS0+dmFsdWUsIHZh
bHVlLCB2YWx1ZWxlbik7DQo+ICsNCj4gKyAgICB2b2lkICplbGVtID0gYXZfdHJlZV9pbnNlcnQo
JnMtPnRyZWVfcm9vdCwgZW50cnktPmtleSwgcy0+Y21wWzBdLCAmbmV4dCk7DQo+ICsgICAgaW50
IHJldCA9IDE7DQo+ICsgICAgaWYgKGVsZW0gIT0gZW50cnktPmtleSAmJiBlbGVtKSB7DQo+ICsg
ICAgICAgIGF2X2Fzc2VydDIobmV4dCk7DQo+ICsgICAgICAgIC8vd2UgYXNzdW1lIHRoYXQgbmV3
IGVudHJpZXMgYXJlIG1vcmUgY29tbW9uIHRoYW4gcmVwbGFjZW1lbnRzDQo+ICsgICAgICAgIGlm
IChmbGFncyAmIEFWX01BUF9SRVBMQUNFKSB7DQo+ICsgICAgICAgICAgICByZXQgPSBhdl9tYXBf
ZGVsKHMsIGVudHJ5LT5rZXksIGZsYWdzICYgfkNNUF9NQVNLKTsNCj4gKyAgICAgICAgICAgIGF2
X2Fzc2VydDIocmV0ID09IDEpOw0KPiArICAgICAgICAgICAgZWxlbSA9IGF2X3RyZWVfaW5zZXJ0
KCZzLT50cmVlX3Jvb3QsIGVudHJ5LT5rZXksIHMtPmNtcFswXSwgJm5leHQpOw0KPiArICAgICAg
ICAgICAgYXZfYXNzZXJ0MihlbGVtID09IGVudHJ5LT5rZXkgfHwgIWVsZW0pOw0KPiArICAgICAg
ICAgICAgcmV0ID0gMjsNCj4gKyAgICAgICAgfSBlbHNlDQo+ICsgICAgICAgICAgICByZXR1cm4g
MDsgLy9lbnRyeSBhbHJlYWR5IGluIHRoZSBtYXANCj4gKyAgICB9DQo+ICsgICAgYXZfYXNzZXJ0
MighbmV4dCk7DQo+ICsgICAgYXZfYXNzZXJ0MihzLT50cmVlX3Jvb3QpOw0KPiArICAgIHMtPm5l
eHQgKz0gYWR2YW5jZTsNCj4gKyAgICBzLT5jb3VudCsrOw0KPiArDQo+ICsgICAgcmV0dXJuIHJl
dDsNCj4gK30NCj4gKw0KPiAraW50IGF2X21hcF9hZGRfc3RyaW5ncyhBVk1hcCAqcywgY29uc3Qg
Y2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSwgaW50IGZsYWdzKQ0KPiArew0KPiArICAgIHJl
dHVybiBhdl9tYXBfYWRkKHMsIGtleSwgc3RybGVuKGtleSkrMSwgdmFsdWUsIHN0cmxlbih2YWx1
ZSkrMSwgZmxhZ3MpOw0KPiArfQ0KPiArDQo+ICtpbnQgYXZfbWFwX2RlbChBVk1hcCAqcywgY29u
c3QgY2hhciAqa2V5dmFsdWUsIGludCBmbGFncykNCj4gK3sNCj4gKyAgICB1aW50OF90ICpvbGRf
a2V5dmFsdWU7DQo+ICsgICAgQVZUcmVlTm9kZSAqbmV4dCA9IE5VTEw7DQo+ICsgICAgQVZNYXBD
b21wYXJlRnVuYyBjbXAgPSBzLT5jbXBbZmxhZ3MgJiBDTVBfTUFTS107DQo+ICsNCj4gKyAgICBp
ZiAoY21wICE9IHMtPmNtcFswXSkgew0KPiArICAgICAgICAvLyBUaGUgdXNlciBhc2tzIHVzIHRv
IHJlbW92ZSBhIGVudHJ5IHdpdGggYSBjb21wYXJlIGZ1bmN0aW9uIGRpZmZlcmVudCBmcm9tIHRo
ZSBvbmUgdXNlZCB0byBidWlsZCB0aGUgbWFwDQo+ICsgICAgICAgIC8vIHdlIG5lZWQgdG8gZG8g
MiBjYWxscyBoZXJlLCBmaXJzdCB3aXRoIHRoZSB1c2VycyBjb21wYXJlIHRvIGZpbmQgdGhlIGVu
dHJ5IHNoZSB3YW50cyB0byByZW1vdmUNCj4gKyAgICAgICAgLy8gYW5kIHRoZW4gdG8gcmVtb3Zl
IGl0IHdoaWxlIG1haW50YWluaW5nIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGhpbiB0aGUgbWFwDQo+
ICsgICAgICAgIG9sZF9rZXl2YWx1ZSA9IGF2X3RyZWVfZmluZDIocy0+dHJlZV9yb290LCBrZXl2
YWx1ZSwgY21wLCBOVUxMLCAwKTsNCj4gKyAgICAgICAgaWYgKCFvbGRfa2V5dmFsdWUpDQo+ICsg
ICAgICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArICAgICAgICBhdl90cmVlX2luc2VydCgmcy0+
dHJlZV9yb290LCBvbGRfa2V5dmFsdWUsIHMtPmNtcFswXSwgJm5leHQpOw0KPiArICAgICAgICBh
dl9hc3NlcnQyKG5leHQpOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIGF2X3RyZWVfaW5z
ZXJ0KCZzLT50cmVlX3Jvb3QsIChjaGFyKilrZXl2YWx1ZSwgcy0+Y21wWzBdLCAmbmV4dCk7DQo+
ICsgICAgICAgIGlmICghbmV4dCkNCj4gKyAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICAg
ICBvbGRfa2V5dmFsdWUgPSBuZXh0LT5lbGVtOyAvL1RPRE8gYWRkIGEgQVBJIHRvIGF2X3RyZWUo
KSB0byByZXR1cm4gdGhlIGVsZW0gb2YgYSBBVlRyZWVOb2RlDQo+ICsNCj4gKyAgICB9DQo+ICsg
ICAgQVZNYXBJbnRlcm5hbEVudHJ5ICppbnRlcm5hbF9lbnRyeSA9IGtleXZhbHVlMmludGVybmFs
KG9sZF9rZXl2YWx1ZSk7DQo+ICsgICAgaW50ZXJuYWxfZW50cnktPm1hcF9lbnRyeS5rZXkgPSAm
ZGVsZXRlZF9lbnRyeTsNCj4gKw0KPiArICAgIHMtPmNvdW50LS07DQo+ICsgICAgcy0+ZGVsZXRl
ZCsrOw0KPiArDQo+ICsgICAgaWYgKChmbGFncyAmIEFWX01BUF9BTExPV19SRUJVSUxEKSAmJiBz
LT5kZWxldGVkID4gcy0+Y291bnQpIHsNCj4gKyAgICAgICAgQVZNYXAgKm5ld3MgPSBhdl9tYXBf
bmV3KHMtPmNtcFswXSwgQVZfTUFQX0NNUF9LRVlWQUxVRSArIEFWX01BUF9DTVBfTk9OX1RSVU5D
QVRFRCwgcy0+Y29weSwgcy0+ZnJlZWYpOw0KPiArICAgICAgICBpZihuZXdzKSB7DQo+ICsgICAg
ICAgICAgICBtZW1jcHkobmV3cy0+Y21wLCBzLT5jbXAsIHNpemVvZihuZXdzLT5jbXApKTsNCj4g
KyAgICAgICAgICAgIGludCByZXQgPSBhdl9tYXBfY29weShuZXdzLCBzKTsNCj4gKyAgICAgICAg
ICAgIGlmIChyZXQgPCAwKSB7DQo+ICsgICAgICAgICAgICAgICAgYXZfbWFwX2ZyZWUoJm5ld3Mp
Ow0KPiArICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICBpZiAocy0+ZnJl
ZWYpDQo+ICsgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLT5jb3VudDsgaSsr
KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZnJlZWYoJnMtPmludGVybmFsX2VudHJp
ZXNbaV0ubWFwX2VudHJ5KTsNCj4gKyAgICAgICAgICAgICAgICBhdl9mcmVlcCgmcy0+aW50ZXJu
YWxfZW50cmllcyk7DQo+ICsgICAgICAgICAgICAgICAgbWVtY3B5KHMsIG5ld3MsIHNpemVvZigq
cykpOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsg
ICAgcmV0dXJuIDE7DQo+ICt9DQo+ICsNCj4gK2NvbnN0IEFWTWFwRW50cnkgKmF2X21hcF9pdGVy
YXRlKGNvbnN0IEFWTWFwICpzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQVZNYXBFbnRyeSAqcHJldikNCj4gK3sNCj4gKyAgICBBVk1hcEludGVybmFsRW50cnkg
Kkk7DQo+ICsgICAgaWYgKHByZXYpIHsNCj4gKyAgICAgICAgSSA9IChBVk1hcEludGVybmFsRW50
cnkqKSgodWludDhfdCopcHJldiAtIG9mZnNldG9mKEFWTWFwSW50ZXJuYWxFbnRyeSwgbWFwX2Vu
dHJ5KSk7DQo+ICsgICAgICAgIEkgKz0gaW50ZXJuYWxfZW50cnlfbGVuKEkpOw0KPiArICAgIH0g
ZWxzZSB7DQo+ICsgICAgICAgIEkgPSBzLT5pbnRlcm5hbF9lbnRyaWVzOw0KPiArICAgIH0NCj4g
KyAgICB3aGlsZSAoSSA8IHMtPmludGVybmFsX2VudHJpZXMgKyBzLT5uZXh0ICYmIEktPm1hcF9l
bnRyeS5rZXkgPT0gJmRlbGV0ZWRfZW50cnkpDQo+ICsgICAgICAgIEkgKz0gaW50ZXJuYWxfZW50
cnlfbGVuKEkpOw0KPiArDQo+ICsgICAgaWYgKEkgPT0gcy0+aW50ZXJuYWxfZW50cmllcyArIHMt
Pm5leHQpDQo+ICsgICAgICAgIHJldHVybiBOVUxMOw0KPiArDQo+ICsgICAgcmV0dXJuICZJLT5t
YXBfZW50cnk7DQo+ICt9DQo+ICsNCj4gK2ludCBhdl9tYXBfY291bnQoY29uc3QgQVZNYXAgKnMp
DQo+ICt7DQo+ICsgICAgcmV0dXJuIHMtPmNvdW50Ow0KPiArfQ0KPiArDQo+ICt2b2lkIGF2X21h
cF9mcmVlKEFWTWFwICoqc3ApDQo+ICt7DQo+ICsgICAgQVZNYXAgKnMgPSAqc3A7DQo+ICsNCj4g
KyAgICBmb3IgKGludCBpPTA7IGk8cy0+Y291bnQ7IGkrKykgew0KPiArICAgICAgICBpZiAocy0+
ZnJlZWYpDQo+ICsgICAgICAgICAgICBzLT5mcmVlZigmcy0+aW50ZXJuYWxfZW50cmllc1tpXS5t
YXBfZW50cnkpOw0KPiArICAgIH0NCj4gKyAgICBhdl9mcmVlcCgmcy0+aW50ZXJuYWxfZW50cmll
cyk7DQo+ICsgICAgcy0+bmV4dCA9DQo+ICsgICAgcy0+aW50ZXJuYWxfZW50cmllc19sZW4gPQ0K
PiArICAgIHMtPmNvdW50ID0gMDsNCj4gKyAgICBhdl9mcmVlcChzcCk7DQo+ICt9DQo+ICsNCj4g
K2ludCBhdl9tYXBfY29weShBVk1hcCAqZHN0LCBjb25zdCBBVk1hcCAqc3JjKQ0KPiArew0KPiAr
ICAgIGNvbnN0IEFWTWFwRW50cnkgKnQgPSBOVUxMOw0KPiArICAgIEFWTWFwICpiYWsgPSBhdl9t
ZW1kdXAoZHN0LCBzaXplb2YoKmRzdCkpOw0KPiArICAgIGlmICghYmFrKQ0KPiArICAgICAgICBy
ZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KPiArDQo+ICsgICAgQVZNYXBJbnRlcm5hbEVudHJ5ICpu
ZXdfaW50ZXJuYWxfZW50cmllcyA9IGF2X21lbWR1cChiYWstPmludGVybmFsX2VudHJpZXMsIGJh
ay0+aW50ZXJuYWxfZW50cmllc19sZW4pOw0KPiArICAgIEFWTWFwSW50ZXJuYWxFbnRyeSAqb2xk
X2ludGVybmFsX2VudHJpZXMgPSBkc3QtPmludGVybmFsX2VudHJpZXM7DQoNCldlIGRvbid0IGFs
bG93IG1peGVkIGRlbGNhcmF0aW9ucyBhbmQgc3RhdGVtZW50cy4gSG9pc3QgdGhlIGRlZmludGlv
biANCmFib3ZlIGlmICghYmFrKSBhbmQgdGhlbiBwdXQgdGhlIGFzc2lnbm1lbnQgYmVsb3cgaXQu
DQoNCj4gKw0KPiArICAgIHdoaWxlICgodCA9IGF2X21hcF9pdGVyYXRlKHNyYywgdCkpKSB7DQo+
ICsgICAgICAgIGludCByZXQgPSBhdl9tYXBfYWRkKGRzdCwgdC0+a2V5LCB0LT5rZXlsZW4sIHQt
PnZhbHVlLCB0LT52YWx1ZWxlbiwgMCk7DQo+ICsNCj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsN
Cj4gKyAgICAgICAgICAgIHVwZGF0ZV9wb2ludGVycyhiYWssIG5ld19pbnRlcm5hbF9lbnRyaWVz
LCBvbGRfaW50ZXJuYWxfZW50cmllcyk7DQo+ICsgICAgICAgICAgICBhdl9mcmVlKGRzdC0+aW50
ZXJuYWxfZW50cmllcyk7DQo+ICsgICAgICAgICAgICBtZW1jcHkoZHN0LCBiYWssIHNpemVvZigq
ZHN0KSk7DQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Ow0KDQpZb3UgbGVhayBiYWsgaGVyZS4g
UG9zc2libHkgbmV3X2ludGVybmFsX2VudHJpZXMgYXMgd2VsbC4NCg0KDQo+ICsgICAgICAgIH0N
Cj4gKyAgICB9DQo+ICsNCj4gKyAgICBhdl9mcmVlcCgmbmV3X2ludGVybmFsX2VudHJpZXMpOw0K
PiArICAgIGF2X2ZyZWUoYmFrKTsNCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+
ICtBVk1hcCAqYXZfbWFwX2Nsb25lKEFWTWFwICpzKQ0KPiArew0KPiArICAgIEFWTWFwICpkc3Qg
PSBhdl9tZW1kdXAocywgc2l6ZW9mKEFWTWFwKSk7DQo+ICsNCj4gKyAgICBpZiAoIWRzdCkNCj4g
KyAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsNCj4gKyAgICBkc3QtPmludGVybmFsX2VudHJpZXMg
PSBhdl9tZW1kdXAocy0+aW50ZXJuYWxfZW50cmllcywgcy0+aW50ZXJuYWxfZW50cmllc19sZW4p
Ow0KPiArDQo+ICsgICAgaWYgKCFkc3QtPmludGVybmFsX2VudHJpZXMpDQo+ICsgICAgICAgIGdv
dG8gZXJyOw0KPiArDQo+ICsgICAgdXBkYXRlX3BvaW50ZXJzKGRzdCwgZHN0LT5pbnRlcm5hbF9l
bnRyaWVzLCBzLT5pbnRlcm5hbF9lbnRyaWVzKTsNCj4gKw0KPiArICAgIHJldHVybiBkc3Q7DQo+
ICtlcnI6DQo+ICsgICAgaWYgKGRzdCkgew0KPiArICAgICAgICBhdl9mcmVlcCgmZHN0LT5pbnRl
cm5hbF9lbnRyaWVzKTsNCj4gKyAgICB9DQoNCg0KQ29kZSBzdHlsZTogcmVtb3ZlIHt9DQoNCj4g
KyAgICBhdl9mcmVlKGRzdCk7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICt9DQo+IGRpZmYgLS1n
aXQgYS9saWJhdnV0aWwvbWFwLmggYi9saWJhdnV0aWwvbWFwLmgNCj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjAzNTcyOTYwMzA2DQo+IC0tLSAvZGV2L251bGwN
Cj4gKysrIGIvbGliYXZ1dGlsL21hcC5oDQo+IEBAIC0wLDAgKzEsMjcwIEBADQo+ICsvKg0KPiAr
ICogQ29weXJpZ2h0IChjKSAyMDI1IE1pY2hhZWwgTmllZGVybWF5ZXINCj4gKyAqDQo+ICsgKiBU
aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQo+ICsgKg0KPiArICogRkZtcGVnIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiArICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KPiArICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyDQo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyAqDQo+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4gKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ICsgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQ0KPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4NCj4gKyAqDQo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt
cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQo+ICsgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw
LTEzMDEgVVNBDQo+ICsgKi8NCj4gKw0KPiArLyoqDQo+ICsgKiBAZmlsZQ0KPiArICogUHVibGlj
IG1hcCBBUEkuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBBVlVUSUxfTUFQX0gNCj4gKyNkZWZp
bmUgQVZVVElMX01BUF9IDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKw0KPiArI2lu
Y2x1ZGUgInRyZWUuaCINCj4gKw0KPiArLyoqDQo+ICsgKiBjb21wYXJlZCB0byBBVkRpY3Rpb25h
cnkgdGhpcyBoYXMNCj4gKyAqIGNsb25lIGlzIE8obikgaW5zdGVhZCBvZiBPKG7CsikNCj4gKyAq
IGNvcHkgaXMgTyhuKmxvZyBuKSBpbnN0ZWFkIG9mIE8obsKyKQ0KPiArICogTyhsb2cgbikgbWFs
bG9jKCkgY2FsbHMgYnkgZGVmYXVsdCBhbmQgTygxKSBpZiBhdl9tYXBfcmVhbGxvYygpIGlzIHVz
ZWQgaW5zdGVhZCBvZiBPKG4pDQo+ICsgKiBnZXQvYWRkL2RlbGV0ZSBpcyBPKGxvZyBuKQ0KPiAr
ICoNCj4gKyAqIFlvdSBjYW4gYWRkIChpZiBtZW1vcnkgaXMgcmVhbGxvY2VkIGJlZm9yZSkgYW5k
IHJlbW92ZSBlbnRyaWVzIHdoaWxlIGEgaXRlcmF0b3Igc3RheXMgdmFsaWQNCj4gKyAqIGNvcHkg
aXMgYXRvbWljLCBhIGZhaWx1cmUgbWVhbnMgdGhlIGRzdCBpcyB1bmNoYW5nZWQNCj4gKyAqDQo+
ICsgKiB0aGVyZSBhcmUgcmVzdHJpY3Rpb25zIG9uIHdoYXQgY29tcGFyZSBmdW5jdGlvbiBjYW4g
YmUgdXNlZCBvbiBnZXQgZGVwZW5kaW5nIG9uIGhvdyB0aGUgTWFwIHdhcyBjcmVhdGVkDQo+ICsg
KiB5b3UgY2FuIG1peCBjYXNlIHNlbnNpdGl2ZSBhbmQgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJl
IHdpdGggYXZfbWFwX3N1cGVyY21wXyoNCj4gKyAqIFN1cHBvcnRzIGJpbmFyeSBvYmplY3RzLCBu
b3QganVzdCBzdHJpbmdzDQo+ICsgKi8NCj4gKw0KPiArZW51bSB7DQo+ICsvL3VzZSArIG5vdCB8
IHRvIGNvbWJpbmUgdGhlc2UgZmxhZ3MNCj4gKyAgICBBVl9NQVBfQ01QX0NBU0VfU0VOU0lUSVZF
ICAgPSAxLA0KPiArICAgIEFWX01BUF9DTVBfQ0FTRV9JTlNFTlNJVElWRSA9IDIsDQo+ICsgICAg
QVZfTUFQX0NNUF9LRVkgICAgICAgICAgICAgID0gMywNCj4gKyAgICBBVl9NQVBfQ01QX0tFWVZB
TFVFICAgICAgICAgPSA2LA0KPiArICAgIEFWX01BUF9DTVBfVFJVTkNBVEVEICAgICAgICA9IDks
DQo+ICsgICAgQVZfTUFQX0NNUF9OT05fVFJVTkNBVEVEICAgID0gMTgsDQo+ICsNCj4gKyAgICBB
Vl9NQVBfQUxMT1dfUkVCVUlMRCAgICAgICAgPSAyNTYsICAgLy8vPCB3aGVuIHJlbW92aW5nIGVu
dHJpZXMgcmVidWlsZCB0aGUgbWFwIHRvIHJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24sIG5vdGUs
IHRoaXMgaW52YWxpZGF0ZXMgcHJldmlvdXNseSByZXRyaWV2ZWQgZWxlbWVudHMgYW5kIGl0ZXJh
dGUgc3RhdGUuDQo+ICsgICAgQVZfTUFQX1JFUExBQ0UgICAgICAgICAgICAgID0gNTEyLCAgIC8v
LzwgcmVwbGFjZSBrZXl2YWx1ZSBpZiBhbHJlYWR5IGluIHRoZSBtYXANCj4gKw0KPiArfTsNCj4g
Kw0KPiArdHlwZWRlZiBzdHJ1Y3QgQVZNYXBFbnRyeSB7DQo+ICsgICAgdWludDhfdCAqa2V5Ow0K
PiArICAgIHVpbnQ4X3QgKnZhbHVlOw0KDQpBbnkgcGFydGljdWxhciByZWFzb24gdG8gdXNlIHVu
c2lnbmVkIGNoYXIgaGVyZSByYXRoZXIgdGhhbiBqdXN0IGNoYXIgDQp3aGVuIHdvcmtpbmcgd2l0
aCBzdHJpbmdzPyBNb3N0IHN0cmluZyBzdHVmZiBleHBlY3RzIHNpZ25lZCBjaGFyLg0KDQo+ICsg
ICAgaW50IGtleWxlbjsNCj4gKyAgICBpbnQgdmFsdWVsZW47DQoNCnNpemVfdCBmb3IgbGVuZ3Ro
cw0KDQo+ICt9IEFWTWFwRW50cnk7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IEFWTWFwIEFWTWFw
Ow0KPiArdHlwZWRlZiB2b2lkICgqIEFWTWFwRnJlZUZ1bmMpKEFWTWFwRW50cnkgKmMpOw0KPiAr
dHlwZWRlZiB2b2lkICgqIEFWTWFwQ29weUZ1bmMpKEFWTWFwRW50cnkgKmRzdCwgY29uc3QgQVZN
YXBFbnRyeSAqc3JjLCBzaXplX3QgbGVuKTsNCj4gK3R5cGVkZWYgaW50ICAoKiBBVk1hcENvbXBh
cmVGdW5jKShjb25zdCB2b2lkICprZXl2YWx1ZSwgY29uc3Qgdm9pZCAqYik7DQo+ICsNCj4gKy8q
Kg0KPiArICogbGlrZSBzdHJjbXAoKSBidXQgY29tcGFyZXMgY29uY2F0ZW5hdGVkIGtleXZhbHVl
cy4NCj4gKyAqDQo+ICsgKiBBIG1hcCBpbml0aWFsaXplZCB3aXRoIHRoaXMgd2lsbCBhbGxvdyBk
dXBsaWNhdGUga2V5cyBhcyBsb25nIGFzIHRoZWlyIHZhbHVlcyBkaWZmZXIuDQo+ICsgKi8NCj4g
K2ludCBhdl9tYXBfc3RyY21wX2tleXZhbHVlKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIp
Ow0KPiArDQo+ICsvKioNCj4gKyAqIGxpa2UgYXZfbWFwX3N0cmNtcF9rZXl2YWx1ZSgpIGJ1dCBp
cyBjb21wYXRpYmxlIHdpdGggYXZfc3RyY2FzZWNtcCgpIGFuZCBhdl9tYXBfc3VwZXJjbXBfa2V5
Lg0KPiArICoNCj4gKyAqIEEgbWFwIGluaXRpYWxpemVkIHdpdGggdGhpcyB3aWxsIGFsbG93IGR1
cGxpY2F0ZSBrZXlzIGFzIGxvbmcgYXMgdGhlaXIgdmFsdWVzIGRpZmZlci4NCj4gKyAqLw0KPiAr
aW50IGF2X21hcF9zdXBlcmNtcF9rZXl2YWx1ZShjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpi
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBsaWtlIHN0cmNtcCgpIGJ1dCBpcyBjb21wYXRpYmxlIHdp
dGggYXZfc3RyY2FzZWNtcCgpLg0KPiArICoNCj4gKyAqIEEgbWFwIGluaXRpYWxpemVkIHdpdGgg
dGhpcyB3aWxsIG5vdCBhbGxvdyBkdXBsaWNhdGUga2V5cy4NCj4gKyAqLw0KPiAraW50IGF2X21h
cF9zdXBlcmNtcF9rZXkoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYik7DQoNCg0KSSBkb24n
dCBiZWxpZXZlIGl0J3MgY2xlYXIgaWYgYW5kIHdoZW4gYSB1c2VyIHNob3VsZCBjYWxsIHRoZXNl
IA0KZnVuY3Rpb25zIG9yIHNpbXBseSBwYXNzIHRoZW0gYnkgYWRkcmVzcy4gSWYgc28sIHdlIHNo
b3VsZCB1c2UgdGhlIA0KdHlwZWRlZiwgb3IgYXQgbGVhc3QgcmVmZXJlbmNlIGl0IGluIHRoZSBk
b2MgY29tbWVudC4NCg0KPiArDQo+ICsNCj4gKy8qKg0KPiArICoNCj4gKyAqIEBwYXJhbSBrZXl2
YWx1ZV9jbXAgY29tcGFyZSBmdW5jdGlvbiwgd2lsbCBiZSBwYXNzZWQgdGhlIGtleSArIHZhbHVl
IGNvbmNhdGVuYXRlZC4NCj4gKyAqICAgICAgICAgICAgICAgICAgICAgaXQgc2hvdWxkIGZvcm0g
YSBzdHJpY3QgdG90YWwgb3JkZXIgb24gYWxsIGVsZW1lbnRzIHlvdSB3YW50IHRvIHN0b3JlLiBl
YWNoIGtleS12YWx1ZSBwYWlyDQo+ICsgKiAgICAgICAgICAgICAgICAgICAgIGNhbiBvbmx5IG9j
Y3VyIG9uY2UuIFRob3VnaCB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2Ft
ZSBrZXkuIElGIHRoaXMgZnVuY3Rpb24NCj4gKyAqICAgICAgICAgICAgICAgICAgICAgdHJlYXRz
IHRoZW0gYXMgZGlmZmVyZW50Lg0KPiArICoNCj4gKyAqICAgICAgICAgICAgICAgICAgICAgaWYg
dGhlIGtleXZhbHVlX2NtcCBpcyBpbmNvbnNpc3RhbnQsIGZvciBleGFtcGxlIGEgPCBiICYmIGIg
PCBhLCByZWFkaW5nIG1heSBzdGlsbCB3b3JrIGFzIGxvbmcNCj4gKyAqICAgICAgICAgICAgICAg
ICAgICAgYXMgdGhlIGZ1bmN0aW9uIGxhdGVyIHVzZWQgZm9yIHJlYWRpbmcgdHJlYXRzIGFsbCBl
bGVtZW50cyBpbiB0aGUgaW5jb25zaXN0YW50IHN1YnNldCBhcw0KPiArICogICAgICAgICAgICAg
ICAgICAgICBlcXVhbCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgb3IgcmVjb21tYW5kZWQgYnV0IHJh
dGhlciBkb2N1bWVudGVkIGZvciBjb21wbGV0ZW5lc3MuIERlbGV0aW5nDQo+ICsgKiAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnRzIG9mIHN1Y2ggaW5jb25zaXN0YW50IHN1YnNldHMgc2hvdWxk
IG5vdCBiZSBleHBlY3RlZCB0byB3b3JrLg0KPiArICoNCj4gKyAqIEBwYXJhbSBmcmVlZiByZWNl
aXZlcyBhIEFWTWFwRW50cnkgYW5kIHNob3VsZCBmcmVlIGFueSByZXNvdXJjZXMgZXhjZXB0IHRo
ZSBBVk1hcEVudHJ5LT5rZXkvdmFsdWUgcG9pbnRlciBpdHNlbGYNCj4gKyAqICAgICAgICAgICAg
ICBmb3IgZmxhdCBzdHJ1Y3RzIGxpa2Ugc3RyaW5ncywgdGhpcyBpcyBzaW1wbHkgTlVMTA0KPiAr
ICoNCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgIFZhbHVlICAgY29tcGFp
YmlsaXR5DQo+ICsgKiBhdl9tYXBfc3VwZXJjbXBfa2V5dmFsdWUgWCE9eCAgICBYIT14ICAgIGF2
X21hcF9zdXBlcmNtcF9rZXksIGF2X3N0cmNhc2VjbXAsICh0cnVjYXRlZCBhdl9zdHJjYXNlY21w
KQ0KPiArICogYXZfbWFwX3N1cGVyY21wX2tleSAgICAgIFghPXggICAgICAgICAgICBhdl9zdHJj
YXNlY21wLCAodHJ1Y2F0ZWQgYXZfc3RyY2FzZWNtcCkNCj4gKyAqIGF2X3N0cmNhc2VjbXAgICAg
ICAgICAgICBYPT14ICAgICAgICAgICAgdHJ1bmNhdGlvbg0KPiArICoNCj4gKyAqIGF2X21hcF9z
dHJjbXBfa2V5dmFsdWUgICBYIT14ICAgIFghPXggICAgc3RyY21wLCB0cnVuY2F0aW9uDQo+ICsg
KiBzdHJjbXAgICAgICAgICAgICAgICAgICAgWCE9eCAgICAgICAgICAgIHRydW5jYXRpb24NCj4g
KyAqDQo+ICsgKg0KPiArICovDQo+ICtBVk1hcCAqYXZfbWFwX25ldyhBVk1hcENvbXBhcmVGdW5j
IGtleXZhbHVlX2NtcCwgaW50IGNtcF9mbGFncywgQVZNYXBDb3B5RnVuYyBjbG9uZSwgQVZNYXBG
cmVlRnVuYyBmcmVlZik7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgKiBBZGQgYSBjb21wYXRpYmxl
IGNvbXBhcmUgZnVuY3Rpb24gdG8gdGhlIG1hcC4NCj4gKyAqIFRoZSBmdW5jdGlvbiB3aWxsIGxh
dGVyIGJlIHNlbGVjdGVkIGJ5IHVzaW5nIEFWX01BUF9DTVBfKiBmbGFncw0KPiArICoNCj4gKyAq
IEZ1bmN0aW9ucyBtdXN0IGJlIGFkZGVkIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCBzcGVj
aWZpYywgdGhhdCBpcyBpZiBhIEFWTWFwIGlzIGJ1aWxkDQo+ICsgKiB3aXRoIGEgY2FzZSBpbnNl
bnNpdGl2ZSBjb21wYXJlIG5vIGNhc2Ugc2Vuc2l0aXZlIGNvbXBhcmUgZnVuY3Rpb25zIGNhbiBi
ZSBhZGRlZC4gVGhpcyBpcw0KPiArICogdG8gYXZvaWQgYnVpbGRpbmcgbm9uIGZ1bmN0aW9uYWwg
QVZNYXBzLg0KPiArICoNCj4gKyAqDQo+ICsgKiBAc2VlIGF2X21hcF9uZXcNCj4gKyAqDQo+ICsg
KiBAcGFyYW0gY21wIGNvbXBhcmUgZnVuY3Rpb24gdG8gYmUgYWRkZWQuDQo+ICsgKiAgICAgICAg
ICAgIGNtcChhLGIpIG11c3QgcmV0dXJuIDAgb3IgYmUgZXF1YWwgdG8gdGhlIHByZXZpb3VzbHkg
YWRkZWQgY29tcGFyZSBmdW5jdGlvbiBmb3IgKGEsYiksIGlmIGl0IHJldHVybnMgMCBpdCBhbHNv
IG11c3QgZG8gc28gZm9yIGFsbA0KPiArICogICAgICAgICAgICBlbGVtZW50cyBiZXR3ZWVuIGEg
YW5kIGINCj4gKyAqDQo+ICsgKiBAcGFyYW0gY21wX2ZsYWdzIGEgY29tYmluYXRpb24gb2YgQVZf
TUFQX0NNUF8qLCBub3RlIGtleS9rZXl2YWx1ZSBhbmQgdHJ1bmNhdGVkIHZzIG5vbiB0cnVuY2F0
ZWQNCj4gKyAqICAgICAgICAgICAgICAgICAgYXJlIG1hbmRhdG9yeSB0byBiZSBzcGVjaWZpZWQN
Cj4gKyAqDQo+ICsgKiBAcmV0dXJuIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiB0aGUgY21wX2Zs
YWdzIGFyZSBpbGxlZ2FsIG9yIHVuc3VwcG9ydGVkIGZvciB0aGlzIEFWTWFwDQo+ICsgKiAgICAg
ICAgIElmIHlvdSBrbm93IHlvdXIgZmxhZ3MgYXJlIHZhbGlkLCB0aGVuIHlvdSBkb250IG5lZWQg
dG8gY2hlY2sgdGhlIHJldHVybg0KPiArICovDQo+ICtpbnQgYXZfbWFwX2FkZF9jbXBfZnVuYyhB
Vk1hcCAqbSwgQVZNYXBDb21wYXJlRnVuYyBjbXAsIGludCBjbXBfZmxhZ3MpOw0KPiArDQo+ICsv
KioNCj4gKyAqDQo+ICsgKiBAcmV0dXJuIDEgaWYgdGhlIHByb3ZpZGVkIEFWX01BUF9DTVBfKiBm
bGFnIGNvbWJpbmF0aW9uIGlzIHN1cHBvcnRlZCBieSB0aGlzIG1hcC4NCj4gKyAqICAgICAgICAg
MCBvdGhlcndpc2UNCj4gKyAqLw0KPiAraW50IGF2X21hcF9pc19jbXBfZmxhZ3Nfc3VwcG9ydGVk
KEFWTWFwICptLCBpbnQgY21wX2ZsYWdzKTsNCj4gKw0KPiArLyoqDQo+ICsgKiByZWFsbG9jIGlu
dGVybmFsIHNwYWNlIHRvIGFjY29tb2RhdGUgdGhlIHNwZWNpZmllZCBuZXcgZWxlbWVudHMNCj4g
KyAqDQo+ICsgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIHJlcGVhdGVkIG1lbW9yeSByZWFs
bG9jYXRpb24uDQo+ICsgKg0KPiArICogQHBhcmFtIGV4dHJhX2VsZW1lbnRzIG51bWJlciBvZiBu
ZXcgZWxlbWVudHMgdG8gYmUgYWRkZWQNCj4gKyAqIEBwYXJhbSBleHRyYV9zcGFjZSAgICBzdW0g
b2Yga2V5bGVuIGFuZCB2YWx1ZWxlbiBvZiBhbGwgdG8gYmUgYWRkZWQgZWxlbWVudHMNCj4gKyAq
DQo+ICsgKiBAcmV0dXJuICAgICAgICAgIDwwIG9uIGVycm9yDQo+ICsgKi8NCj4gK2ludCBhdl9t
YXBfcmVhbGxvYyhBVk1hcCAqcywgaW50IGV4dHJhX2VsZW1lbnRzLCBpbnQgZXh0cmFfc3BhY2Up
Ow0KPiArDQo+ICsvKioNCj4gKyAqIEFkZCB0aGUgZ2l2ZW4gZW50cnkgaW50byBhIEFWTWFwLg0K
PiArICoNCj4gKyAqIEBwYXJhbSBzICAgICAgICAgUG9pbnRlciBBVk1hcCBzdHJ1Y3QuDQo+ICsg
KiBAcGFyYW0gdmFsdWUgICAgIEVudHJ5IHZhbHVlIHRvIGFkZCB0byAqcw0KPiArICogQHBhcmFt
IHZhbHVlbGVuICBsZW5ndGggb2YgdmFsdWUNCj4gKyAqIEBwYXJhbSBmbGFncyAgICAgMCwgQVZf
TUFQX0FMTE9XX1JFQlVJTEQsIEFWX01BUF9SRVBMQUNFDQo+ICsgKg0KPiArICogQHJldHVybiAg
ICAgICAgICAxIGlmIHRoZSBlbnRyeSB3YXMgYWRkZWQsIDAgaWYgaXQgd2FzIGFscmVhZHkgaW4g
dGhlIG1hcCwgMiBpZiBpdCB3YXMgcmVwbGFjZWQNCj4gKyAqICAgICAgICAgICAgICAgICAgb3Ro
ZXJ3aXNlIGFuIGVycm9yIGNvZGUgPDANCj4gKyAqLw0KPiAraW50IGF2X21hcF9hZGQoQVZNYXAg
KnMsIGNvbnN0IGNoYXIgKmtleSwgaW50IGtleWxlbiwgY29uc3QgY2hhciAqdmFsdWUsIGludCB2
YWx1ZWxlbiwgaW50IGZsYWdzKTsNCj4gK2ludCBhdl9tYXBfYWRkX3N0cmluZ3MoQVZNYXAgKnMs
IGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUsIGludCBmbGFncyk7DQo+ICsNCj4g
Ky8qKg0KPiArICogRGVsZXRlIHRoZSBnaXZlbiBlbnRyeSBmcm9tIGEgQVZNYXAuDQo+ICsgKg0K
PiArICogQHBhcmFtIHMgICAgICAgICBQb2ludGVyIEFWTWFwIHN0cnVjdC4NCj4gKyAqIEBwYXJh
bSBrZXl2YWx1ZSAga2V5IG9yIGNvbmNhdGVuYXRlZCBrZXkrdmFsdWUNCj4gKyAqIEBwYXJhbSBm
bGFncyAgICAgQVZfTUFQX0FMTE9XX1JFQlVJTEQgb3IgMA0KPiArICoNCj4gKyAqIEByZXR1cm4g
ICAgICAgICAgMSBpZiB0aGUgZW50cnkgd2FzIGRlbGV0ZWQsIDAgaWYgaXQgd2FzIG5vdCBmb3Vu
ZCBpbiB0aGUgbWFwDQo+ICsgKiAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBhbiBlcnJvciBj
b2RlIDwwDQo+ICsgKi8NCj4gK2ludCBhdl9tYXBfZGVsKEFWTWFwICpzLCBjb25zdCBjaGFyICpr
ZXl2YWx1ZSwgaW50IGZsYWdzKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBJdGVyYXRlIG92ZXIgcG9z
c2libHkgbXVsdGlwbGUgbWF0Y2hpbmcgbWFwIGVudHJpZXMuDQo+ICsgKg0KPiArICogVGhlIHJl
dHVybmVkIGVudHJ5IG11c3Qgbm90IGJlIGNoYW5nZWQsIG9yIGl0IHdpbGwNCj4gKyAqIGNhdXNl
IHVuZGVmaW5lZCBiZWhhdmlvci4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gcHJldiAgU2V0IHRvIHRo
ZSBwcmV2aW91cyBtYXRjaGluZyBlbGVtZW50IHRvIGZpbmQgdGhlIG5leHQuDQo+ICsgKiAgICAg
ICAgICAgICAgSWYgc2V0IHRvIE5VTEwgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQgaXMgcmV0
dXJuZWQuDQo+ICsgKiBAcGFyYW0ga2V5dmFsdWUgTWF0Y2hpbmcga2V5IG9yIGtleSArIHZhbHVl
DQo+ICsgKg0KPiArICogQHJldHVybiAgICAgIEZvdW5kIGVudHJ5IG9yIE5VTEwgaW4gY2FzZSBu
byBtYXRjaGluZyBlbnRyeSB3YXMgZm91bmQgaW4gdGhlIGRpY3Rpb25hcnkNCj4gKyAqLw0KPiAr
Y29uc3QgQVZNYXBFbnRyeSAqYXZfbWFwX2dldF9tdWx0aXBsZShjb25zdCBBVk1hcCAqcywgY29u
c3QgQVZNYXBFbnRyeSAqcHJldiwgY29uc3QgY2hhciAqa2V5dmFsdWUsIGludCBmbGFncyk7DQo+
ICsNCj4gKy8qKg0KPiArICogTGlrZSBhdl9tYXBfZ2V0X211bHRpcGxlKCkgYnV0IG9ubHkgcmV0
dXJucyBvbmUgbWF0Y2hpbmcgZW50cnkNCj4gKyAqDQo+ICsgKiBUaGUgcmV0dXJuZWQgZW50cnkg
Y2Fubm90IGJlIHVzZWQgYXMgaW5pdGlhbCBwcmV2IGVudHJ5IGZvciBhdl9tYXBfZ2V0X211bHRp
cGxlKCkNCj4gKyAqLw0KPiArY29uc3QgQVZNYXBFbnRyeSAqYXZfbWFwX2dldChjb25zdCBBVk1h
cCAqcywgY29uc3QgY2hhciAqa2V5dmFsdWUsIGludCBmbGFncyk7DQo+ICsNCj4gKy8qKg0KPiAr
ICogSXRlcmF0ZSBvdmVyIGEgbWFwDQo+ICsgKg0KPiArICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwg
ZW50cmllcyBpbiB0aGUgbWFwLg0KPiArICoNCj4gKyAqIEB3YXJuaW5nIElmIHlvdSBjYWxsIGFu
eSBmdW5jdGlvbiB3aXRoIEFWX1NFVF9BTExPV19SRUJVSUxEIHNldCwgdGhlbiB0aGUgaXRlcmF0
b3IgaXMNCj4gKyAqIGludmFsaWRhdGVkLCBhbmQgbXVzdCBub3QgYmUgdXNlZCBhbnltb3JlLiBP
dGhlcndpc2UgYXZfbWFwX2FkZCgpICh3aXRob3V0IHJlYWxsb2MpIGFuZCBhdl9tYXBfZGVsKCkN
Cj4gKyAqIGNhbiBzYWZ0ZWx5IGJlIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLg0KPiArICoNCj4g
KyAqIFR5cGljYWwgdXNhZ2U6DQo+ICsgKiBAY29kZQ0KPiArICogY29uc3QgQVZNYXBFbnRyeSAq
ZSA9IE5VTEw7DQo+ICsgKiB3aGlsZSAoKGUgPSBhdl9tYXBfaXRlcmF0ZShtLCBlKSkpIHsNCj4g
KyAqICAgICAvLyAuLi4NCj4gKyAqIH0NCj4gKyAqIEBlbmRjb2RlDQo+ICsgKg0KPiArICogQHBh
cmFtIHMgICAgIFRoZSBtYXAgdG8gaXRlcmF0ZSBvdmVyDQo+ICsgKiBAcGFyYW0gcHJldiAgUG9p
bnRlciB0byB0aGUgcHJldmlvdXMgQVZNYXBFbnRyeSwgTlVMTCBpbml0aWFsbHkNCj4gKyAqDQo+
ICsgKiBAcmV0dmFsIEFWTWFwRW50cnkqIFRoZSBuZXh0IGVsZW1lbnQgaW4gdGhlIG1hcA0KPiAr
ICogQHJldHZhbCBOVUxMICAgICAgICBObyBtb3JlIGVsZW1lbnRzIGluIHRoZSBtYXANCj4gKyAq
Lw0KPiArY29uc3QgQVZNYXBFbnRyeSAqYXZfbWFwX2l0ZXJhdGUoY29uc3QgQVZNYXAgKnMsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVk1hcEVudHJ5ICpwcmV2
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBHZXQgbnVtYmVyIG9mIGVudHJpZXMgaW4gbWFwLg0KPiAr
ICoNCj4gKyAqIEBwYXJhbSBzIG1hcA0KPiArICogQHJldHVybiAgbnVtYmVyIG9mIGVudHJpZXMg
aW4gbWFwDQo+ICsgKi8NCj4gK2ludCBhdl9tYXBfY291bnQoY29uc3QgQVZNYXAgKnMpOw0KPiAr
DQo+ICsvKioNCj4gKyAqIEZyZWUgYWxsIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBhbiBBVk1h
cCBzdHJ1Y3QNCj4gKyAqIGFuZCBhbGwgdmFsdWVzLg0KPiArICovDQo+ICt2b2lkIGF2X21hcF9m
cmVlKEFWTWFwICoqcyk7DQo+ICsNCj4gK0FWTWFwICphdl9tYXBfY2xvbmUoQVZNYXAgKnMpOw0K
PiArDQo+ICsvKioNCj4gKyAqIENvcHkgZW50cmllcyBmcm9tIG9uZSBBVk1hcCBzdHJ1Y3QgaW50
byBhbm90aGVyLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkc3QgICBQb2ludGVyIHRvIGEgcG9pbnRl
ciB0byBhIEFWTWFwIHN0cnVjdCB0byBjb3B5IGludG8uIElmICpkc3QgaXMgTlVMTCwNCj4gKyAq
ICAgICAgICAgICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGUgYSBzdHJ1Y3QgZm9yIHlv
dSBhbmQgcHV0IGl0IGluICpkc3QNCj4gKyAqIEBwYXJhbSBzcmMgICBQb2ludGVyIHRvIHRoZSBz
b3VyY2UgQVZNYXAgc3RydWN0IHRvIGNvcHkgaXRlbXMgZnJvbS4NCj4gKyAqIEBwYXJhbSBmbGFn
cyBGbGFncyB0byB1c2Ugd2hlbiBzZXR0aW5nIGVudHJpZXMgaW4gKmRzdA0KPiArICoNCj4gKyAq
IEBzZWUgd2hlbiB0aGUgaW5pdGlhbCBkc3QgbWFwIGlzIGVtcHR5IHVzZSBhdl9tYXBfY2xvbmUo
KSBhcyBpdHMgZmFzdGVyDQo+ICsgKg0KPiArICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0
aXZlIEFWRVJST1IgY29kZSBvbiBmYWlsdXJlLg0KPiArICovDQo+ICsNCj4gK2ludCBhdl9tYXBf
Y29weShBVk1hcCAqZHN0LCBjb25zdCBBVk1hcCAqc3JjKTsNCj4gKw0KPiArI2VuZGlmIC8qIEFW
VVRJTF9NQVBfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3Rlc3RzL21hcC5jIGIvbGli
YXZ1dGlsL3Rlc3RzL21hcC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw
MDAwMDAwLi43NzA1ZWIzMWE5NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2xpYmF2dXRpbC90
ZXN0cy9tYXAuYw0KPiBAQCAtMCwwICsxLDIyMSBAQA0KPiArLyoNCj4gKyAqIGNvcHlyaWdodCAo
YykgMjAyNSBNaWNoYWVsIE5pZWRlcm1heWVyDQo+ICsgKg0KPiArICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgRkZtcGVnLg0KPiArICoNCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4gKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KPiArICogdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uDQo+ICsgKg0KPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiArICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCj4gKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ICsgKg0K
PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYw0KPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KPiAr
ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gKyNpbmNsdWRlIDxzdGRpby5oPg0K
PiArDQo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiDQo+ICsjaW5jbHVkZSAibGli
YXZ1dGlsL2F2c3RyaW5nLmgiDQo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIg0KPiArI2lu
Y2x1ZGUgImxpYmF2dXRpbC9tYXAuaCINCj4gKw0KPiArDQo+ICtzdGF0aWMgdm9pZCBwcmludF9z
ZXQoY29uc3QgQVZNYXAgKnMpDQo+ICt7DQo+ICsgICAgY29uc3QgQVZNYXBFbnRyeSAqdCA9IE5V
TEw7DQo+ICsgICAgd2hpbGUgKCh0ID0gYXZfbWFwX2l0ZXJhdGUocywgdCkpKQ0KPiArICAgICAg
ICBwcmludGYoIiVzPSVzICVkLCVkICAgIiwgdC0+a2V5LCB0LT52YWx1ZSwgdC0+a2V5bGVuLCB0
LT52YWx1ZWxlbik7DQo+ICsgICAgcHJpbnRmKCJcbiIpOw0KPiArfQ0KPiArDQo+ICtpbnQgbWFp
bih2b2lkKQ0KPiArew0KPiArICAgIHZvaWQgKm91cl9jbXBbXSA9IHsNCj4gKyAgICAgICAgc3Ry
Y21wLA0KPiArICAgICAgICBhdl9tYXBfc3RyY21wX2tleXZhbHVlLA0KPiArICAgICAgICBhdl9z
dHJjYXNlY21wLA0KPiArICAgICAgICBhdl9tYXBfc3VwZXJjbXBfa2V5dmFsdWUsDQo+ICsgICAg
ICAgIGF2X21hcF9zdXBlcmNtcF9rZXl2YWx1ZSwNCj4gKyAgICB9Ow0KPiArICAgIGludCBvdXJf
ZmxhZ3NbXSA9IHsNCj4gKyAgICAgICAgQVZfTUFQX0NNUF9OT05fVFJVTkNBVEVEICsgQVZfTUFQ
X0NNUF9DQVNFX1NFTlNJVElWRSAgICsgQVZfTUFQX0NNUF9LRVksDQo+ICsgICAgICAgIEFWX01B
UF9DTVBfTk9OX1RSVU5DQVRFRCArIEFWX01BUF9DTVBfQ0FTRV9TRU5TSVRJVkUgICArIEFWX01B
UF9DTVBfS0VZVkFMVUUsDQo+ICsgICAgICAgIEFWX01BUF9DTVBfTk9OX1RSVU5DQVRFRCArIEFW
X01BUF9DTVBfQ0FTRV9JTlNFTlNJVElWRSArIEFWX01BUF9DTVBfS0VZLA0KPiArICAgICAgICBB
Vl9NQVBfQ01QX05PTl9UUlVOQ0FURUQgKyBBVl9NQVBfQ01QX0NBU0VfU0VOU0lUSVZFICAgKyBB
Vl9NQVBfQ01QX0tFWVZBTFVFLA0KPiArICAgICAgICBBVl9NQVBfQ01QX05PTl9UUlVOQ0FURUQg
KyBBVl9NQVBfQ01QX0NBU0VfU0VOU0lUSVZFICAgKyBBVl9NQVBfQ01QX0tFWVZBTFVFLA0KPiAr
ICAgIH07DQo+ICsgICAgdm9pZCAqb3VyX3N1YmNtcFtdID0gew0KPiArICAgICAgICBzdHJjbXAs
DQo+ICsgICAgICAgIHN0cmNtcCwNCj4gKyAgICAgICAgYXZfc3RyY2FzZWNtcCwNCj4gKyAgICAg
ICAgYXZfbWFwX3N1cGVyY21wX2tleSwNCj4gKyAgICAgICAgYXZfc3RyY2FzZWNtcCwNCj4gKyAg
ICB9Ow0KPiArICAgIGludCBvdXJfc3ViZmxhZ3NbXSA9IHsNCj4gKyAgICAgICAgQVZfTUFQX0NN
UF9OT05fVFJVTkNBVEVEICsgQVZfTUFQX0NNUF9DQVNFX1NFTlNJVElWRSAgICsgQVZfTUFQX0NN
UF9LRVksDQo+ICsgICAgICAgIEFWX01BUF9DTVBfTk9OX1RSVU5DQVRFRCArIEFWX01BUF9DTVBf
Q0FTRV9TRU5TSVRJVkUgICArIEFWX01BUF9DTVBfS0VZLA0KPiArICAgICAgICBBVl9NQVBfQ01Q
X05PTl9UUlVOQ0FURUQgKyBBVl9NQVBfQ01QX0NBU0VfSU5TRU5TSVRJVkUgKyBBVl9NQVBfQ01Q
X0tFWSwNCj4gKyAgICAgICAgQVZfTUFQX0NNUF9OT05fVFJVTkNBVEVEICsgQVZfTUFQX0NNUF9D
QVNFX1NFTlNJVElWRSAgICsgQVZfTUFQX0NNUF9LRVksDQo+ICsgICAgICAgIEFWX01BUF9DTVBf
Tk9OX1RSVU5DQVRFRCArIEFWX01BUF9DTVBfQ0FTRV9JTlNFTlNJVElWRSArIEFWX01BUF9DTVBf
S0VZLA0KPiArICAgIH07DQo+ICsNCj4gKyAgICBmb3IgKGludCBzZXR0eXBlPTA7IHNldHR5cGU8
Mzsgc2V0dHlwZSsrKSB7DQo+ICsgICAgICAgIEFWTWFwICpzZXQgPSBhdl9tYXBfbmV3KG91cl9j
bXBbc2V0dHlwZV0sIG91cl9mbGFnc1tzZXR0eXBlXSwgTlVMTCwgTlVMTCk7DQo+ICsgICAgICAg
IGF2X21hcF9hZGRfY21wX2Z1bmMoc2V0LCBvdXJfc3ViY21wW3NldHR5cGVdLCBvdXJfc3ViZmxh
Z3Nbc2V0dHlwZV0pOw0KPiArDQo+ICsgICAgICAgIHByaW50ZigidGVzdGluZyBlbXB0eSBzZXRc
biIpOw0KPiArDQo+ICsgICAgICAgIGNvbnN0IEFWTWFwRW50cnkgKmUgPSBhdl9tYXBfZ2V0KHNl
dCwgImZvbyIsIG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAgICAgIGF2X2Fzc2VydDAo
ZSA9PSBOVUxMKTsNCj4gKw0KPiArICAgICAgICBlID0gYXZfbWFwX2dldChzZXQsICJmb28iLCBv
dXJfc3ViZmxhZ3Nbc2V0dHlwZV0pOw0KPiArICAgICAgICBhdl9hc3NlcnQwKGUgPT0gTlVMTCk7
DQo+ICsNCj4gKyAgICAgICAgaW50IHJldCA9IGF2X21hcF9kZWwoc2V0LCAiZm9vIiwgb3VyX3N1
YmZsYWdzW3NldHR5cGVdKTsNCj4gKyAgICAgICAgYXZfYXNzZXJ0MChyZXQgPT0gMCk7DQo+ICsN
Cj4gKyAgICAgICAgcHJpbnRfc2V0KHNldCk7DQo+ICsNCj4gKyAgICAgICAgcHJpbnRmKCJ0ZXN0
aW5nIDEtc2V0XG4iKTsNCj4gKw0KPiArICAgICAgICByZXQgPSBhdl9tYXBfYWRkKHNldCwgImZv
byIsIDQsICJiYXIiLCA0LCAwKTsNCj4gKyAgICAgICAgYXZfYXNzZXJ0MChyZXQgPT0gMSk7DQo+
ICsNCj4gKyAgICAgICAgcmV0ID0gYXZfbWFwX2FkZChzZXQsICJmb28iLCA0LCAiYmVhciIsIDUs
IDApOw0KPiArICAgICAgICBhdl9hc3NlcnQwKHJldCA9PSAoKGludFtdKXswLDEsMH0pW3NldHR5
cGVdKTsNCj4gKw0KPiArICAgICAgICBlID0gYXZfbWFwX2dldChzZXQsICJmb28iLCBvdXJfc3Vi
ZmxhZ3Nbc2V0dHlwZV0pOw0KPiArICAgICAgICBhdl9hc3NlcnQwKCFzdHJjbXAoZS0+a2V5LCAi
Zm9vIikpOw0KPiArICAgICAgICBpZiAoc2V0dHlwZSA9PSAxKSB7DQo+ICsgICAgICAgICAgICBh
dl9hc3NlcnQwKCFzdHJjbXAoZS0+dmFsdWUsICJiZWFyIikgfHwgIXN0cmNtcChlLT52YWx1ZSwg
ImJhciIpKTsNCj4gKyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAo
IXN0cmNtcChlLT52YWx1ZSwgImJhciIpKTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAg
IHJldCA9IGF2X21hcF9hZGQoc2V0LCAiZm9vIiwgNCwgImJlYXIiLCA1LCBBVl9NQVBfUkVQTEFD
RSk7DQo+ICsgICAgICAgIGF2X2Fzc2VydDAocmV0ID09IDIpOw0KPiArDQo+ICsgICAgICAgIGUg
PSBhdl9tYXBfZ2V0KHNldCwgImZvbyIsIG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAg
ICAgIGF2X2Fzc2VydDAoIXN0cmNtcChlLT5rZXksICJmb28iKSk7DQo+ICsgICAgICAgIGlmIChz
ZXR0eXBlID09IDEpIHsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoIXN0cmNtcChlLT52YWx1
ZSwgImJlYXIiKSB8fCAhc3RyY21wKGUtPnZhbHVlLCAiYmFyIikpOw0KPiArICAgICAgICB9IGVs
c2Ugew0KPiArICAgICAgICAgICAgYXZfYXNzZXJ0MCghc3RyY21wKGUtPnZhbHVlLCAiYmVhciIp
KTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIGUgPSBhdl9tYXBfZ2V0X211bHRpcGxl
KHNldCwgTlVMTCwgImZvbyIsIG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAgICAgIGF2
X2Fzc2VydDAoIXN0cmNtcChlLT5rZXksICJmb28iKSk7DQo+ICsgICAgICAgIGlmIChzZXR0eXBl
ID09IDEpIHsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoIXN0cmNtcChlLT52YWx1ZSwgImJh
ciIpKTsNCj4gKyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoIXN0
cmNtcChlLT52YWx1ZSwgImJlYXIiKSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgZSA9IGF2
X21hcF9nZXRfbXVsdGlwbGUoc2V0LCBlLCAiZm9vIiwgb3VyX3N1YmZsYWdzW3NldHR5cGVdKTsN
Cj4gKyAgICAgICAgaWYgKHNldHR5cGUgPT0gMSkgew0KPiArICAgICAgICAgICAgYXZfYXNzZXJ0
MCghc3RyY21wKGUtPmtleSwgImZvbyIpKTsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoIXN0
cmNtcChlLT52YWx1ZSwgImJlYXIiKSk7DQo+ICsgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAg
ICAgICBhdl9hc3NlcnQwKGUgPT0gTlVMTCk7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAg
ICByZXQgPSBhdl9tYXBfZGVsKHNldCwgImZvbyIsIG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+
ICsgICAgICAgIGF2X2Fzc2VydDAocmV0ID09IDEpOw0KPiArDQo+ICsgICAgICAgIGUgPSBhdl9t
YXBfZ2V0KHNldCwgImZvbyIsIG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAgICAgIGlm
IChzZXR0eXBlID09IDEpIHsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoIXN0cmNtcChlLT5r
ZXksICJmb28iKSk7DQo+ICsgICAgICAgICAgICBhdl9hc3NlcnQwKCFzdHJjbXAoZS0+dmFsdWUs
ICJiZWFyIikgfHwgIXN0cmNtcChlLT52YWx1ZSwgImJhciIpKTsNCj4gKyAgICAgICAgfSBlbHNl
IHsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoZSA9PSBOVUxMKTsNCj4gKyAgICAgICAgfQ0K
PiArDQo+ICsgICAgICAgIHJldCA9IGF2X21hcF9kZWwoc2V0LCAiZm9vIiwgb3VyX3N1YmZsYWdz
W3NldHR5cGVdKTsNCj4gKyAgICAgICAgYXZfYXNzZXJ0MChyZXQgPT0gKChpbnRbXSl7MCwxLDB9
KVtzZXR0eXBlXSk7DQo+ICsNCj4gKw0KPiArICAgICAgICBwcmludF9zZXQoc2V0KTsNCj4gKw0K
PiArICAgICAgICBwcmludGYoInRlc3Rpbmcgbi1zZXRcbiIpOw0KPiArICAgICAgICB1bnNpZ25l
ZCByID0gNTsNCj4gKyAgICAgICAgaW50IGhpc3RvZ3JhbVsyNTZdID0gezB9Ow0KPiArICAgICAg
ICBmb3IoaW50IGk9MDsgaTwxMDAwOyBpKyspIHsNCj4gKyAgICAgICAgICAgIHIgPSByKjEyMyAr
IDc7DQo+ICsgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHN0clszXSA9IHswfTsNCj4gKyAgICAg
ICAgICAgIHN0clswXSA9IHI7DQo+ICsgICAgICAgICAgICByZXQgPSBhdl9tYXBfYWRkKHNldCwg
c3RyLCAyLCBzdHIsIDIgLDApOw0KPiArICAgICAgICAgICAgaWYgKGkgPCAxMjgpIHsNCj4gKyAg
ICAgICAgICAgICAgICBpZiAoc2V0dHlwZSAhPSAyKSB7DQo+ICsgICAgICAgICAgICAgICAgICAg
IGF2X2Fzc2VydDAocmV0ID09IDEpOw0KPiArICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsg
ICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocmV0ID09ICFoaXN0b2dyYW1bYXZfdG91cHBl
cihzdHJbMF0pXSk7DQo+ICsgICAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbVthdl90b3VwcGVy
KHN0clswXSldID0gMTsNCj4gKyAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICB9IGVs
c2Ugew0KPiArICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocmV0ID09IDApOw0KPiArICAgICAg
ICAgICAgfQ0KPiArICAgICAgICAgICAgcHJpbnRmKCIlZCIsIHJldCk7DQo+ICsgICAgICAgIH0N
Cj4gKyAgICAgICAgcHJpbnRmKCJcbiIpOw0KPiArDQo+ICsgICAgICAgIHIgPSA1Ow0KPiArICAg
ICAgICBmb3IoaW50IGk9MDsgaTwxMDAwOyBpKyspIHsNCj4gKyAgICAgICAgICAgIHIgPSByKjEy
MyArIDc7DQo+ICsgICAgICAgICAgICBjaGFyIHN0clszXSA9IHswfTsNCj4gKyAgICAgICAgICAg
IHN0clswXSA9IHI7DQo+ICsNCj4gKyAgICAgICAgICAgIGlmIChpID09IDUxKSB7DQo+ICsgICAg
ICAgICAgICAgICAgQVZNYXAgKm9sZCA9IHNldDsNCj4gKyAgICAgICAgICAgICAgICBzZXQgPSBh
dl9tYXBfY2xvbmUoc2V0KTsNCj4gKyAgICAgICAgICAgICAgICBhdl9tYXBfZGVsKG9sZCwgc3Ry
LCAwKTsNCj4gKyAgICAgICAgICAgICAgICBhdl9tYXBfZnJlZSgmb2xkKTsNCj4gKyAgICAgICAg
ICAgIH0NCj4gKyAgICAgICAgICAgIGlmIChpID09IDczKSB7DQo+ICsgICAgICAgICAgICAgICAg
QVZNYXAgKm9sZCA9IHNldDsNCj4gKyAgICAgICAgICAgICAgICBzZXQgPSBhdl9tYXBfbmV3KG91
cl9jbXBbc2V0dHlwZV0sIG91cl9mbGFnc1tzZXR0eXBlXSwgTlVMTCwgTlVMTCk7DQo+ICsgICAg
ICAgICAgICAgICAgYXZfbWFwX2FkZF9jbXBfZnVuYyhzZXQsIG91cl9zdWJjbXBbc2V0dHlwZV0s
IG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAgICAgICAgICAgICAgcmV0ID0gYXZfbWFw
X2FkZF9zdHJpbmdzKHNldCwgInRoZSBrZXkiLCAidGhlIHZhbHVlIiwgMCk7DQo+ICsgICAgICAg
ICAgICAgICAgYXZfbWFwX2NvcHkoc2V0LCBvbGQpOw0KPiArICAgICAgICAgICAgICAgIGF2X21h
cF9kZWwob2xkLCBzdHIsIDApOw0KPiArICAgICAgICAgICAgICAgIGF2X21hcF9mcmVlKCZvbGQp
Ow0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgZSA9IGF2X21hcF9nZXQoc2V0LCBz
dHIsIG91cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAgICAgICAgICBpZiAoc2V0dHlwZSAh
PSAyKSB7DQo+ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MCghc3RyY21wKGUtPmtleSwgc3Ry
KSk7DQo+ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MCghc3RyY21wKGUtPnZhbHVlLCBzdHIp
KTsNCj4gKyAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0
MCghYXZfc3RyY2FzZWNtcChlLT5rZXksIHN0cikpOw0KPiArICAgICAgICAgICAgICAgIGF2X2Fz
c2VydDAoIWF2X3N0cmNhc2VjbXAoZS0+dmFsdWUsIHN0cikpOw0KPiArICAgICAgICAgICAgfQ0K
PiArICAgICAgICAgICAgZSA9IGF2X21hcF9nZXRfbXVsdGlwbGUoc2V0LCBOVUxMLCBzdHIsIG91
cl9zdWJmbGFnc1tzZXR0eXBlXSk7DQo+ICsgICAgICAgICAgICBpZiAoc2V0dHlwZSAhPSAyKSB7
DQo+ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MCghc3RyY21wKGUtPmtleSwgc3RyKSk7DQo+
ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MCghc3RyY21wKGUtPnZhbHVlLCBzdHIpKTsNCj4g
KyAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MCghYXZf
c3RyY2FzZWNtcChlLT5rZXksIHN0cikpOw0KPiArICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAo
IWF2X3N0cmNhc2VjbXAoZS0+dmFsdWUsIHN0cikpOw0KPiArICAgICAgICAgICAgfQ0KPiArICAg
ICAgICAgICAgcmV0ID0gYXZfbWFwX2FkZChzZXQsIHN0ciwgMiwgc3RyLCAyLCAwKTsNCj4gKyAg
ICAgICAgICAgIGF2X2Fzc2VydDAocmV0ID09IDApOw0KPiArDQo+ICsgICAgICAgICAgICBzdHJb
MV09J3gnOw0KPiArDQo+ICsgICAgICAgICAgICBlID0gYXZfbWFwX2dldChzZXQsIHN0ciwgb3Vy
X3N1YmZsYWdzW3NldHR5cGVdKTsNCj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAoZSA9PSBOVUxM
KTsNCj4gKyAgICAgICAgICAgIGUgPSBhdl9tYXBfZ2V0X211bHRpcGxlKHNldCwgTlVMTCwgc3Ry
LCBvdXJfc3ViZmxhZ3Nbc2V0dHlwZV0pOw0KPiArICAgICAgICAgICAgYXZfYXNzZXJ0MChlID09
IE5VTEwpOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIHByaW50X3NldChzZXQpOw0KPiArDQo+
ICsgICAgICAgIGF2X21hcF9mcmVlKCZzZXQpOw0KPiArICAgICAgICBhdl9hc3NlcnQwKCFzZXQp
Ow0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEv
bGliYXZ1dGlsL3RyZWUuYyBiL2xpYmF2dXRpbC90cmVlLmMNCj4gaW5kZXggNzA4ZDQwMTNmMDQu
LjMwMDdkYzI2ZDI5IDEwMDY0NA0KPiAtLS0gYS9saWJhdnV0aWwvdHJlZS5jDQo+ICsrKyBiL2xp
YmF2dXRpbC90cmVlLmMNCj4gQEAgLTI0LDExICsyNCw3IEBADQo+ICAgI2luY2x1ZGUgIm1lbS5o
Ig0KPiAgICNpbmNsdWRlICJ0cmVlLmgiDQo+ICAgDQo+IC10eXBlZGVmIHN0cnVjdCBBVlRyZWVO
b2RlIHsNCj4gLSAgICBzdHJ1Y3QgQVZUcmVlTm9kZSAqY2hpbGRbMl07DQo+IC0gICAgdm9pZCAq
ZWxlbTsNCj4gLSAgICBpbnQgc3RhdGU7DQo+IC19IEFWVHJlZU5vZGU7DQo+ICsjaW5jbHVkZSAi
dHJlZV9pbnRlcm5hbC5oIg0KPiAgIA0KPiAgIGNvbnN0IGludCBhdl90cmVlX25vZGVfc2l6ZSA9
IHNpemVvZihBVlRyZWVOb2RlKTsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC90cmVl
X2ludGVybmFsLmggYi9saWJhdnV0aWwvdHJlZV9pbnRlcm5hbC5oDQo+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi42MjA3YzMyMWE4ZQ0KPiAtLS0gL2Rldi9udWxs
DQo+ICsrKyBiL2xpYmF2dXRpbC90cmVlX2ludGVybmFsLmgNCj4gQEAgLTAsMCArMSwyOCBAQA0K
PiArLyoNCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4NCj4gKyAqDQo+ICsgKiBG
Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+
ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljDQo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXINCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiArICoNCj4gKyAqIEZGbXBlZyBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiArICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VDQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KPiArICoNCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4gKyAqIExpY2Vuc2Ug
YWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCj4g
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0ENCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIEFWVVRJTF9U
UkVFX0lOVEVSTkFMX0gNCj4gKyNkZWZpbmUgQVZVVElMX1RSRUVfSU5URVJOQUxfSA0KPiArDQo+
ICt0eXBlZGVmIHN0cnVjdCBBVlRyZWVOb2RlIHsNCj4gKyAgICBzdHJ1Y3QgQVZUcmVlTm9kZSAq
Y2hpbGRbMl07DQo+ICsgICAgdm9pZCAqZWxlbTsNCj4gKyAgICBpbnQgc3RhdGU7DQo+ICt9IEFW
VHJlZU5vZGU7DQo+ICsNCj4gKyNlbmRpZiAvKiBBVlVUSUxfVFJFRV9JTlRFUk5BTF9IICovDQo+
IGRpZmYgLS1naXQgYS90ZXN0cy9mYXRlL2xpYmF2dXRpbC5tYWsgYi90ZXN0cy9mYXRlL2xpYmF2
dXRpbC5tYWsNCj4gaW5kZXggNmJmMDNiMjQzODYuLmI3ZGY0OTlhMjljIDEwMDY0NA0KPiAtLS0g
YS90ZXN0cy9mYXRlL2xpYmF2dXRpbC5tYWsNCj4gKysrIGIvdGVzdHMvZmF0ZS9saWJhdnV0aWwu
bWFrDQo+IEBAIC03NCw2ICs3NCwxMCBAQCBGQVRFX0xJQkFWVVRJTCArPSBmYXRlLWRpY3QNCj4g
ICBmYXRlLWRpY3Q6IGxpYmF2dXRpbC90ZXN0cy9kaWN0JChFWEVTVUYpDQo+ICAgZmF0ZS1kaWN0
OiBDTUQgPSBydW4gbGliYXZ1dGlsL3Rlc3RzL2RpY3QkKEVYRVNVRikNCj4gICANCj4gK0ZBVEVf
TElCQVZVVElMICs9IGZhdGUtbWFwDQo+ICtmYXRlLW1hcDogbGliYXZ1dGlsL3Rlc3RzL21hcCQo
RVhFU1VGKQ0KPiArZmF0ZS1tYXA6IENNRCA9IHJ1biBsaWJhdnV0aWwvdGVzdHMvbWFwJChFWEVT
VUYpDQo+ICsNCj4gICBGQVRFX0xJQkFWVVRJTCArPSBmYXRlLWVuY3J5cHRpb24taW5mbw0KPiAg
IGZhdGUtZW5jcnlwdGlvbi1pbmZvOiBsaWJhdnV0aWwvdGVzdHMvZW5jcnlwdGlvbl9pbmZvJChF
WEVTVUYpDQo+ICAgZmF0ZS1lbmNyeXB0aW9uLWluZm86IENNRCA9IHJ1biBsaWJhdnV0aWwvdGVz
dHMvZW5jcnlwdGlvbl9pbmZvJChFWEVTVUYpDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0
ZS9tYXAgYi90ZXN0cy9yZWYvZmF0ZS9tYXANCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k
ZXggMDAwMDAwMDAwMDAuLjZkMTY5OWVmNGI3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVz
dHMvcmVmL2ZhdGUvbWFwDQo+IEBAIC0wLDAgKzEsMjcgQEANCj4gK3Rlc3RpbmcgZW1wdHkgc2V0
DQo+ICsNCj4gK3Rlc3RpbmcgMS1zZXQNCj4gKw0KPiArdGVzdGluZyBuLXNldA0KPiArMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA0KPiArdGhlIGtleT10aGUgdmFsdWUgOCwxMCAgIG49
biAyLDIgICDvv70977+9IDIsMiAgICI9IiAyLDIgICBdPV0gMiwyICAg77+9Pe+/vSAyLDIgICB5
PXkgMiwyICAgKj0qIDIsMiAgIDU9NSAyLDIgICB+PX4gMiwyICAg77+9Pe+/vSAyLDIgICDvv709
77+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICApPSkgMiwyICAg77+9Pe+/vSAy
LDIgICBlPWUgMiwyICAg77+9Pe+/vSAyLDIgICBBPUEgMiwyICAgQj1CIDIsMiAgIO+/vT3vv70g
MiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIEo9SiAyLDIgICDvv70977+9IDIsMiAg
IO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg
77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDv
v70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgYj1iIDIsMiAgIB09HSAyLDIgICDvv70977+9IDIs
MiAgIDk9OSAyLDIgICBqPWogMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIFE9USAy
LDIgICDvv70977+9IDIsMiAgIE09TSAyLDIgICAGPQYgMiwyICAg77+9Pe+/vSAyLDIgICDvv709
77+9IDIsMiAgICU9JSAyLDIgICDvv70977+9IDIsMiAgIAE9ASAyLDIgICDvv70977+9IDIsMiAg
IH09fSAyLDIgICAWPRYgMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIFU9VSAyLDIg
ICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgEj0SIDIsMiAgIO+/vT3vv70gMiwyICAgJj0m
IDIsMiAgIEk9SSAyLDIgICAaPRogMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIGE9
YSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgNj02IDIsMiAgIO+/vT3vv70gMiwy
ICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgET0RIDIsMiAgIDI9
MiAyLDINCj4gPQ0KPiAgIDIsMiAgIEY9RiAyLDIgICDvv70977+9IDIsMiAgIDo9OiAyLDIgICDv
v70977+9IDIsMiAgIA49DiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgPT09IDIs
MiAgIFY9ViAyLDIgICBZPVkgMiwyICAg77+9Pe+/vSAyLDIgICAVPRUgMiwyICAgHj0eIDIsMiAg
IHE9cSAyLDIgICBSPVIgMiwyICAgbT1tIDIsMiAgIGY9ZiAyLDIgICAJPQkgMiwyICAgWj1aIDIs
MiAgIEU9RSAyLDIgICAuPS4gMiwyICAgIT0hIDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAy
LDIgICB2PXYgMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIHU9dSAyLDIgICA+PT4g
MiwyICAg77+9Pe+/vSAyLDIgICByPXIgMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAg
IGk9aSAyLDIgICB6PXogMiwyICAg77+9Pe+/vSAyLDIgICBOPU4gMiwyICAg77+9Pe+/vSAyLDIg
ICACPQIgMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIBk9GSAyLDINCj4gKz0NCj4g
KyAyLDIgICDvv70977+9IDIsMiAgIF49XiAyLDIgICAxPTEgMiwyICAg77+9Pe+/vSAyLDIgICAt
PS0gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgBT0FIDIs
Mg0KDQoNClRoaXMgbWF5IGp1c3QgYmUgbXkgZW1haWwgY2xpZW50IG1lc3NpbmcgdXAsIGJ1dCBt
YW55IG9mIHRoZXNlIGFwcGVhciB0byANCmJlIG5vbnByaW50YWJsZS4gSSBkb24ndCBrbm93IHdo
eS4NCg0KPiArdGVzdGluZyBlbXB0eSBzZXQNCj4gKw0KPiArdGVzdGluZyAxLXNldA0KPiArDQo+
ICt0ZXN0aW5nIG4tc2V0DQo+ICsxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwDQo+ICt0
aGUga2V5PXRoZSB2YWx1ZSA4LDEwICAgbj1uIDIsMiAgIO+/vT3vv70gMiwyICAgIj0iIDIsMiAg
IF09XSAyLDIgICDvv70977+9IDIsMiAgIHk9eSAyLDIgICAqPSogMiwyICAgNT01IDIsMiAgIH49
fiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9
IDIsMiAgICk9KSAyLDIgICDvv70977+9IDIsMiAgIGU9ZSAyLDIgICDvv70977+9IDIsMiAgIEE9
QSAyLDIgICBCPUIgMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwy
ICAgSj1KIDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/
vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9
Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICBiPWIg
MiwyICAgHT0dIDIsMiAgIO+/vT3vv70gMiwyICAgOT05IDIsMiAgIGo9aiAyLDIgICDvv70977+9
IDIsMiAgIO+/vT3vv70gMiwyICAgUT1RIDIsMiAgIO+/vT3vv70gMiwyICAgTT1NIDIsMiAgIAY9
BiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgJT0lIDIsMiAgIO+/vT3vv70gMiwy
ICAgAT0BIDIsMiAgIO+/vT3vv70gMiwyICAgfT19IDIsMiAgIBY9FiAyLDIgICDvv70977+9IDIs
MiAgIO+/vT3vv70gMiwyICAgVT1VIDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICAS
PRIgMiwyICAg77+9Pe+/vSAyLDIgICAmPSYgMiwyICAgST1JIDIsMiAgIBo9GiAyLDIgICDvv709
77+9IDIsMiAgIO+/vT3vv70gMiwyICAgYT1hIDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAy
LDIgICA2PTYgMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg
77+9Pe+/vSAyLDIgICARPREgMiwyICAgMj0yIDIsMg0KPiA9DQo+ICAgMiwyICAgRj1GIDIsMiAg
IO+/vT3vv70gMiwyICAgOj06IDIsMiAgIO+/vT3vv70gMiwyICAgDj0OIDIsMiAgIO+/vT3vv70g
MiwyICAg77+9Pe+/vSAyLDIgICA9PT0gMiwyICAgVj1WIDIsMiAgIFk9WSAyLDIgICDvv70977+9
IDIsMiAgIBU9FSAyLDIgICAePR4gMiwyICAgcT1xIDIsMiAgIFI9UiAyLDIgICBtPW0gMiwyICAg
Zj1mIDIsMiAgIAk9CSAyLDIgICBaPVogMiwyICAgRT1FIDIsMiAgIC49LiAyLDIgICAhPSEgMiwy
ICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIHY9diAyLDIgICDvv70977+9IDIsMiAgIO+/
vT3vv70gMiwyICAgdT11IDIsMiAgID49PiAyLDIgICDvv70977+9IDIsMiAgIHI9ciAyLDIgICDv
v70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgaT1pIDIsMiAgIHo9eiAyLDIgICDvv70977+9IDIs
MiAgIE49TiAyLDIgICDvv70977+9IDIsMiAgIAI9AiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3v
v70gMiwyICAgGT0ZIDIsMg0KPiArPQ0KPiArIDIsMiAgIO+/vT3vv70gMiwyICAgXj1eIDIsMiAg
IDE9MSAyLDIgICDvv70977+9IDIsMiAgIC09LSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70g
MiwyICAg77+9Pe+/vSAyLDIgICAFPQUgMiwyDQo+ICt0ZXN0aW5nIGVtcHR5IHNldA0KPiArDQo+
ICt0ZXN0aW5nIDEtc2V0DQo+ICsNCj4gK3Rlc3Rpbmcgbi1zZXQNCj4gKzExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTEwMTExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTEx
MTExMTExMTExMTExMTEwMTExMDEwMDExMDExMTEwMTEwMTEwMTEwMDEwMTExMTExMTExMTExMTEx
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDANCj4gK3RoZSBrZXk9dGhlIHZhbHVlIDgsMTAgICBuPW4gMiwyICAg
77+9Pe+/vSAyLDIgICAiPSIgMiwyICAgXT1dIDIsMiAgIO+/vT3vv70gMiwyICAgeT15IDIsMiAg
ICo9KiAyLDIgICA1PTUgMiwyICAgfj1+IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIg
ICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgKT0pIDIsMiAgIO+/vT3vv70gMiwyICAgZT1l
IDIsMiAgIO+/vT3vv70gMiwyICAgQT1BIDIsMiAgIEI9QiAyLDIgICDvv70977+9IDIsMiAgIO+/
vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICBKPUogMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9
IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70g
MiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAy
LDIgICDvv70977+9IDIsMiAgIB09HSAyLDIgICDvv70977+9IDIsMiAgIDk9OSAyLDIgICDvv709
77+9IDIsMiAgIO+/vT3vv70gMiwyICAgUT1RIDIsMiAgIO+/vT3vv70gMiwyICAgTT1NIDIsMiAg
IAY9BiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAgJT0lIDIsMiAgIO+/vT3vv70g
MiwyICAgAT0BIDIsMiAgIO+/vT3vv70gMiwyICAgfT19IDIsMiAgIBY9FiAyLDIgICDvv70977+9
IDIsMiAgIO+/vT3vv70gMiwyICAgVT1VIDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIg
ICASPRIgMiwyICAg77+9Pe+/vSAyLDIgICAmPSYgMiwyICAgST1JIDIsMiAgIBo9GiAyLDIgICDv
v70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIDY9
NiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9
IDIsMiAgIBE9ESAyLDIgICAyPTIgMiwyDQo+ID0NCj4gICAyLDIgICBGPUYgMiwyICAg77+9Pe+/
vSAyLDIgICA6PTogMiwyICAg77+9Pe+/vSAyLDIgICAOPQ4gMiwyICAg77+9Pe+/vSAyLDIgICDv
v70977+9IDIsMiAgID09PSAyLDIgICBWPVYgMiwyICAg77+9Pe+/vSAyLDIgICAVPRUgMiwyICAg
Hj0eIDIsMiAgIFI9UiAyLDIgICAJPQkgMiwyICAgWj1aIDIsMiAgIC49LiAyLDIgICAhPSEgMiwy
ICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9Pe+/vSAyLDIg
ICA+PT4gMiwyICAg77+9Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwyICAg77+9
Pe+/vSAyLDIgICDvv70977+9IDIsMiAgIAI9AiAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70g
MiwyICAgGT0ZIDIsMg0KPiArPQ0KPiArIDIsMiAgIO+/vT3vv70gMiwyICAgXj1eIDIsMiAgIDE9
MSAyLDIgICDvv70977+9IDIsMiAgIC09LSAyLDIgICDvv70977+9IDIsMiAgIO+/vT3vv70gMiwy
ICAg77+9Pe+/vSAyLDIgICAFPQUgMiwyDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdA0K
PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZw0KPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9s
aXN0aW5mby9mZm1wZWctZGV2ZWwNCj4gDQo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi
b3ZlLCBvciBlbWFpbA0KPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3Vi
amVjdCAidW5zdWJzY3JpYmUiLg0KTGVvIEl6ZW4gKFRyYW5lcHRvcmEpDQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs
aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp
c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y
IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1
YnNjcmliZSIuCg==