From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id A2D01A04B5;
	Thu, 17 Sep 2020 04:21:25 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 044C91D446;
	Thu, 17 Sep 2020 04:21:25 +0200 (CEST)
Received: from m13122.mail.163.com (m13122.mail.163.com [220.181.13.122])
 by dpdk.org (Postfix) with ESMTP id 9DA571D442
 for <dev@dpdk.org>; Thu, 17 Sep 2020 04:21:20 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com;
 s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=B19Zq
 fUUffSHFkwILcMQ5ZfOT424OWUrvKt+CJts/Og=; b=JxebuxWs0Spai74AwT5Aa
 lc5hJvqkkHzStPYhc8HQocHckZR+vtobNpa1w3rJXlbomYtLXjhK+o5KGR+4KOWR
 LjqgIpGcVW7dZ0SH9STX/C7rwTLhx7h+zqgVXYiVSKB+EcKLyV0v5ZGGojrHE1Wv
 fEhtFI7QXtV4wA8iPP9GhQ=
Received: from yang_y_yi$163.com ( [111.207.123.58] ) by
 ajax-webmail-wmsvr122 (Coremail) ; Thu, 17 Sep 2020 10:21:16 +0800 (CST)
X-Originating-IP: [111.207.123.58]
Date: Thu, 17 Sep 2020 10:21:16 +0800 (CST)
From: yang_y_yi  <yang_y_yi@163.com>
To: "Hu, Jiayu" <jiayu.hu@intel.com>
Cc: "yangyi01@inspur.com" <yangyi01@inspur.com>, 
 "thomas@monjalon.net" <thomas@monjalon.net>, 
 "dev@dpdk.org" <dev@dpdk.org>, 
 "Stephen Hemminger" <stephen@networkplumber.org>
X-Priority: 3
X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23)
 Copyright (c) 2002-2020 www.mailtech.cn 163com
In-Reply-To: <a7bfa2876c084a088d70e786bc55dbbf@intel.com>
References: <20200910092914.120452-1-yang_y_yi@163.com>
 <20200910092914.120452-3-yang_y_yi@163.com>
 <20200911042416.GA46174@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com>
 <1623572b.1b82.1748a63b63f.Coremail.yang_y_yi@163.com>
 <20200914042126.GA15258@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com>
 <20ddfcd3.5b19.1748bb90144.Coremail.yang_y_yi@163.com>
 <662209b31e344cfb8994a5b5cdcb0375@intel.com>
 <778c4739.666a.1748be56189.Coremail.yang_y_yi@163.com>
 <20200916025424.GA90702@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com>
 <36eaaf64.21fb.17494dff30d.Coremail.yang_y_yi@163.com>
 <a7bfa2876c084a088d70e786bc55dbbf@intel.com>
X-CM-CTRLDATA: a0p+fGZvb3Rlcl9odG09MTU5OTc1OjU2
MIME-Version: 1.0
Message-ID: <14b5c112.15ac.17499ddae33.Coremail.yang_y_yi@163.com>
X-Coremail-Locale: zh_CN
X-CM-TRANSID: esGowAB3LCwcyGJfG5xhAA--.25740W
X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiqA2ii1c7R1affQABsS
X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU==
Content-Type: text/plain; charset=GBK
Content-Transfer-Encoding: base64
X-Content-Filtered-By: Mailman/MimeDel 2.1.15
Subject: Re: [dpdk-dev] [PATCH v5 2/2] gro: add VXLAN UDP GRO support
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

VGhhbmtzIEppYXl1LCB3aWxsIGFkZCBjb21tZW50cyB0byBleHBsYWluIGl0IGluIHY1LgoKCgoK
CgoKCgoKCgoKCgoKCgoKCkF0IDIwMjAtMDktMTcgMTA6MDY6MzcsICJIdSwgSmlheXUiIDxqaWF5
dS5odUBpbnRlbC5jb20+IHdyb3RlOgoKT0ssIEkgYWdyZWUgdG8gaWdub3JlIHByb2Nlc3Npbmcg
b3V0ZXIgSVAgSUQuIEJ1dCBJIHRoaW5rIHRoZSBjb21tZW50IG5lZWQgdG8gY2hhbmdlLCBhcwoK
aXQgaXMgbm90IGFjY3VyYXRlLiBWeExBTi9VRFAgR1JPIGRvZXNuoa90IHByb2Nlc3Mgb3V0ZXIg
SVAgSUQgaXMgYmVjYXVzZSBpdCBpcyBtZWFuaW5nbGVzcwoKZm9yIHJlYXNzZW1ibHkgaW4gdGhl
IG92cyBjYXNlIHlvdSBtZW50aW9uZWQsIHJhdGhlciB0aGFuIGl0oa9zIG91dC1vZi1vcmRlci4g
WW91IGNhbgoKZ2l2ZSB0aGUgb3ZzIGV4YW1wbGUgaW4gdGhlIGNvbW1pdCBsb2csIGFuZCBpdKGv
cyBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBJTU8uCgogCgpUaGFua3MsCgpKaWF5dQoK
IAoKRnJvbTogeWFuZ195X3lpIDx5YW5nX3lfeWlAMTYzLmNvbT4KU2VudDogV2VkbmVzZGF5LCBT
ZXB0ZW1iZXIgMTYsIDIwMjAgMTE6MDYgQU0KVG86IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwu
Y29tPgpDYzogeWFuZ3lpMDFAaW5zcHVyLmNvbTsgdGhvbWFzQG1vbmphbG9uLm5ldDsgZGV2QGRw
ZGsub3JnClN1YmplY3Q6IFJlOlJlOiBSRTogUmU6UmU6IFJlOiBbUEFUQ0ggdjUgMi8yXSBncm86
IGFkZCBWWExBTiBVRFAgR1JPIHN1cHBvcnQKSW1wb3J0YW5jZTogSGlnaAoKIAoKTm8sIG5leHRf
cHJvdG9faWQgb2YgaW5uZXIgSVAgaGVhZGVyIGNhbiBjbGVhcmx5IGlkZW50aWZ5IGl0IGlzIGEg
VURQIHBhY2tldCBldmVuIGlmIGl0IGlzIGEgbm8tdWRwLWhlYWRlciBpcCBmcmFnbWVudC4KCiAK
CiAKCiAKCiAKCiAKCiAKCgpBdCAyMDIwLTA5LTE2IDEwOjU0OjI0LCAiSmlheXUgSHUiIDxqaWF5
dS5odUBpbnRlbC5jb20+IHdyb3RlOgo+T24gTW9uLCBTZXAgMTQsIDIwMjAgYXQgMDU6MTQ6NTlQ
TSArMDgwMCwgeWFuZ195X3lpIHdyb3RlOgo+PiAKPj4gSmlheXUsIFZNIHRvIFZNIGNhc2UgZm9y
IGJpZyBVRFAgcGFja2V0IChzYXkgdWRwIHBhcmxvYWQgc2l6ZSBpcyA4MTkySywgYnV0IG10dQo+
PiAxNTAwKS4gVk0gd2lsbCBzZWdtZW50IGl0IGFzIFVEUCBmcmFtZ21lbnRzLCBidXQgd2hlbiBv
dnMgZHBkayB1c2VzIFZ4TGFuIHRvCj4+IGVuY2Fwc3VsYXRlIHRoZW0sIGl0IGRvZXNuJ3Qga25v
dyB0aGV5IGFyZSBzYW1lIGZsb3csIE9WUyBEUERLIGhhcyBubyBrbm93bGRnZQo+PiBhYm91dCB0
aGVtLCBqdXN0IGVuY2Fwc3VsYXRlIHRoZW0gYXMgaWYgdGhleSBhcmUgbm90IHJlbGF0ZWQuIEJ1
dCBvbiByZWNlaXZlCj4+IHNpZGUgb24gYW5vdGhlciBtYWNoaW5lLCBPVlMgRFBESyB3aWxsIEdS
TyB0aGVtLCBhdCB0aGlzIHBvaW50LCBvdXRlciBJUCBJRCBpcwo+PiBldmVuIHJhbmRvbSBmb3Ig
ZXZlcnkgcGFja2V0LiBGb3IgVENQLCBJIHRoaW5rIHNhbWUgaXNzdWUgaXMgdGhlcmUsIEdSTyBq
dXN0Cj4+IGNvbnNpZGVyZWQgdGhlbSBhcyBkaWZmZXJlbnQgZmxvdyBhbmQgZG9lc24ndCBkbyBH
Uk8sIGluIG15IG9waW5pb24sIHdlIGFsc28KPj4gc2hvdWxkIGRvIEdSTyBmb3Igc3VjaCBjYXNl
Lgo+IAo+SSBhbSBhIGxpdHRsZSBjb25mdXNlZCBhYm91dCBvdnMgYmVoYXZpb3IuIERvZXMgb3Zz
IGtub3cgdGhleSBhcmUgdWRwIGZyYWdtZW50cz8KPk9yIGl0IGtub3dzIHRoZXkgYXJlIGZyYWdt
ZW50cyBidXQgZG9lc24ndCBrbm93IHRoZXkgYXJlIGZyb20gb25lIGZsb3c/Cj5HaXZlbiBvdnMg
cmVjZWl2ZXMgMyB1ZHAgZnJhZ21lbnRzIG9mIGEgdWRwIHBhY2tldCwgaWYgb3ZzIGRvZXNuJ3Qg
a25vdyB0aGV5IGFyZQo+ZnJhZ21lbnRzIG9mIGEgdWRwIHBhY2tldCwgdGhlaXIgbWJ1Zi0+cGFj
a2V0X3R5cGUgd2lsbCBiZSBldGhlci9pcHY0L3VkcCwKPmV0aGVyL2lwdjQsIGFuZCBldGhlci9p
cHY0LiBkcGRrIHVkcCBncm8gd2lsbCBub3QgcHJvY2VzcyB0aGUgc2Vjb25kIGFuZCB0aGlyZAo+
b25lIGFzIHRoZWlyIHBhY2tldCB0eXBlIGluIG1idWYgaXMgbm90IGV0aGVyL2lwdjQvdWRwLgo+
IAo+PiAKPj4gCj4+ICAgIDIwMjAtMDktMTQgMTY6NTA6MDggICJIdSwgSmlheXUiIDxqaWF5dS5o
dUBpbnRlbC5jb20+IKfVICAgIAo+PiAKPj4gICAgIE91dCBJUCBJRCBpcyBub3QgdXNlZCB0byBj
aGVjayBpZiB0aGV5IGJlbG9uZyB0byB0aGUgc2FtZSBmbG93LAo+PiAKPj4gICAgIGJ1dCBjaGVj
ayBpZiB0aGV5IGFyZSBuZWlnaGJvcnMuIElmIHR3byB2eGxhbi91ZHAgZnJhZ21lbnRzIGFyZQo+
PiAKPj4gICAgIG5laWdoYm9ycywgdGhlaXIgb3V0ZXIgSVAgSUQgYW5kIG91dGVyIGZyYWdfb2Z0
IHNob3VsZCBiZSBpbmNyZW1lbnRhbC4KPj4gCj4+ICAgICBJIHN0aWxsIGNhbm5vdCB1bmRlcnN0
YW5kIHdoeSBpZ25vcmUgb3V0ZXIgSVAgSUQgd2hlbiBERiBpcyAwLgo+PiAKPj4gICAgIENhbiB5
b3UgZ2l2ZSBtb3JlIGV4cGxhbmF0aW9uPwo+PiAKPj4gICAgICAKPj4gCj4+ICAgICBGcm9tOiB5
YW5nX3lfeWkgPHlhbmdfeV95aUAxNjMuY29tPgo+PiAgICAgU2VudDogTW9uZGF5LCBTZXB0ZW1i
ZXIgMTQsIDIwMjAgNDoyNyBQTQo+PiAgICAgVG86IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwu
Y29tPgo+PiAgICAgQ2M6IHRob21hc0Btb25qYWxvbi5uZXQ7IHlhbmd5aTAxQGluc3B1ci5jb207
IGRldkBkcGRrLm9yZwo+PiAgICAgU3ViamVjdDogUmU6UmU6IFJlOiBbUEFUQ0ggdjUgMi8yXSBn
cm86IGFkZCBWWExBTiBVRFAgR1JPIHN1cHBvcnQKPj4gICAgIEltcG9ydGFuY2U6IEhpZ2gKPj4g
Cj4+ICAgICAgCj4+IAo+PiAgICAgRm9yIG91dGVyX2lwX2lkLCB0aGVyZSBpcyBzYW1lIGlwX2lk
IGRpc29yZGVyIGlzc3VlIGV4aXN0aW5nIGFzIFVEUCBHUk8sIHNvCj4+ICAgICB3ZSBjYW4ndCB1
c2UgaXBfaWQgKy8tMSB0byBjaGVjayBpZiB0aGV5IGFyZSBzYW1lIGZsb3csIGhlcmUgaXMgbXkK
Pj4gICAgIGluY3JtZW50YWwgY2hhbmdlIGZvciBpdCB3aXRoIG1vcmUgY29tbWVudHMuCj4+IAo+
PiAgICAgIAo+PiAKPj4gICAgIEBAIC0xODksNyArMTg4LDEyIEBACj4+ICAgICAgaXNfc2FtZV92
eGxhbl91ZHA0X2Zsb3coc3RydWN0IHZ4bGFuX3VkcDRfZmxvd19rZXkgazEsCj4+ICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHZ4bGFuX3VkcDRfZmxvd19rZXkgazIpCj4+ICAgICAgewo+PiAg
ICAgLSAgICAgICAvKiBzcmMgcG9ydCBpcyBjaGFuZ2luZywgc28gc2hvdWxkbid0IHVzZSBpdCBm
b3IgZmxvdyBjaGVjayAqLwo+PiAgICAgKyAgICAgICAvKiBGb3IgVnhMQU4gcGFja2V0LCBvdXRl
ciB1ZHAgc3JjIHBvcnQgaXMgY2FsY3VsYXRlZCBmcm9tCj4+ICAgICArICAgICAgICAqIGlubmVy
IHBhY2tldCBSU1MgaGFzaCwgdWRwIHNyYyBwb3J0IG9mIHRoZSBmaXJzdCBVRFAKPj4gICAgICsg
ICAgICAgICogZnJhZ21lbnQgaXMgZGlmZmVyZW50IGZyb20gb25lIG9mIG90aGVyIFVEUCBmcmFn
bWVudHMKPj4gICAgICsgICAgICAgICogZXZlbiBpZiB0aGV5IGFyZSBzYW1lIGZsb3csIHNvIHdl
IGhhdmUgdG8gc2tpcCBvdXRlciB1ZHAKPj4gICAgICsgICAgICAgICogc3JjIHBvcnQgY29tcGFy
aXNvbiBoZXJlLgo+PiAgICAgKyAgICAgICAgKi8KPj4gICAgICAgICAgICAgcmV0dXJuIChydGVf
aXNfc2FtZV9ldGhlcl9hZGRyKCZrMS5vdXRlcl9ldGhfc2FkZHIsCj4+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmsyLm91dGVyX2V0aF9zYWRkcikgJiYKPj4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9pc19zYW1lX2V0aGVyX2FkZHIoJmsxLm91
dGVyX2V0aF9kYWRkciwKPj4gICAgIEBAIC0yMTIsMTIgKzIxNiwxNiBAQAo+PiAgICAgICAgICAg
ICB1aW50MTZfdCBsMl9vZmZzZXQ7Cj4+ICAgICAgICAgICAgIGludCByZXQgPSAwOwo+PiAKPj4g
ICAgICsgICAgICAgLyogTm90ZTogaWYgb3V0ZXIgREYgYml0IGlzIHNldCwgaS5lIG91dGVyX2lz
X2F0b21pYyBpcyAwLAo+PiAgICAgKyAgICAgICAgKiB3ZSBuZWVkbid0IGNvbXBhcmUgb3V0ZXJf
aXBfaWQgYmVjYXVzZSB0aGV5IGFyZSBzYW1lLAo+PiAgICAgKyAgICAgICAgKiBmb3IgdGhlIGNh
c2Ugb3V0ZXJfaXNfYXRvbWljIGlzIDEsIHdlIGFsc28gaGF2ZSBubyB3YXkKPj4gICAgICsgICAg
ICAgICogdG8gY29tYXByZSBvdXRlcl9pcF9pZCBiZWNhdXNlIHRoZSByZWNlaXZlZCBwYWNrZXRz
IGNhbgo+PiAgICAgKyAgICAgICAgKiBiZSBvdXQgb2Ygb3JkZXIuIFNvIGlnbm9yZSBvdXRlcl9p
cF9pZCBjb21wYXJpc29uIGhlcmUuCj4+ICAgICArICAgICAgICAqLwo+PiAgICAgKwo+PiAgICAg
ICAgICAgICBsMl9vZmZzZXQgPSBwa3QtPm91dGVyX2wyX2xlbiArIHBrdC0+b3V0ZXJfbDNfbGVu
Owo+PiAgICAgICAgICAgICBjbXAgPSB1ZHA0X2NoZWNrX25laWdoYm9yKCZpdGVtLT5pbm5lcl9p
dGVtLCBmcmFnX29mZnNldCwgaXBfZGwsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbDJfb2Zmc2V0KTsKPj4gICAgIC0gICAgICAgLyogVlhMQU4gb3V0ZXIg
SVAgSUQgaXMgb3V0IG9mIG9yZGVyLCBzbyBkb24ndCB0b3VjaCBpdCBhbmQKPj4gICAgIC0gICAg
ICAgICogZG9uJ3QgY29tcGFyZSBpdC4KPj4gICAgIC0gICAgICAgICovCj4+ICAgICAgICAgICAg
IGlmIChjbXAgPiAwKQo+PiAgICAgICAgICAgICAgICAgICAgIC8qIEFwcGVuZCB0aGUgbmV3IHBh
Y2tldC4gKi8KPj4gICAgICAgICAgICAgICAgICAgICByZXQgPSAxOwo+PiAgICAgQEAgLTM1NCw3
ICszNjIsOSBAQAo+PiAgICAgICAgICAgICBydGVfZXRoZXJfYWRkcl9jb3B5KCYob3V0ZXJfZXRo
X2hkci0+ZF9hZGRyKSwgJgo+PiAgICAgKGtleS5vdXRlcl9ldGhfZGFkZHIpKTsKPj4gICAgICAg
ICAgICAga2V5Lm91dGVyX2lwX3NyY19hZGRyID0gb3V0ZXJfaXB2NF9oZHItPnNyY19hZGRyOwo+
PiAgICAgICAgICAgICBrZXkub3V0ZXJfaXBfZHN0X2FkZHIgPSBvdXRlcl9pcHY0X2hkci0+ZHN0
X2FkZHI7Cj4+ICAgICAtICAgICAgIGtleS5vdXRlcl9zcmNfcG9ydCA9IHVkcF9oZHItPnNyY19w
b3J0Owo+PiAgICAgKyAgICAgICAvKiBOb3RlOiBJdCBpcyB1bm5lY2Vzc2FyeSB0byBzYXZlIG91
dGVyX3NyY19wb3J0IGhlcmUgYmVjYXVzZSBpdAo+PiAgICAgY2FuCj4+ICAgICArICAgICAgICAq
IGJlIGRpZmZlcmVudCBmb3IgVnhMQU4gVURQIGZyYWdtZW50cyBmcm9tIHRoZSBzYW1lIGZsb3cu
Cj4+ICAgICArICAgICAgICAqLwo+PiAgICAgICAgICAgICBrZXkub3V0ZXJfZHN0X3BvcnQgPSB1
ZHBfaGRyLT5kc3RfcG9ydDsKPj4gCj4+ICAgICAgICAgICAgIC8qIFNlYXJjaCBmb3IgYSBtYXRj
aGVkIGZsb3cuICovCj4+IAo+PiAgICAgIAo+PiAKPj4gICAgICAKPj4gCj4+ICAgICAgCj4+IAo+
PiAgICAgCj4+ICAgICBBdCAyMDIwLTA5LTE0IDEyOjIxOjI2LCAiSmlheXUgSHUiIDxqaWF5dS5o
dUBpbnRlbC5jb20+IHdyb3RlOgo+PiAKPj4gICAgID5SZXBsaWVzIGFyZSBpbmxpbmUuCj4+IAo+
PiAgICAgPiAKPj4gCj4+ICAgICA+QlRXLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlIHByb2dyYW1t
ZXIgZ3VpZGUKPj4gCj4+ICAgICA+ZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2dlbmVyaWNfcmVjZWl2
ZV9vZmZsb2FkX2xpYi5yc3QgYW5kCj4+IAo+PiAgICAgPnJlbGVhc2Ugbm90ZSBkb2MvZ3VpZGVz
L3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzExLnJzdC4KPj4gCj4+ICAgICA+IAo+PiAKPj4gICAgID5U
aGFua3MsCj4+IAo+PiAgICAgPkppYXl1Cj4+IAo+PiAgICAgPiAKPj4gCj4+ICAgICA+T24gTW9u
LCBTZXAgMTQsIDIwMjAgYXQgMTA6MTM6NDRBTSArMDgwMCwgeWFuZ195X3lpIHdyb3RlOgo+PiAK
Pj4gICAgID4+IEppYXl1LCB0aGFuayB5b3Ugc28gbXVjaCwgcGxlYXNlIGNoZWNrIG15IHJlcGxp
ZXMgZm9yIHNvbWUgb2YgeW91ciBjb21tZW50cywKPj4gCj4+ICAgICA+PiBoZXJlIGlzIGluY3Jl
bWVudGFsIHBhdGNoLiBJIGJ1aWx0IGl0IGJ5IG1lc29uIHRoaXMgdGltZSA6LSkKPj4gCj4+ICAg
ICA+PiAKPj4gCj4+ICAgICA+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFu
X3VkcDQuYyBiL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMKPj4gCj4+ICAgICA+PiBp
bmRleCA5ZTlkZjcyLi4xZmNmYWYxIDEwMDY0NAo+PiAKPj4gICAgID4+IC0tLSBhL2xpYi9saWJy
dGVfZ3JvL2dyb192eGxhbl91ZHA0LmMKPj4gCj4+ICAgICA+PiArKysgYi9saWIvbGlicnRlX2dy
by9ncm9fdnhsYW5fdWRwNC5jCj4+IAo+PiAgICAgPj4gQEAgLTIwMyw3ICsyMDMsNyBAQAo+PiAK
Pj4gICAgID4+ICB9Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gIHN0YXRpYyBpbmxpbmUg
aW50Cj4+IAo+PiAgICAgPj4gLXVkcF9jaGVja192eGxhbl9uZWlnaGJvcihzdHJ1Y3QgZ3JvX3Z4
bGFuX3VkcDRfaXRlbSAqaXRlbSwKPj4gCj4+ICAgICA+PiArdWRwNF9jaGVja192eGxhbl9uZWln
aGJvcihzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfaXRlbSAqaXRlbSwKPj4gCj4+ICAgICA+PiAgICAg
ICAgICAgICAgICAgdWludDE2X3QgZnJhZ19vZmZzZXQsCj4+IAo+PiAgICAgPj4gICAgICAgICAg
ICAgICAgIHVpbnQxNl90IGlwX2RsKQo+PiAKPj4gICAgID4+ICB7Cj4+IAo+PiAgICAgPj4gQEAg
LTIxMyw3ICsyMTMsNyBAQAo+PiAKPj4gICAgID4+ICAgICAgICAgaW50IHJldCA9IDA7Cj4+IAo+
PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gICAgICAgICBsMl9vZmZzZXQgPSBwa3QtPm91dGVyX2wy
X2xlbiArIHBrdC0+b3V0ZXJfbDNfbGVuOwo+PiAKPj4gICAgID4+IC0gICAgICAgY21wID0gdWRw
X2NoZWNrX25laWdoYm9yKCZpdGVtLT5pbm5lcl9pdGVtLCBmcmFnX29mZnNldCwgaXBfZGwsCj4+
IAo+PiAgICAgPj4gKyAgICAgICBjbXAgPSB1ZHA0X2NoZWNrX25laWdoYm9yKCZpdGVtLT5pbm5l
cl9pdGVtLCBmcmFnX29mZnNldCwgaXBfZGwsCj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGwyX29mZnNldCk7Cj4+IAo+PiAgICAgPj4gICAgICAg
ICAvKiBWWExBTiBvdXRlciBJUCBJRCBpcyBvdXQgb2Ygb3JkZXIsIHNvIGRvbid0IHRvdWNoIGl0
IGFuZAo+PiAKPj4gICAgID4+ICAgICAgICAgICogZG9uJ3QgY29tcGFyZSBpdC4KPj4gCj4+ICAg
ICA+PiBAQCAtMzc5LDcgKzM3OSw3IEBACj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgIGl0
ZW1faWR4ID0gaW5zZXJ0X25ld19pdGVtKHRibCwgcGt0LCBzdGFydF90aW1lLAo+PiAKPj4gICAg
ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9BUlJBWV9JTkRFWCwg
ZnJhZ19vZmZzZXQsCj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc19sYXN0X2ZyYWcsIG91dGVyX2lwX2lkLCBvdXRlcl9pc19hdG9taWMpOwo+PiAKPj4gICAg
ID4+IC0gICAgICAgICAgICAgICBpZiAoaXRlbV9pZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkK
Pj4gCj4+ICAgICA+PiArICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGl0ZW1faWR4ID09IElO
VkFMSURfQVJSQVlfSU5ERVgpKQo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAtMTsKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgaWYgKGluc2VydF9uZXdf
Zmxvdyh0YmwsICZrZXksIGl0ZW1faWR4KSA9PQo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSU5WQUxJRF9BUlJBWV9JTkRFWCkgewo+PiAKPj4gICAgID4+IEBA
IC0zOTcsNyArMzk3LDcgQEAKPj4gCj4+ICAgICA+PiAgICAgICAgIGN1cl9pZHggPSB0YmwtPmZs
b3dzW2ldLnN0YXJ0X2luZGV4Owo+PiAKPj4gICAgID4+ICAgICAgICAgcHJldl9pZHggPSBjdXJf
aWR4Owo+PiAKPj4gICAgID4+ICAgICAgICAgZG8gewo+PiAKPj4gICAgID4+IC0gICAgICAgICAg
ICAgICBjbXAgPSB1ZHBfY2hlY2tfdnhsYW5fbmVpZ2hib3IoJih0YmwtPml0ZW1zW2N1cl9pZHhd
KSwKPj4gCj4+ICAgICA+PiArICAgICAgICAgICAgICAgY21wID0gdWRwNF9jaGVja192eGxhbl9u
ZWlnaGJvcigmKHRibC0+aXRlbXNbY3VyX2lkeF0pLAo+PiAKPj4gICAgID4+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJhZ19vZmZzZXQsIGlwX2RsKTsKPj4gCj4+ICAgICA+PiAg
ICAgICAgICAgICAgICAgaWYgKGNtcCkgewo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtZXJnZV90d29fdnhsYW5fdWRwNF9wYWNrZXRzKAo+PiAKPj4gICAgID4+IEBA
IC00MzYsNyArNDM2LDcgQEAKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgaXRlbV9pZHgg
PSBpbnNlcnRfbmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3RpbWUsCj4+IAo+PiAgICAgPj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX0FSUkFZX0lOREVYLCBmcmFnX29m
ZnNldCwKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xh
c3RfZnJhZywgb3V0ZXJfaXBfaWQsIG91dGVyX2lzX2F0b21pYyk7Cj4+IAo+PiAgICAgPj4gLSAg
ICAgICAgICAgICAgIGlmIChpdGVtX2lkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVYKQo+PiAKPj4g
ICAgID4+ICsgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoaXRlbV9pZHggPT0gSU5WQUxJRF9B
UlJBWV9JTkRFWCkpCj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC0xOwo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5p
bm5lcl9pdGVtLm5leHRfcGt0X2lkeCA9IGN1cl9pZHg7Cj4+IAo+PiAgICAgPj4gICAgICAgICAg
ICAgICAgIHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXggPSBpdGVtX2lkeDsKPj4gCj4+ICAgICA+
PiBAQCAtNDcwLDcgKzQ3MCw3IEBACj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgIGlwX2Rs
ID0gcGt0LT5wa3RfbGVuIC0gaGRyX2xlbjsKPj4gCj4+ICAgICA+PiBkaWZmIC0tZ2l0IGEvbGli
L2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuYyBiL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91
ZHA0LmMKPj4gCj4+ICAgICA+PiBpbmRleCA5ZTlkZjcyLi4xZmNmYWYxIDEwMDY0NAo+PiAKPj4g
ICAgID4+IC0tLSBhL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMKPj4gCj4+ICAgICA+
PiArKysgYi9saWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5jCj4+IAo+PiAgICAgPj4gQEAg
LTIwMyw3ICsyMDMsNyBAQAo+PiAKPj4gICAgID4+ICB9Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAg
ICAgPj4gIHN0YXRpYyBpbmxpbmUgaW50Cj4+IAo+PiAgICAgPj4gLXVkcF9jaGVja192eGxhbl9u
ZWlnaGJvcihzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfaXRlbSAqaXRlbSwKPj4gCj4+ICAgICA+PiAr
dWRwNF9jaGVja192eGxhbl9uZWlnaGJvcihzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfaXRlbSAqaXRl
bSwKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgdWludDE2X3QgZnJhZ19vZmZzZXQsCj4+
IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgIHVpbnQxNl90IGlwX2RsKQo+PiAKPj4gICAgID4+
ICB7Cj4+IAo+PiAgICAgPj4gQEAgLTIxMyw3ICsyMTMsNyBAQAo+PiAKPj4gICAgID4+ICAgICAg
ICAgaW50IHJldCA9IDA7Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gICAgICAgICBsMl9v
ZmZzZXQgPSBwa3QtPm91dGVyX2wyX2xlbiArIHBrdC0+b3V0ZXJfbDNfbGVuOwo+PiAKPj4gICAg
ID4+IC0gICAgICAgY21wID0gdWRwX2NoZWNrX25laWdoYm9yKCZpdGVtLT5pbm5lcl9pdGVtLCBm
cmFnX29mZnNldCwgaXBfZGwsCj4+IAo+PiAgICAgPj4gKyAgICAgICBjbXAgPSB1ZHA0X2NoZWNr
X25laWdoYm9yKCZpdGVtLT5pbm5lcl9pdGVtLCBmcmFnX29mZnNldCwgaXBfZGwsCj4+IAo+PiAg
ICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwyX29mZnNldCk7
Cj4+IAo+PiAgICAgPj4gICAgICAgICAvKiBWWExBTiBvdXRlciBJUCBJRCBpcyBvdXQgb2Ygb3Jk
ZXIsIHNvIGRvbid0IHRvdWNoIGl0IGFuZAo+PiAKPj4gICAgID4+ICAgICAgICAgICogZG9uJ3Qg
Y29tcGFyZSBpdC4KPj4gCj4+ICAgICA+PiBAQCAtMzc5LDcgKzM3OSw3IEBACj4+IAo+PiAgICAg
Pj4gICAgICAgICAgICAgICAgIGl0ZW1faWR4ID0gaW5zZXJ0X25ld19pdGVtKHRibCwgcGt0LCBz
dGFydF90aW1lLAo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SU5WQUxJRF9BUlJBWV9JTkRFWCwgZnJhZ19vZmZzZXQsCj4+IAo+PiAgICAgPj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpc19sYXN0X2ZyYWcsIG91dGVyX2lwX2lkLCBvdXRlcl9p
c19hdG9taWMpOwo+PiAKPj4gICAgID4+IC0gICAgICAgICAgICAgICBpZiAoaXRlbV9pZHggPT0g
SU5WQUxJRF9BUlJBWV9JTkRFWCkKPj4gCj4+ICAgICA+PiArICAgICAgICAgICAgICAgaWYgKHVu
bGlrZWx5KGl0ZW1faWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpKQo+PiAKPj4gICAgID4+ICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKPj4gCj4+ICAgICA+PiAgICAgICAgICAg
ICAgICAgaWYgKGluc2VydF9uZXdfZmxvdyh0YmwsICZrZXksIGl0ZW1faWR4KSA9PQo+PiAKPj4g
ICAgID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9BUlJBWV9JTkRF
WCkgewo+PiAKPj4gICAgID4+IEBAIC0zOTcsNyArMzk3LDcgQEAKPj4gCj4+ICAgICA+PiAgICAg
ICAgIGN1cl9pZHggPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Owo+PiAKPj4gICAgID4+ICAg
ICAgICAgcHJldl9pZHggPSBjdXJfaWR4Owo+PiAKPj4gICAgID4+ICAgICAgICAgZG8gewo+PiAK
Pj4gICAgID4+IC0gICAgICAgICAgICAgICBjbXAgPSB1ZHBfY2hlY2tfdnhsYW5fbmVpZ2hib3Io
Jih0YmwtPml0ZW1zW2N1cl9pZHhdKSwKPj4gCj4+ICAgICA+PiArICAgICAgICAgICAgICAgY21w
ID0gdWRwNF9jaGVja192eGxhbl9uZWlnaGJvcigmKHRibC0+aXRlbXNbY3VyX2lkeF0pLAo+PiAK
Pj4gICAgID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ19vZmZzZXQsIGlw
X2RsKTsKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgaWYgKGNtcCkgewo+PiAKPj4gICAg
ID4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZV90d29fdnhsYW5fdWRwNF9wYWNr
ZXRzKAo+PiAKPj4gICAgID4+IEBAIC00MzYsNyArNDM2LDcgQEAKPj4gCj4+ICAgICA+PiAgICAg
ICAgICAgICAgICAgaXRlbV9pZHggPSBpbnNlcnRfbmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3Rp
bWUsCj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElE
X0FSUkFZX0lOREVYLCBmcmFnX29mZnNldCwKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzX2xhc3RfZnJhZywgb3V0ZXJfaXBfaWQsIG91dGVyX2lzX2F0b21p
Yyk7Cj4+IAo+PiAgICAgPj4gLSAgICAgICAgICAgICAgIGlmIChpdGVtX2lkeCA9PSBJTlZBTElE
X0FSUkFZX0lOREVYKQo+PiAKPj4gICAgID4+ICsgICAgICAgICAgICAgICBpZiAodW5saWtlbHko
aXRlbV9pZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkpCj4+IAo+PiAgICAgPj4gICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAgICB0
YmwtPml0ZW1zW2l0ZW1faWR4XS5pbm5lcl9pdGVtLm5leHRfcGt0X2lkeCA9IGN1cl9pZHg7Cj4+
IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgIHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXggPSBp
dGVtX2lkeDsKPj4gCj4+ICAgICA+PiBAQCAtNDcwLDcgKzQ3MCw3IEBACj4+IAo+PiAgICAgPj4g
ICAgICAgICAgICAgICAgIGlwX2RsID0gcGt0LT5wa3RfbGVuIC0gaGRyX2xlbjsKPj4gCj4+ICAg
ICA+PiAgICAgICAgICAgICAgICAgZnJhZ19vZmZzZXQgPSB0YmwtPml0ZW1zW2l0ZW1faWR4XS5p
bm5lcl9pdGVtLmZyYWdfb2Zmc2V0Owo+PiAKPj4gICAgID4+ICAgICAgICAgICAgICAgICBpc19s
YXN0X2ZyYWcgPSB0YmwtPml0ZW1zW2l0ZW1faWR4XS5pbm5lcl9pdGVtLmlzX2xhc3RfZnJhZzsK
Pj4gCj4+ICAgICA+PiAtICAgICAgICAgICAgICAgY21wID0gdWRwX2NoZWNrX3Z4bGFuX25laWdo
Ym9yKCYodGJsLT5pdGVtc1tzdGFydF9pZHhdKSwKPj4gCj4+ICAgICA+PiArICAgICAgICAgICAg
ICAgY21wID0gdWRwNF9jaGVja192eGxhbl9uZWlnaGJvcigmKHRibC0+aXRlbXNbc3RhcnRfaWR4
XSksCj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYWdfb2Zmc2V0LCBpcF9kbCk7Cj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgIGlmIChj
bXApIHsKPj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VfdHdv
X3Z4bGFuX3VkcDRfcGFja2V0cygKPj4gCj4+ICAgICA+PiBAQCAtNDgxLDEyICs0ODEsMTAgQEAK
Pj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElOVkFMSURfQVJSQVlfSU5ERVgpOwo+PiAKPj4gICAgID4+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGJsLT5pdGVtc1tzdGFydF9pZHhdLmlubmVyX2l0ZW0u
bmV4dF9wa3RfaWR4Cj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gaXRlbV9pZHg7Cj4+IAo+PiAgICAgPj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKPj4gCj4+ICAgICA+PiArICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UK
Pj4gCj4+ICAgICA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+
PiAKPj4gICAgID4+IC0gICAgICAgICAgICAgICAgICAgICAgIH0KPj4gCj4+ICAgICA+PiAtICAg
ICAgICAgICAgICAgfSBlbHNlIHsKPj4gCj4+ICAgICA+PiArICAgICAgICAgICAgICAgfSBlbHNl
Cj4+IAo+PiAgICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+IAo+PiAg
ICAgPj4gLSAgICAgICAgICAgICAgIH0KPj4gCj4+ICAgICA+PiAgICAgICAgIH0KPj4gCj4+ICAg
ICA+PiAKPj4gCj4+ICAgICA+PiAgICAgICAgIHJldHVybiAwOwo+PiAKPj4gICAgID4+IAo+PiAK
Pj4gICAgID4+IAo+PiAKPj4gICAgID4+IEF0IDIwMjAtMDktMTEgMTI6MjQ6MTYsICJKaWF5dSBI
dSIgPGppYXl1Lmh1QGludGVsLmNvbT4gd3JvdGU6Cj4+IAo+PiAgICAgPj4gPlNvbWUgY29tbWVu
dHMgYXJlIGlubGluZS4KPj4gCj4+ICAgICA+PiA+Cj4+IAo+PiAgICAgPj4gPlRoYW5rcywKPj4g
Cj4+ICAgICA+PiA+SmlheXUKPj4gCj4+ICAgICA+PiA+Cj4+IAo+PiAgICAgPj4gPk9uIFRodSwg
U2VwIDEwLCAyMDIwIGF0IDA1OjI5OjE0UE0gKzA4MDAsIHlhbmdfeV95aUAxNjMuY29tIHdyb3Rl
Ogo+PiAKPj4gICAgID4+ID4+IEZyb206IFlpIFlhbmcgPHlhbmd5aTAxQGluc3B1ci5jb20+Cj4+
IAo+PiAgICAgPj4gPj4KPj4gCj4+ICAgICA+PiA+PiBWWExBTiBVRFAgR1JPIGNhbiBoZWxwIGlt
cHJvdmUgVk0tdG8tVk0gVURQIHBlcmZvcm1hbmNlCj4+IAo+PiAgICAgPj4gPj4gd2hlbiBWTSBp
cyBlbmFibGVkIFVGTyBvciBHU08sIEdSTyBtdXN0IGJlIHN1cHBvcnRlZCBpZgo+PiAKPj4gICAg
ID4+ID4+IEdTTyBvciBVRk8gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlLCBwZXJmb3JtYW5jZSBnYWlu
IHdpbGwKPj4gCj4+ICAgICA+PiA+PiBiZSBodXJ0Lgo+PiAKPj4gICAgID4+ID4+Cj4+IAo+PiAg
ICAgPj4gPj4gV2l0aCB0aGlzIGVuYWJsZWQgaW4gRFBESywgT1ZTIERQREsgY2FuIGxldmVyYWdl
IGl0IHRvCj4+IAo+PiAgICAgPj4gPj4gaW1wcm92ZSBWTS10by1WTSBVRFAgcGVyZm9ybWFuY2Us
IHRoaXMgd2lsbCBtYWtlIHN1cmUKPj4gCj4+ICAgICA+PiA+PiBJUCBmcmFnbWVudHMgd2lsbCBi
ZSByZWFzc2VtYmxlZCBvbmNlIGl0IGlzIHJlY2VpdmVkCj4+IAo+PiAgICAgPj4gPj4gZnJvbSBw
aHlzaWNhbCBOSUMuIEl0IGlzIHZlcnkgaGVscGZ1bCBpbiBPVlMgRFBESyBWWExBTgo+PiAKPj4g
ICAgID4+ID4+IFRTTyBjYXNlLgo+PiAKPj4gICAgID4+ID4+Cj4+IAo+PiAgICAgPj4gPj4gU2ln
bmVkLW9mZi1ieTogWWkgWWFuZyA8eWFuZ3lpMDFAaW5zcHVyLmNvbT4KPj4gCj4+ICAgICA+PiA+
PiAtLS0KPj4gCj4+ICAgICA+PiA+PiAgbGliL2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuaCAgICAgICB8
ICAgMSArCj4+IAo+PiAgICAgPj4gPj4gIGxpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMg
fCA1NDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAKPj4gICAg
ID4+ID4+ICBsaWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5oIHwgMTUyICsrKysrKysrKysr
Cj4+IAo+PiAgICAgPj4gPj4gIGxpYi9saWJydGVfZ3JvL21lc29uLmJ1aWxkICAgICAgfCAgIDIg
Ky0KPj4gCj4+ICAgICA+PiA+PiAgbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5jICAgICAgICB8IDEx
NSArKysrKysrLS0KPj4gCj4+ICAgICA+PiA+PiAgbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5oICAg
ICAgICB8ICAgMyArCj4+IAo+PiAgICAgPj4gPj4gIDYgZmlsZXMgY2hhbmdlZCwgNzk0IGluc2Vy
dGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQo+PiAKPj4gICAgID4+ID4+ICBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuYwo+PiAKPj4gICAgID4+ID4+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuaAo+PiAKPj4g
ICAgID4+ID4+Cj4+IAo+PiAgICAgPj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZ3JvL2dy
b191ZHA0LmggYi9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5oCj4+IAo+PiAgICAgPj4gPj4gaW5k
ZXggMGEwNzhlNC4uZDM4YjM5MyAxMDA2NDQKPj4gCj4+ICAgICA+PiA+PiAtLS0gYS9saWIvbGli
cnRlX2dyby9ncm9fdWRwNC5oCj4+IAo+PiAgICAgPj4gPj4gKysrIGIvbGliL2xpYnJ0ZV9ncm8v
Z3JvX3VkcDQuaAo+PiAKPj4gICAgID4+ID4+IEBAIC03LDYgKzcsNyBAQAo+PiAKPj4gICAgID4+
ID4+Cj4+IAo+PiAgICAgPj4gPj4gICNpbmNsdWRlIDxydGVfaXAuaD4KPj4gCj4+ICAgICA+PiA+
PiAgI2luY2x1ZGUgPHJ0ZV91ZHAuaD4KPj4gCj4+ICAgICA+PiA+PiArI2luY2x1ZGUgPHJ0ZV92
eGxhbi5oPgo+PiAKPj4gICAgID4+ID4+Cj4+IAo+PiAgICAgPj4gPj4gICNkZWZpbmUgSU5WQUxJ
RF9BUlJBWV9JTkRFWCAweGZmZmZmZmZmVUwKPj4gCj4+ICAgICA+PiA+PiAgI2RlZmluZSBHUk9f
VURQNF9UQkxfTUFYX0lURU1fTlVNICgxMDI0VUwgKiAxMDI0VUwpCj4+IAo+PiAgICAgPj4gPj4g
ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMgYi9saWIvbGlicnRl
X2dyby9ncm9fdnhsYW5fdWRwNC5jCj4+IAo+PiAgICAgPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2
NDQKPj4gCj4+ICAgICA+PiA+PiBpbmRleCAwMDAwMDAwLi45ZTlkZjcyCj4+IAo+PiAgICAgPj4g
Pj4gLS0tIC9kZXYvbnVsbAo+PiAKPj4gICAgID4+ID4+ICsrKyBiL2xpYi9saWJydGVfZ3JvL2dy
b192eGxhbl91ZHA0LmMKPj4gCj4+ICAgICA+PiA+PiBAQCAtMCwwICsxLDU0OCBAQAo+PiAKPj4g
ICAgID4+ID4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCj4+IAo+
PiAgICAgPj4gPj4gKyAqIENvcHlyaWdodChjKSAyMDIwIEluc3B1ciBDb3Jwb3JhdGlvbgo+PiAK
Pj4gICAgID4+ID4+ICsgKi8KPj4gCj4+ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gKwo+
PiAKPj4gICAgID4+ID4+ICsKPj4gCj4+ICAgICA+PiA+PiArc3RhdGljIGlubGluZSB1aW50MzJf
dAo+PiAKPj4gICAgID4+ID4+ICtkZWxldGVfaXRlbShzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfdGJs
ICp0YmwsCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIHVpbnQzMl90IGl0ZW1faWR4LAo+
PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICB1aW50MzJfdCBwcmV2X2l0ZW1faWR4KQo+PiAK
Pj4gICAgID4+ID4+ICt7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICB1aW50MzJfdCBuZXh0X2lkeCA9
IHRibC0+aXRlbXNbaXRlbV9pZHhdLmlubmVyX2l0ZW0ubmV4dF9wa3RfaWR4Owo+PiAKPj4gICAg
ID4+ID4+ICsKPj4gCj4+ICAgICA+PiA+PiArICAgIC8qIE5VTEwgaW5kaWNhdGVzIGFuIGVtcHR5
IGl0ZW0uICovCj4+IAo+PiAgICAgPj4gPj4gKyAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5pbm5l
cl9pdGVtLmZpcnN0c2VnID0gTlVMTDsKPj4gCj4+ICAgICA+PiA+PiArICAgIHRibC0+aXRlbV9u
dW0tLTsKPj4gCj4+ICAgICA+PiA+PiArICAgIGlmIChwcmV2X2l0ZW1faWR4ICE9IElOVkFMSURf
QVJSQVlfSU5ERVgpCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIHRibC0+aXRlbXNbcHJl
dl9pdGVtX2lkeF0uaW5uZXJfaXRlbS5uZXh0X3BrdF9pZHggPSBuZXh0X2lkeDsKPj4gCj4+ICAg
ICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gKyAgICByZXR1cm4gbmV4dF9pZHg7Cj4+IAo+PiAg
ICAgPj4gPj4gK30KPj4gCj4+ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gK3N0YXRpYyBp
bmxpbmUgdWludDMyX3QKPj4gCj4+ICAgICA+PiA+PiAraW5zZXJ0X25ld19mbG93KHN0cnVjdCBn
cm9fdnhsYW5fdWRwNF90YmwgKnRibCwKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgc3Ry
dWN0IHZ4bGFuX3VkcDRfZmxvd19rZXkgKnNyYywKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAg
ICAgdWludDMyX3QgaXRlbV9pZHgpCj4+IAo+PiAgICAgPj4gPj4gK3sKPj4gCj4+ICAgICA+PiA+
PiArICAgIHN0cnVjdCB2eGxhbl91ZHA0X2Zsb3dfa2V5ICpkc3Q7Cj4+IAo+PiAgICAgPj4gPj4g
KyAgICB1aW50MzJfdCBmbG93X2lkeDsKPj4gCj4+ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4g
Pj4gKyAgICBmbG93X2lkeCA9IGZpbmRfYW5fZW1wdHlfZmxvdyh0YmwpOwo+PiAKPj4gICAgID4+
ID4+ICsgICAgaWYgKHVubGlrZWx5KGZsb3dfaWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpKQo+
PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9BUlJBWV9JTkRFWDsK
Pj4gCj4+ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gKyAgICBkc3QgPSAmKHRibC0+Zmxv
d3NbZmxvd19pZHhdLmtleSk7Cj4+IAo+PiAgICAgPj4gPj4gKwo+PiAKPj4gICAgID4+ID4+ICsg
ICAgcnRlX2V0aGVyX2FkZHJfY29weSgmKHNyYy0+aW5uZXJfa2V5LmV0aF9zYWRkciksCj4+IAo+
PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgJihkc3QtPmlubmVyX2tleS5ldGhfc2Fk
ZHIpKTsKPj4gCj4+ICAgICA+PiA+PiArICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihzcmMtPmlu
bmVyX2tleS5ldGhfZGFkZHIpLAo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAg
ICYoZHN0LT5pbm5lcl9rZXkuZXRoX2RhZGRyKSk7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICBkc3Qt
PmlubmVyX2tleS5pcF9zcmNfYWRkciA9IHNyYy0+aW5uZXJfa2V5LmlwX3NyY19hZGRyOwo+PiAK
Pj4gICAgID4+ID4+ICsgICAgZHN0LT5pbm5lcl9rZXkuaXBfZHN0X2FkZHIgPSBzcmMtPmlubmVy
X2tleS5pcF9kc3RfYWRkcjsKPj4gCj4+ICAgICA+PiA+PiArICAgIGRzdC0+aW5uZXJfa2V5Lmlw
X2lkID0gc3JjLT5pbm5lcl9rZXkuaXBfaWQ7Cj4+IAo+PiAgICAgPj4gPj4gKwo+PiAKPj4gICAg
ID4+ID4+ICsgICAgZHN0LT52eGxhbl9oZHIudnhfZmxhZ3MgPSBzcmMtPnZ4bGFuX2hkci52eF9m
bGFnczsKPj4gCj4+ICAgICA+PiA+PiArICAgIGRzdC0+dnhsYW5faGRyLnZ4X3ZuaSA9IHNyYy0+
dnhsYW5faGRyLnZ4X3ZuaTsKPj4gCj4+ICAgICA+PiA+PiArICAgIHJ0ZV9ldGhlcl9hZGRyX2Nv
cHkoJihzcmMtPm91dGVyX2V0aF9zYWRkciksICYoZHN0LT5vdXRlcl9ldGhfc2FkZHIpKTsKPj4g
Cj4+ICAgICA+PiA+PiArICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihzcmMtPm91dGVyX2V0aF9k
YWRkciksICYoZHN0LT5vdXRlcl9ldGhfZGFkZHIpKTsKPj4gCj4+ICAgICA+PiA+PiArICAgIGRz
dC0+b3V0ZXJfaXBfc3JjX2FkZHIgPSBzcmMtPm91dGVyX2lwX3NyY19hZGRyOwo+PiAKPj4gICAg
ID4+ID4+ICsgICAgZHN0LT5vdXRlcl9pcF9kc3RfYWRkciA9IHNyYy0+b3V0ZXJfaXBfZHN0X2Fk
ZHI7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICBkc3QtPm91dGVyX3NyY19wb3J0ID0gc3JjLT5vdXRl
cl9zcmNfcG9ydDsKPj4gCj4+ICAgICA+PiA+PiArICAgIGRzdC0+b3V0ZXJfZHN0X3BvcnQgPSBz
cmMtPm91dGVyX2RzdF9wb3J0Owo+PiAKPj4gICAgID4+ID4+ICsKPj4gCj4+ICAgICA+PiA+PiAr
ICAgIHRibC0+Zmxvd3NbZmxvd19pZHhdLnN0YXJ0X2luZGV4ID0gaXRlbV9pZHg7Cj4+IAo+PiAg
ICAgPj4gPj4gKyAgICB0YmwtPmZsb3dfbnVtKys7Cj4+IAo+PiAgICAgPj4gPj4gKwo+PiAKPj4g
ICAgID4+ID4+ICsgICAgcmV0dXJuIGZsb3dfaWR4Owo+PiAKPj4gICAgID4+ID4+ICt9Cj4+IAo+
PiAgICAgPj4gPj4gKwo+PiAKPj4gICAgID4+ID4+ICtzdGF0aWMgaW5saW5lIGludAo+PiAKPj4g
ICAgID4+ID4+ICtpc19zYW1lX3Z4bGFuX3VkcDRfZmxvdyhzdHJ1Y3QgdnhsYW5fdWRwNF9mbG93
X2tleSBrMSwKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgc3RydWN0IHZ4bGFuX3VkcDRf
Zmxvd19rZXkgazIpCj4+IAo+PiAgICAgPj4gPj4gK3sKPj4gCj4+ICAgICA+PiA+PiArICAgIC8q
IHNyYyBwb3J0IGlzIGNoYW5naW5nLCBzbyBzaG91bGRuJ3QgdXNlIGl0IGZvciBmbG93IGNoZWNr
ICovCj4+IAo+PiAgICAgPj4gPgo+PiAKPj4gICAgID4+ID5BcyBJIGtub3csIGZyYWdtZW50cyBv
ZiBhIHZ4bGFuL3VkcC9pcHY0IHBhY2tldCBoYXZlIHNhbWUgb3V0ZXIgc291cmNlCj4+IAo+PiAg
ICAgPj4gPnBvcnQuIEluIHdoYXQgY2FzZXMgb3V0ZXIgc291cmNlIHBvcnQgd2lsbCBjaGFuZ2U/
Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gSW4gT1ZTLCB2eGxhbiB1ZHAgc291cmUgcG9y
dCBpcyBjYWxjdWxhdGVkIGZyb20gaW5uZXIgcGFja2V0IFJTUywgc28gZm9yIFVEUCBmcmFnbWVu
dCwgUlNTIG9mIGZpcnN0IHBhY2tldCBpcwo+PiAKPj4gICAgID4+IGRpZmZlcmVudCBmcm9tIG90
aGVyIGZyYWdtZW50cyBiZWNhdXNlIFJTUyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIDUgdHVwbGVz
IChzcmMgaXAsIHNyYyBwb3J0LCBkc3QgaXAsIGRzdCBwb3J0LAo+PiAKPj4gICAgID4+IHByb3Rv
Y29sIHR5cGUpLgo+PiAKPj4gICAgID4+IAo+PiAKPj4gICAgID4+IG92cy9saWIvbmV0ZGV2LW5h
dGl2ZS10bmwuaDoKPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiBzdGF0aWMgaW5saW5lIHVp
bnQzMl90ICoKPj4gCj4+ICAgICA+PiBkcF9wYWNrZXRfcnNzX3B0cihjb25zdCBzdHJ1Y3QgZHBf
cGFja2V0ICpiKQo+PiAKPj4gICAgID4+IHsKPj4gCj4+ICAgICA+PiAgICAgcmV0dXJuIENPTlNU
X0NBU1QodWludDMyX3QgKiwgJmItPm1idWYuaGFzaC5yc3MpOwo+PiAKPj4gICAgID4+IH0KPj4g
Cj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiBzdGF0aWMgaW5saW5lIHVpbnQzMl90Cj4+IAo+PiAg
ICAgPj4gZHBfcGFja2V0X2dldF9yc3NfaGFzaChjb25zdCBzdHJ1Y3QgZHBfcGFja2V0ICpwKQo+
PiAKPj4gICAgID4+IHsKPj4gCj4+ICAgICA+PiAgICAgcmV0dXJuICpkcF9wYWNrZXRfcnNzX3B0
cihwKTsKPj4gCj4+ICAgICA+PiB9Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gc3RhdGlj
IGlubGluZSBvdnNfYmUxNgo+PiAKPj4gICAgID4+IG5ldGRldl90bmxfZ2V0X3NyY19wb3J0KHN0
cnVjdCBkcF9wYWNrZXQgKnBhY2tldCkKPj4gCj4+ICAgICA+PiB7Cj4+IAo+PiAgICAgPj4gICAg
IHVpbnQzMl90IGhhc2g7Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gICAgIGhhc2ggPSBk
cF9wYWNrZXRfZ2V0X3Jzc19oYXNoKHBhY2tldCk7Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAg
Pj4gICAgIHJldHVybiBodG9ucygoKCh1aW50NjRfdCkgaGFzaCAqICh0bmxfdWRwX3BvcnRfbWF4
IC0gdG5sX3VkcF9wb3J0X21pbikpID4+IDMyKSArCj4+IAo+PiAgICAgPj4gICAgICAgICAgICAg
ICAgICB0bmxfdWRwX3BvcnRfbWluKTsKPj4gCj4+ICAgICA+PiB9Cj4+IAo+PiAgICAgPj4gCj4+
IAo+PiAgICAgPj4gdm9pZAo+PiAKPj4gICAgID4+IG5ldGRldl90bmxfcHVzaF91ZHBfaGVhZGVy
KGNvbnN0IHN0cnVjdCBuZXRkZXYgKm5ldGRldiBPVlNfVU5VU0VELAo+PiAKPj4gICAgID4+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcF9wYWNrZXQgKnBhY2tldCwKPj4gCj4+
ICAgICA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3ZzX2FjdGlv
bl9wdXNoX3RubCAqZGF0YSkKPj4gCj4+ICAgICA+PiB7Cj4+IAo+PiAgICAgPj4gICAgIHN0cnVj
dCB1ZHBfaGVhZGVyICp1ZHA7Cj4+IAo+PiAgICAgPj4gICAgIGludCBpcF90b3Rfc2l6ZTsKPj4g
Cj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiAgICAgdWRwID0gbmV0ZGV2X3RubF9wdXNoX2lwX2hl
YWRlcihwYWNrZXQsIGRhdGEtPmhlYWRlciwgZGF0YS0+aGVhZGVyX2xlbiwgJmlwX3RvdF9zaXpl
KTsKPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiAgICAgLyogc2V0IHVkcCBzcmMgcG9ydCAq
Lwo+PiAKPj4gICAgID4+ICAgICB1ZHAtPnVkcF9zcmMgPSBuZXRkZXZfdG5sX2dldF9zcmNfcG9y
dChwYWNrZXQpOwo+PiAKPj4gICAgID4+ICAgICB1ZHAtPnVkcF9sZW4gPSBodG9ucyhpcF90b3Rf
c2l6ZSk7Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gICAgIGlmICh1ZHAtPnVkcF9jc3Vt
KSB7Cj4+IAo+PiAgICAgPj4gICAgICAgICBuZXRkZXZfdG5sX2NhbGNfdWRwX2NzdW0odWRwLCBw
YWNrZXQsIGlwX3RvdF9zaXplKTsKPj4gCj4+ICAgICA+PiAgICAgfQo+PiAKPj4gICAgID4+IH0K
Pj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiBUaGlzIGlzIHNwZWNpYWwgZm9yIEVDTVAgd2hp
Y2ggb25seSBjaGVja3Mgb3V0ZXIgaGVhZGVyIHRvIGRpZmZlcmVudGlhdGUgZGlmZmVyZW50IGZs
b3dzIChpbm5uZXIgcGFja2V0KS4gVGhlCj4+IAo+PiAgICAgPj4gZmlyc3QgZnJhZ21lbnQgb2Yg
b3JpZ2luYWwgaW5uZXIgVURQIGlzIGNvbnNpZGVyZWQgYXMgZGlmZmVyZW50IGZsb3cgZnJvbSBv
dGhlciBmcmFnbWVudHMuCj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gSSBmb3VuZCB0aGlz
IGJ5IGRlYnVnZ2luZyBiZWN1YXNlIHRoZSBzYW1lIFVEUCB0cmFmZmljIGRpZCBnZW5lcmF0ZSBk
aWZmZXJlbnQgdnhsYW4gVURQIHNvdXJjZSBwb3J0Lgo+PiAKPj4gICAgID4+IAo+PiAKPj4gICAg
ID4gCj4+IAo+PiAgICAgPllvdSBhcmUgcmlnaHQuIEkgY2hlY2tlZCBWeExBTiBSRkMgNzM0OCwg
YW5kIG91dGVyIHNvdXJjZSBwb3J0IGlzCj4+IAo+PiAgICAgPmNhbGN1bGF0ZWQgZnJvbSBpbm5l
ciBwYWNrZXQuIEluIE9WUyBjYXNlLCB0aGUgZmlyc3QgZnJhZ21lbnQKPj4gCj4+ICAgICA+d2ls
bCBoYXZlIGRpZmZlcmVudCBvdXRlciBzb3VyY2UgcG9ydCBjb21wYXJlZCB3aXRoIG90aGVyIGZy
YWdtZW50cy4KPj4gCj4+ICAgICA+UGxlYXNlIGFkZCBzb21lIGNvbW1lbnRzIGluIHRoZSBjb2Rl
IGZvciBwZW9wbGUgdG8gYmV0dGVyIHVuZGVyc3RhbmQKPj4gCj4+ICAgICA+dGhlIGNvZGUuIElu
IGFkZGl0aW9uLCBuZWVkIHRvIHJlbW92ZSBvdXRlcl9zcmNfcG9ydCBmcm9tIHRoZSBzdHJ1Y3R1
cmUKPj4gCj4+ICAgICA+dnhsYW5fdWRwNF9mbG93X2tleS4KPj4gCj4+ICAgICA+IAo+PiAKPj4g
ICAgID4+ID4KPj4gCj4+ICAgICA+PiA+PiArICAgIHJldHVybiAocnRlX2lzX3NhbWVfZXRoZXJf
YWRkcigmazEub3V0ZXJfZXRoX3NhZGRyLAo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmazIub3V0ZXJfZXRoX3NhZGRyKSAmJgo+PiAKPj4gICAg
ID4+ID4+ICsgICAgICAgICAgICAgICAgICAgIHJ0ZV9pc19zYW1lX2V0aGVyX2FkZHIoJmsxLm91
dGVyX2V0aF9kYWRkciwKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZrMi5vdXRlcl9ldGhfZGFkZHIpICYmCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAg
ICAgICAgICAgKGsxLm91dGVyX2lwX3NyY19hZGRyID09IGsyLm91dGVyX2lwX3NyY19hZGRyKSAm
Jgo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAgIChrMS5vdXRlcl9pcF9kc3Rf
YWRkciA9PSBrMi5vdXRlcl9pcF9kc3RfYWRkcikgJiYKPj4gCj4+ICAgICA+PiA+PiArICAgICAg
ICAgICAgICAgICAgICAoazEub3V0ZXJfZHN0X3BvcnQgPT0gazIub3V0ZXJfZHN0X3BvcnQpICYm
Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgKGsxLnZ4bGFuX2hkci52eF9m
bGFncyA9PSBrMi52eGxhbl9oZHIudnhfZmxhZ3MpICYmCj4+IAo+PiAgICAgPj4gPj4gKyAgICAg
ICAgICAgICAgICAgICAgKGsxLnZ4bGFuX2hkci52eF92bmkgPT0gazIudnhsYW5faGRyLnZ4X3Zu
aSkgJiYKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICBpc19zYW1lX3VkcDRf
ZmxvdyhrMS5pbm5lcl9rZXksIGsyLmlubmVyX2tleSkpOwo+PiAKPj4gICAgID4+ID4+ICt9Cj4+
IAo+PiAgICAgPj4gPj4gKwo+PiAKPj4gICAgID4+ID4+ICtzdGF0aWMgaW5saW5lIGludAo+PiAK
Pj4gICAgID4+ID4+ICt1ZHBfY2hlY2tfdnhsYW5fbmVpZ2hib3Ioc3RydWN0IGdyb192eGxhbl91
ZHA0X2l0ZW0gKml0ZW0sCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIHVpbnQxNl90IGZy
YWdfb2Zmc2V0LAo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICB1aW50MTZfdCBpcF9kbCkK
Pj4gCj4+ICAgICA+PiA+Cj4+IAo+PiAgICAgPj4gPkJldHRlciByZW5hbWUgaXQgYXMgdWRwNF9j
aGVja192eGxhbl9uZWlnaGJvci4KPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiBPawo+PiAK
Pj4gICAgID4+IAo+PiAKPj4gICAgID4+ID4KPj4gCj4+ICAgICA+PiA+PiArewo+PiAKPj4gICAg
ID4+ID4+ICsgICAgc3RydWN0IHJ0ZV9tYnVmICpwa3QgPSBpdGVtLT5pbm5lcl9pdGVtLmZpcnN0
c2VnOwo+PiAKPj4gICAgID4+ID4+ICsgICAgaW50IGNtcDsKPj4gCj4+ICAgICA+PiA+PiArICAg
IHVpbnQxNl90IGwyX29mZnNldDsKPj4gCj4+ICAgICA+PiA+PiArICAgIGludCByZXQgPSAwOwo+
PiAKPj4gICAgID4+ID4+ICsKPj4gCj4+ICAgICA+PiA+PiArICAgIGwyX29mZnNldCA9IHBrdC0+
b3V0ZXJfbDJfbGVuICsgcGt0LT5vdXRlcl9sM19sZW47Cj4+IAo+PiAgICAgPj4gPj4gKyAgICBj
bXAgPSB1ZHBfY2hlY2tfbmVpZ2hib3IoJml0ZW0tPmlubmVyX2l0ZW0sIGZyYWdfb2Zmc2V0LCBp
cF9kbCwKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbDJfb2Zmc2V0KTsKPj4gCj4+ICAgICA+PiA+Cj4+IAo+PiAgICAgPj4gPldoeSBkb24ndCBj
aGVjayBvdXRlciBJUCBJRD8gSWYgb3V0ZXIgREYgYml0IGlzIG5vdCBzZXQsIGFsbCBmcmFnbWVu
dHMKPj4gCj4+ICAgICA+PiA+c2hvdWxkIGhhdmUgaW5jcmVtZW50YWwgb3V0ZXIgSVAgSUQ7IGlm
IERGIGJpdCBpcyBzZXQsIHdlIGRvbid0IG5lZWQKPj4gCj4+ICAgICA+PiA+dG8gY2hlY2sgb3V0
ZXIgSVAgSUQuCj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gQnkgZGVmYXVsdCwgT1ZTIHNl
dCBERiBmbGFnLiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gY29tcGFyZSBvdXRlciBJUCBpZCBi
ZWNhdXNlIGlubmVyIGNoZWNrCj4+IAo+PiAgICAgPj4gaXMgZW5vdWdoIHRvIGRpZmZlcmVudGlh
dGUgaWYgdGhleSBhcmUgc2FtZSBmbG93LCBpc24ndCBpdD8KPj4gCj4+ICAgICA+IAo+PiAKPj4g
ICAgID5PVlMgaXMgb25lIG9mIHdvcmtsb2FkcyB1c2luZyBEUERLLCBhbmQgd2UgY2FuIGFzc3Vt
ZQo+PiAKPj4gICAgID5vdGhlciBjYXNlcyBoYXZlIHRoZSBzYW1lIGRlc2lnbiBhcyBPVlMuIEkg
dGhpbmsgSVAgSUQKPj4gCj4+ICAgICA+Y2hlY2sgaXMgbmVjZXNzYXJ5Lgo+PiAKPj4gICAgID4g
Cj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgPj4gPgo+PiAKPj4gICAgID4+ID5JbiBhZGRpdGlv
biwgdWRwX2NoZWNrX25laWdoYm9yIGlzIHJlbmFtZWQsIGJ1dCB5b3UgZGlkbid0IGNoYW5nZSBo
ZXJlLgo+PiAKPj4gICAgID4+IAo+PiAKPj4gICAgID4+IEZvcmdvdCB0byBidWlsZCBpdCwgTWFr
ZWZpbGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGRwZGsgbWFpbiBicmFuY2gsIGJ1aWxkIGlzbid0
IHNvIGNvbnZpbmllbnQsIHdpbGwKPj4gCj4+ICAgICA+PiB1c2UgbWVzb24gYnVpbGQgdG8gY2hl
Y2sgaXQgZm9yIG5leHQgdmVyc2lvbi4KPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiA+Cj4+
IAo+PiAgICAgPj4gPj4gKyAgICAvKiBWWExBTiBvdXRlciBJUCBJRCBpcyBvdXQgb2Ygb3JkZXIs
IHNvIGRvbid0IHRvdWNoIGl0IGFuZAo+PiAKPj4gICAgID4+ID4+ICsgICAgICogZG9uJ3QgY29t
cGFyZSBpdC4KPj4gCj4+ICAgICA+PiA+PiArICAgICAqLwo+PiAKPj4gICAgID4+ID4+ICsgICAg
aWYgKGNtcCA+IDApCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIC8qIEFwcGVuZCB0aGUg
bmV3IHBhY2tldC4gKi8KPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgcmV0ID0gMTsKPj4g
Cj4+ICAgICA+PiA+PiArICAgIGVsc2UgaWYgKGNtcCA8IDApCj4+IAo+PiAgICAgPj4gPj4gKyAg
ICAgICAgICAgIC8qIFByZXBlbmQgdGhlIG5ldyBwYWNrZXQuICovCj4+IAo+PiAgICAgPj4gPj4g
KyAgICAgICAgICAgIHJldCA9IC0xOwo+PiAKPj4gICAgID4+ID4+ICsKPj4gCj4+ICAgICA+PiA+
PiArICAgIHJldHVybiByZXQ7Cj4+IAo+PiAgICAgPj4gPj4gK30KPj4gCj4+ICAgICA+PiA+PiAr
Cj4+IAo+PiAgICAgPj4gPj4KPj4gCj4+ICAgICA+PiA+PiAgLyoKPj4gCj4+ICAgICA+PiA+PiAg
ICogR1JPIGNvbnRleHQgc3RydWN0dXJlLiBJdCBrZWVwcyB0aGUgdGFibGUgc3RydWN0dXJlcywg
d2hpY2ggYXJlCj4+IAo+PiAgICAgPj4gPj4gQEAgLTEzNywxOSArMTQ4LDI3IEBAIHN0cnVjdCBn
cm9fY3R4IHsKPj4gCj4+ICAgICA+PiA+PiAgICAgIHN0cnVjdCBncm9fdWRwNF9pdGVtIHVkcF9p
dGVtc1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV0gPSB7ezB9IH07Cj4+IAo+PiAgICAgPj4g
Pj4KPj4gCj4+ICAgICA+PiA+PiAgICAgIC8qIEFsbG9jYXRlIGEgcmVhc3NlbWJseSB0YWJsZSBm
b3IgVlhMQU4gVENQIEdSTyAqLwo+PiAKPj4gICAgID4+ID4+IC0gICAgc3RydWN0IGdyb192eGxh
bl90Y3A0X3RibCB2eGxhbl90Ymw7Cj4+IAo+PiAgICAgPj4gPj4gLSAgICBzdHJ1Y3QgZ3JvX3Z4
bGFuX3RjcDRfZmxvdyB2eGxhbl9mbG93c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV07Cj4+
IAo+PiAgICAgPj4gPj4gLSAgICBzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfaXRlbSB2eGxhbl9pdGVt
c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV0KPj4gCj4+ICAgICA+PiA+PiArICAgIHN0cnVj
dCBncm9fdnhsYW5fdGNwNF90YmwgdnhsYW5fdGNwX3RibDsKPj4gCj4+ICAgICA+PiA+PiArICAg
IHN0cnVjdCBncm9fdnhsYW5fdGNwNF9mbG93IHZ4bGFuX3RjcF9mbG93c1tSVEVfR1JPX01BWF9C
VVJTVF9JVEVNX05VTV07Cj4+IAo+PiAgICAgPj4gPj4gKyAgICBzdHJ1Y3QgZ3JvX3Z4bGFuX3Rj
cDRfaXRlbSB2eGxhbl90Y3BfaXRlbXNbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dCj4+IAo+
PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgPSB7e3swfSwgMCwgMH0gfTsKPj4gCj4+
ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gKyAgICAvKiBBbGxvY2F0ZSBhIHJlYXNzZW1i
bHkgdGFibGUgZm9yIFZYTEFOIFVEUCBHUk8gKi8KPj4gCj4+ICAgICA+PiA+PiArICAgIHN0cnVj
dCBncm9fdnhsYW5fdWRwNF90YmwgdnhsYW5fdWRwX3RibDsKPj4gCj4+ICAgICA+PiA+PiArICAg
IHN0cnVjdCBncm9fdnhsYW5fdWRwNF9mbG93IHZ4bGFuX3VkcF9mbG93c1tSVEVfR1JPX01BWF9C
VVJTVF9JVEVNX05VTV07Cj4+IAo+PiAgICAgPj4gPj4gKyAgICBzdHJ1Y3QgZ3JvX3Z4bGFuX3Vk
cDRfaXRlbSB2eGxhbl91ZHBfaXRlbXNbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dCj4+IAo+
PiAgICAgPj4gPj4gICAgICAgICAgICAgICAgICAgICAgPSB7e3swfSwgMCwgMH0gfTsKPj4gCj4+
ICAgICA+PiA+Pgo+PiAKPj4gICAgID4+ID4+ICAgICAgc3RydWN0IHJ0ZV9tYnVmICp1bnByb2Nl
c3NfcGt0c1tuYl9wa3RzXTsKPj4gCj4+ICAgICA+PiA+PiAgICAgIHVpbnQzMl90IGl0ZW1fbnVt
Owo+PiAKPj4gICAgID4+ID4+ICAgICAgaW50MzJfdCByZXQ7Cj4+IAo+PiAgICAgPj4gPj4gICAg
ICB1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMCwgbmJfYWZ0ZXJfZ3JvID0gbmJfcGt0czsK
Pj4gCj4+ICAgICA+PiA+PiAtICAgIHVpbnQ4X3QgZG9fdGNwNF9ncm8gPSAwLCBkb192eGxhbl9n
cm8gPSAwLCBkb191ZHA0X2dybyA9IDA7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICB1aW50OF90IGRv
X3RjcDRfZ3JvID0gMCwgZG9fdnhsYW5fdGNwX2dybyA9IDAsIGRvX3VkcDRfZ3JvID0gMCwKPj4g
Cj4+ICAgICA+PiA+PiArICAgICAgICAgICAgZG9fdnhsYW5fdWRwX2dybyA9IDA7Cj4+IAo+PiAg
ICAgPj4gPj4KPj4gCj4+ICAgICA+PiA+PiAgICAgIGlmICh1bmxpa2VseSgocGFyYW0tPmdyb190
eXBlcyAmIChSVEVfR1JPX0lQVjRfVlhMQU5fVENQX0lQVjQgfAo+PiAKPj4gICAgID4+ID4+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX1RDUF9JUFY0IHwKPj4g
Cj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0dS
T19JUFY0X1ZYTEFOX1VEUF9JUFY0IHwKPj4gCj4+ICAgICA+PiA+PiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19VRFBfSVBWNCkpID09IDApKQo+PiAKPj4gICAg
ID4+ID4+ICAgICAgICAgICAgICByZXR1cm4gbmJfcGt0czsKPj4gCj4+ICAgICA+PiA+Pgo+PiAK
Pj4gICAgID4+ID4+IEBAIC0xNjAsMTUgKzE3OSwyOCBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+IAo+
PiAgICAgPj4gPj4KPj4gCj4+ICAgICA+PiA+PiAgICAgIGlmIChwYXJhbS0+Z3JvX3R5cGVzICYg
UlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0KSB7Cj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBpdGVtX251bTsgaSsrKQo+PiAKPj4gICAgID4+ID4+IC0gICAg
ICAgICAgICAgICAgICAgIHZ4bGFuX2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0gSU5WQUxJRF9BUlJB
WV9JTkRFWDsKPj4gCj4+ICAgICA+PiA+PiAtCj4+IAo+PiAgICAgPj4gPj4gLSAgICAgICAgICAg
IHZ4bGFuX3RibC5mbG93cyA9IHZ4bGFuX2Zsb3dzOwo+PiAKPj4gICAgID4+ID4+IC0gICAgICAg
ICAgICB2eGxhbl90YmwuaXRlbXMgPSB2eGxhbl9pdGVtczsKPj4gCj4+ICAgICA+PiA+PiAtICAg
ICAgICAgICAgdnhsYW5fdGJsLmZsb3dfbnVtID0gMDsKPj4gCj4+ICAgICA+PiA+PiAtICAgICAg
ICAgICAgdnhsYW5fdGJsLml0ZW1fbnVtID0gMDsKPj4gCj4+ICAgICA+PiA+PiAtICAgICAgICAg
ICAgdnhsYW5fdGJsLm1heF9mbG93X251bSA9IGl0ZW1fbnVtOwo+PiAKPj4gICAgID4+ID4+IC0g
ICAgICAgICAgICB2eGxhbl90YmwubWF4X2l0ZW1fbnVtID0gaXRlbV9udW07Cj4+IAo+PiAgICAg
Pj4gPj4gLSAgICAgICAgICAgIGRvX3Z4bGFuX2dybyA9IDE7Cj4+IAo+PiAgICAgPj4gPj4gKyAg
ICAgICAgICAgICAgICAgICAgdnhsYW5fdGNwX2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0gSU5WQUxJ
RF9BUlJBWV9JTkRFWDsKPj4gCj4+ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gKyAgICAg
ICAgICAgIHZ4bGFuX3RjcF90YmwuZmxvd3MgPSB2eGxhbl90Y3BfZmxvd3M7Cj4+IAo+PiAgICAg
Pj4gPj4gKyAgICAgICAgICAgIHZ4bGFuX3RjcF90YmwuaXRlbXMgPSB2eGxhbl90Y3BfaXRlbXM7
Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIHZ4bGFuX3RjcF90YmwuZmxvd19udW0gPSAw
Owo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICB2eGxhbl90Y3BfdGJsLml0ZW1fbnVtID0g
MDsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgdnhsYW5fdGNwX3RibC5tYXhfZmxvd19u
dW0gPSBpdGVtX251bTsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgdnhsYW5fdGNwX3Ri
bC5tYXhfaXRlbV9udW0gPSBpdGVtX251bTsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAg
ZG9fdnhsYW5fdGNwX2dybyA9IDE7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICB9Cj4+IAo+PiAgICAg
Pj4gPj4gKwo+PiAKPj4gICAgID4+ID4+ICsgICAgaWYgKHBhcmFtLT5ncm9fdHlwZXMgJiBSVEVf
R1JPX0lQVjRfVlhMQU5fVURQX0lQVjQpIHsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IGl0ZW1fbnVtOyBpKyspCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAg
ICAgICAgICAgICAgdnhsYW5fdWRwX2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0gSU5WQUxJRF9BUlJB
WV9JTkRFWDsKPj4gCj4+ICAgICA+PiA+PiArCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAg
IHZ4bGFuX3VkcF90YmwuZmxvd3MgPSB2eGxhbl91ZHBfZmxvd3M7Cj4+IAo+PiAgICAgPj4gPj4g
KyAgICAgICAgICAgIHZ4bGFuX3VkcF90YmwuaXRlbXMgPSB2eGxhbl91ZHBfaXRlbXM7Cj4+IAo+
PiAgICAgPj4gPj4gKyAgICAgICAgICAgIHZ4bGFuX3VkcF90YmwuZmxvd19udW0gPSAwOwo+PiAK
Pj4gICAgID4+ID4+ICsgICAgICAgICAgICB2eGxhbl91ZHBfdGJsLml0ZW1fbnVtID0gMDsKPj4g
Cj4+ICAgICA+PiA+PiArICAgICAgICAgICAgdnhsYW5fdWRwX3RibC5tYXhfZmxvd19udW0gPSBp
dGVtX251bTsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgdnhsYW5fdWRwX3RibC5tYXhf
aXRlbV9udW0gPSBpdGVtX251bTsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgZG9fdnhs
YW5fdWRwX2dybyA9IDE7Cj4+IAo+PiAgICAgPj4gPj4gICAgICB9Cj4+IAo+PiAgICAgPj4gPj4K
Pj4gCj4+ICAgICA+PiA+PiAgICAgIGlmIChwYXJhbS0+Z3JvX3R5cGVzICYgUlRFX0dST19UQ1Bf
SVBWNCkgewo+PiAKPj4gICAgID4+ID4+IEBAIC0yMDQsOSArMjM2LDE4IEBAIHN0cnVjdCBncm9f
Y3R4IHsKPj4gCj4+ICAgICA+PiA+PiAgICAgICAgICAgICAgICogd2lsbCBiZSBmbHVzaGVkIGZy
b20gdGhlIHRhYmxlcy4KPj4gCj4+ICAgICA+PiA+PiAgICAgICAgICAgICAgICovCj4+IAo+PiAg
ICAgPj4gPj4gICAgICAgICAgICAgIGlmIChJU19JUFY0X1ZYTEFOX1RDUDRfUEtUKHBrdHNbaV0t
PnBhY2tldF90eXBlKSAmJgo+PiAKPj4gICAgID4+ID4+IC0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9fdnhsYW5fZ3JvKSB7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb192eGxhbl90Y3BfZ3JvKSB7Cj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gZ3JvX3Z4bGFuX3RjcDRfcmVhc3NlbWJsZShwa3RzW2ldLAo+PiAK
Pj4gICAgID4+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnZ4bGFuX3RibCwgMCk7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnhsYW5fdGNwX3RibCwgMCk7
Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA+IDApCj4+IAo+
PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNZXJnZSBzdWNjZXNz
ZnVsbHkgKi8KPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5i
X2FmdGVyX2dyby0tOwo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHJldCA8IDApCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnByb2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTsKPj4gCj4+ICAgICA+
PiA+PiArICAgICAgICAgICAgfSBlbHNlIGlmIChJU19JUFY0X1ZYTEFOX1VEUDRfUEtUKHBrdHNb
aV0tPnBhY2tldF90eXBlKSAmJgo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9fdnhsYW5fdWRwX2dybykgewo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAg
ICAgICAgICAgIHJldCA9IGdyb192eGxhbl91ZHA0X3JlYXNzZW1ibGUocGt0c1tpXSwKPj4gCj4+
ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZ2eGxhbl91ZHBfdGJsLCAwKTsKPj4gCj4+ICAgICA+PiA+PiAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmV0ID4gMCkKPj4gCj4+ICAgICA+PiA+PiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE1lcmdlIHN1Y2Nlc3NmdWxseSAqLwo+PiAKPj4gICAgID4+ID4+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmJfYWZ0ZXJfZ3JvLS07Cj4+IAo+PiAgICAgPj4gPj4g
QEAgLTIzNiwxMSArMjc3LDE3IEBAIHN0cnVjdCBncm9fY3R4IHsKPj4gCj4+ICAgICA+PiA+PiAg
ICAgICAgICAgICAgIHx8ICh1bnByb2Nlc3NfbnVtIDwgbmJfcGt0cykpIHsKPj4gCj4+ICAgICA+
PiA+PiAgICAgICAgICAgICAgaSA9IDA7Cj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAgIC8q
IEZsdXNoIGFsbCBwYWNrZXRzIGZyb20gdGhlIHRhYmxlcyAqLwo+PiAKPj4gICAgID4+ID4+IC0g
ICAgICAgICAgICBpZiAoZG9fdnhsYW5fZ3JvKSB7Cj4+IAo+PiAgICAgPj4gPj4gLSAgICAgICAg
ICAgICAgICAgICAgaSA9IGdyb192eGxhbl90Y3A0X3RibF90aW1lb3V0X2ZsdXNoKCZ2eGxhbl90
YmwsCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIGlmIChkb192eGxhbl90Y3BfZ3JvKSB7
Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgaSA9IGdyb192eGxhbl90Y3A0
X3RibF90aW1lb3V0X2ZsdXNoKCZ2eGxhbl90Y3BfdGJsLAo+PiAKPj4gICAgID4+ID4+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwa3RzLCBuYl9wa3RzKTsKPj4gCj4+
ICAgICA+PiA+PiAgICAgICAgICAgICAgfQo+PiAKPj4gICAgID4+ID4+Cj4+IAo+PiAgICAgPj4g
Pj4gKyAgICAgICAgICAgIGlmIChkb192eGxhbl91ZHBfZ3JvKSB7Cj4+IAo+PiAgICAgPj4gPj4g
KyAgICAgICAgICAgICAgICAgICAgaSArPSBncm9fdnhsYW5fdWRwNF90YmxfdGltZW91dF9mbHVz
aCgmdnhsYW5fdWRwX3RibCwKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgJnBrdHNbaV0sIG5iX3BrdHMgLSBpKTsKPj4gCj4+ICAgICA+PiA+
PiArCj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIH0KPj4gCj4+ICAgICA+PiA+PiArCj4+
IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAgIGlmIChkb190Y3A0X2dybykgewo+PiAKPj4gICAg
ID4+ID4+ICAgICAgICAgICAgICAgICAgICAgIGkgKz0gZ3JvX3RjcDRfdGJsX3RpbWVvdXRfZmx1
c2goJnRjcF90YmwsIDAsCj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZwa3RzW2ldLCBuYl9wa3RzIC0gaSk7Cj4+IAo+PiAgICAgPj4gPj4gQEAg
LTI2OSwzMyArMzE2LDQyIEBAIHN0cnVjdCBncm9fY3R4IHsKPj4gCj4+ICAgICA+PiA+PiAgewo+
PiAKPj4gICAgID4+ID4+ICAgICAgc3RydWN0IHJ0ZV9tYnVmICp1bnByb2Nlc3NfcGt0c1tuYl9w
a3RzXTsKPj4gCj4+ICAgICA+PiA+PiAgICAgIHN0cnVjdCBncm9fY3R4ICpncm9fY3R4ID0gY3R4
Owo+PiAKPj4gICAgID4+ID4+IC0gICAgdm9pZCAqdGNwX3RibCwgKnVkcF90YmwsICp2eGxhbl90
Ymw7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICB2b2lkICp0Y3BfdGJsLCAqdWRwX3RibCwgKnZ4bGFu
X3RjcF90YmwsICp2eGxhbl91ZHBfdGJsOwo+PiAKPj4gICAgID4+ID4+ICAgICAgdWludDY0X3Qg
Y3VycmVudF90aW1lOwo+PiAKPj4gICAgID4+ID4+ICAgICAgdWludDE2X3QgaSwgdW5wcm9jZXNz
X251bSA9IDA7Cj4+IAo+PiAgICAgPj4gPj4gLSAgICB1aW50OF90IGRvX3RjcDRfZ3JvLCBkb192
eGxhbl9ncm8sIGRvX3VkcDRfZ3JvOwo+PiAKPj4gICAgID4+ID4+ICsgICAgdWludDhfdCBkb190
Y3A0X2dybywgZG9fdnhsYW5fdGNwX2dybywgZG9fdWRwNF9ncm8sIGRvX3Z4bGFuX3VkcF9ncm87
Cj4+IAo+PiAgICAgPj4gPj4KPj4gCj4+ICAgICA+PiA+PiAgICAgIGlmICh1bmxpa2VseSgoZ3Jv
X2N0eC0+Z3JvX3R5cGVzICYgKFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNCB8Cj4+IAo+PiAg
ICAgPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9HUk9fVENQ
X0lQVjQgfAo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQgfAo+PiAKPj4gICAgID4+ID4+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX1VEUF9JUFY0KSkgPT0gMCkp
Cj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAgIHJldHVybiBuYl9wa3RzOwo+PiAKPj4gICAg
ID4+ID4+Cj4+IAo+PiAgICAgPj4gPj4gICAgICB0Y3BfdGJsID0gZ3JvX2N0eC0+dGJsc1tSVEVf
R1JPX1RDUF9JUFY0X0lOREVYXTsKPj4gCj4+ICAgICA+PiA+PiAtICAgIHZ4bGFuX3RibCA9IGdy
b19jdHgtPnRibHNbUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0X0lOREVYXTsKPj4gCj4+ICAg
ICA+PiA+PiArICAgIHZ4bGFuX3RjcF90YmwgPSBncm9fY3R4LT50YmxzW1JURV9HUk9fSVBWNF9W
WExBTl9UQ1BfSVBWNF9JTkRFWF07Cj4+IAo+PiAgICAgPj4gPj4gICAgICB1ZHBfdGJsID0gZ3Jv
X2N0eC0+dGJsc1tSVEVfR1JPX1VEUF9JUFY0X0lOREVYXTsKPj4gCj4+ICAgICA+PiA+PiArICAg
IHZ4bGFuX3VkcF90YmwgPSBncm9fY3R4LT50YmxzW1JURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBW
NF9JTkRFWF07Cj4+IAo+PiAgICAgPj4gPj4KPj4gCj4+ICAgICA+PiA+PiAgICAgIGRvX3RjcDRf
Z3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjQpID09Cj4+IAo+PiAg
ICAgPj4gPj4gICAgICAgICAgICAgIFJURV9HUk9fVENQX0lQVjQ7Cj4+IAo+PiAgICAgPj4gPj4g
LSAgICBkb192eGxhbl9ncm8gPSAoZ3JvX2N0eC0+Z3JvX3R5cGVzICYgUlRFX0dST19JUFY0X1ZY
TEFOX1RDUF9JUFY0KSA9PQo+PiAKPj4gICAgID4+ID4+ICsgICAgZG9fdnhsYW5fdGNwX2dybyA9
IChncm9fY3R4LT5ncm9fdHlwZXMgJiBSVEVfR1JPX0lQVjRfVlhMQU5fVENQX0lQVjQpID09Cj4+
IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAgIFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNDsK
Pj4gCj4+ICAgICA+PiA+PiAgICAgIGRvX3VkcDRfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAm
IFJURV9HUk9fVURQX0lQVjQpID09Cj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAgIFJURV9H
Uk9fVURQX0lQVjQ7Cj4+IAo+PiAgICAgPj4gPj4gKyAgICBkb192eGxhbl91ZHBfZ3JvID0gKGdy
b19jdHgtPmdyb190eXBlcyAmIFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgPT0KPj4gCj4+
ICAgICA+PiA+PiArICAgICAgICAgICAgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0Owo+PiAK
Pj4gICAgID4+ID4+Cj4+IAo+PiAgICAgPj4gPj4gICAgICBjdXJyZW50X3RpbWUgPSBydGVfcmR0
c2MoKTsKPj4gCj4+ICAgICA+PiA+Pgo+PiAKPj4gICAgID4+ID4+ICAgICAgZm9yIChpID0gMDsg
aSA8IG5iX3BrdHM7IGkrKykgewo+PiAKPj4gICAgID4+ID4+ICAgICAgICAgICAgICBpZiAoSVNf
SVBWNF9WWExBTl9UQ1A0X1BLVChwa3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYKPj4gCj4+ICAgICA+
PiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX3Z4bGFuX2dybykgewo+PiAKPj4g
ICAgID4+ID4+IC0gICAgICAgICAgICAgICAgICAgIGlmIChncm9fdnhsYW5fdGNwNF9yZWFzc2Vt
YmxlKHBrdHNbaV0sIHZ4bGFuX3RibCwKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvX3Z4bGFuX3RjcF9ncm8pIHsKPj4gCj4+ICAgICA+PiA+PiArICAgICAg
ICAgICAgICAgICAgICBpZiAoZ3JvX3Z4bGFuX3RjcDRfcmVhc3NlbWJsZShwa3RzW2ldLCB2eGxh
bl90Y3BfdGJsLAo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRfdGltZSkgPCAwKQo+PiAKPj4gICAgID4+ID4+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9
IHBrdHNbaV07Cj4+IAo+PiAgICAgPj4gPj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSVBW
NF9WWExBTl9VRFA0X1BLVChwa3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYKPj4gCj4+ICAgICA+PiA+
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX3Z4bGFuX3VkcF9ncm8pIHsKPj4gCj4+
ICAgICA+PiA+PiArICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvX3Z4bGFuX3VkcDRfcmVhc3Nl
bWJsZShwa3RzW2ldLCB2eGxhbl91ZHBfdGJsLAo+PiAKPj4gICAgID4+ID4+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfdGltZSkgPCAwKQo+PiAK
Pj4gICAgID4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wcm9jZXNzX3BrdHNb
dW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07Cj4+IAo+PiAgICAgPj4gPj4gICAgICAgICAgICAg
IH0gZWxzZSBpZiAoSVNfSVBWNF9UQ1BfUEtUKHBrdHNbaV0tPnBhY2tldF90eXBlKSAmJgo+PiAK
Pj4gICAgID4+ID4+IEBAIC0zNDEsNiArMzk3LDEzIEBAIHN0cnVjdCBncm9fY3R4IHsKPj4gCj4+
ICAgICA+PiA+PiAgICAgICAgICAgICAgbGVmdF9uYl9vdXQgPSBtYXhfbmJfb3V0IC0gbnVtOwo+
PiAKPj4gICAgID4+ID4+ICAgICAgfQo+PiAKPj4gICAgID4+ID4+Cj4+IAo+PiAgICAgPj4gPj4g
KyAgICBpZiAoKGdyb190eXBlcyAmIFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgJiYgbWF4
X25iX291dCA+IDApIHsKPj4gCj4+ICAgICA+PiA+PiArICAgICAgICAgICAgbnVtICs9IGdyb192
eGxhbl91ZHA0X3RibF90aW1lb3V0X2ZsdXNoKGdyb19jdHgtPnRibHNbCj4+IAo+PiAgICAgPj4g
Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQ
VjRfSU5ERVhdLAo+PiAKPj4gICAgID4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zmx1c2hfdGltZXN0YW1wLCAmb3V0W251bV0sIGxlZnRfbmJfb3V0KTsKPj4gCj4+ICAgICA+PiA+
PiArICAgICAgICAgICAgbGVmdF9uYl9vdXQgPSBtYXhfbmJfb3V0IC0gbnVtOwo+PiAKPj4gICAg
ID4+ID4KPj4gCj4+ICAgICA+PiA+RG9uJ3QgbmVlZCB0byBjYWxjdWxhdGUgbGVmdF9uYl9vdXQg
aGVyZS4gSW4gdGhlIHByZXZpb3VzIHBhdGNoLCB5b3UKPj4gCj4+ICAgICA+PiA+YWxzbyBjYWxj
dWxhdGUgaXQgZm9yIFVEUCBHUk8uIFBsZWFzZSByZW1vdmUgaXQgYm90aC4KPj4gCj4+ICAgICA+
PiAKPj4gCj4+ICAgICA+PiBJIHRoaW5rIGtlZXBpbmcgaXQgaGVyZSBpc24ndCBiYWQgdGhpbmcs
IGlmIHNvbWVvbmUgd2lsbCBhZGQgYSBuZXcgR1JPIHR5cGUgaGVyZSwgaGUvc2hlIHdvbid0IG1h
a2UgYSBtaXN0YWtlLgo+PiAKPj4gICAgID4gCj4+IAo+PiAgICAgPkkgZG9uJ3QgdGhpbmsgc28u
IEl0J3MgdW5uZWNlc3NhcnkgZm9yIGN1cnJlbnQgZGVzaWduLgo+PiAKPj4gICAgID5JZiBvdGhl
cnMgd2FudCB0byBhZGQgbmV3IEdSTyB0eXBlcywgdGhleSB3aWxsIHdyaXRlCj4+IAo+PiAgICAg
PmNvcnJlY3QgY29kZS4KPj4gCj4+ICAgICA+IAo+PiAKPj4gICAgID4+IAo+PiAKPj4gICAgID4+
ID4KPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAgICA+PiAKPj4gCj4+ICAg
ICA+PiAgCj4+IAo+PiAgICAgPj4gCj4+IAo+PiAgICAgIAo+PiAKPj4gICAgICAKPj4gCj4+IAo+
PiAKPj4gIAo+PiAKCiAKCiA=