From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C8011A04DE; Tue, 22 Sep 2020 05:00:23 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 87BF41D57D; Tue, 22 Sep 2020 05:00:22 +0200 (CEST) Received: from m1388.mail.163.com (m1388.mail.163.com [220.181.13.88]) by dpdk.org (Postfix) with ESMTP id 387191D57A for ; Tue, 22 Sep 2020 05:00:19 +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=TFICx Iugbk90Adve+4cZucTen2d0mO4e7usMP1WrhAM=; b=ULeFpHpdu7cq83D9Kff4K xSzpVbcH0OOeQZOrjL8GsVPZKoGqlxVwd8HHi+yHPAAnV0ToHIKt7rj6rNklH/yR 4a621Dw3Q99RFsQltVcvRD+BbsMsvwWdiRJPLPHnXQdKSdqdDZ2Oa7cxqnu9KQOM 0LD+q/lr3wQjcniXz4sDCY= Received: from yang_y_yi$163.com ( [111.207.123.58] ) by ajax-webmail-wmsvr88 (Coremail) ; Tue, 22 Sep 2020 11:00:18 +0800 (CST) X-Originating-IP: [111.207.123.58] Date: Tue, 22 Sep 2020 11:00:18 +0800 (CST) From: yang_y_yi To: "Jiayu Hu" Cc: thomas@monjalon.net, dev@dpdk.org, yangyi01@inspur.com X-Priority: 1 X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23) Copyright (c) 2002-2020 www.mailtech.cn 163com In-Reply-To: <20200922030126.GA44813@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com> References: <20200917034959.194372-1-yang_y_yi@163.com> <20200917034959.194372-3-yang_y_yi@163.com> <37c12b46.f2a.174b36e34c1.Coremail.yang_y_yi@163.com> <20200922030126.GA44813@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com> X-CM-CTRLDATA: SZi/bWZvb3Rlcl9odG09MjUxNTU6NTY= MIME-Version: 1.0 Message-ID: <2557defc.22c4.174b3c1386a.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: WMGowADnLsLCaGlfSbN8AA--.27663W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiqBmni1c7R59glwACsc 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 v6 2/3] gro: add VXLAN UDP/IPv4 GRO support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SmlheXUsIHlvdSBkaWRuJ3QgZ2V0IG15IHBvaW50LiBJIGp1c3Qgc2hvdyB3aGF0IHlvdSB3YW50 IGJ5IGNvZGUsIGJ1dCB0aGF0IGlzbid0IGEgZ29vZCB3YXkuIEkgdGhpbmsgY3VycmVudCBjb2Rl IGlzIG1vc3QgcmVhc29uYWJsZS4gUGxlYXNlIGNoZWNrIG15IGNvbW1lbnRzIGluIGxhc3QgZW1h aWwsIGFjdHVhbGx5LCBvbmx5IHRoZSBmaXJzdCBwYWNrZXQgb2YgYSBmbG93IGlzIGNoZWNrZWQg YnkgdGltZXN0YW1wLCBpZiB0aGlzIGZsb3cgaW5jbHVkZXMgc29tZSBuZXcgaXRlbXMgKHlvdSdy ZSBzYXlpbmcpLCB0aGV5IGNhbiBiZSBtZXJnZWQsIHNvIGl0IGlzbid0IHRoZSBjYXNlIHlvdSdy ZSBzYXlpbmcuCgpBdCAyMDIwLTA5LTIyIDExOjAxOjI2LCAiSmlheXUgSHUiIDxqaWF5dS5odUBp bnRlbC5jb20+IHdyb3RlOgo+T24gVHVlLCBTZXAgMjIsIDIwMjAgYXQgMDk6Mjk6MzhBTSArMDgw MCwgeWFuZ195X3lpIHdyb3RlOgo+PiBUaGFua3MgSmlheXUsIEkgaGF2ZSBmaXhlZCBvdGhlciBj b21tZW50cyBleGNlcHQgdGhpcyBvbmU6Cj4+IAo+PiAKPj4gPlRoZSBpdGVtcyBvZiBhIGZsb3cg YXJlIG9yZGVyZWQgYnkgZnJhZ19vZnQsIGFuZCBzdGFydF90aW1lCj4+ID5vZiB0aGVzZSBpdGVt cyBpcyBub3QgYWx3YXlzIGluIGFzY2VuZGluZyBvcmRlci4gVGhlcmVmb3JlLAo+PiA+eW91IGNh bm5vdCBza2lwIGNoZWNraW5nIHRoZSBpdGVtcyBhZnRlciB0aGUgaXRlbSB3aG9zZQo+PiA+c3Rh cnRfdGltZSBpcyBncmVhdGVyIHRoYW4gZmx1c2hfdGltZXN0YW1wLiBUaGlzIGlzc3VlIGFsc28K Pj4gPmV4aXN0cyBpbiBVRFAvSVB2NCBHUk8sIGFuZCBuZWVkIHRvIGNvcnJlY3QgdGhlbSBib3Ro Lgo+PiAKPj4gSSB0aGluayB0aGUgaXNzdWUgaGVyZSBpcyBpZiB3ZSBzaG91bGQgc3RyaWN0bHkg Zm9sbG93IGZsdXNoX3RpbWVzdGFtcCwgaXQgaXMKPj4gcG9zc2libGUgdGhlcmUgYXJlIG5ldyBp dGVtcyBpbiBpdGVtcyBjaGFpbi4gd2UgaGF2ZSBjaGFuY2UgdG8gbWVyZ2UgbW9yZQo+PiBwYWNr ZXRzIGlmIHdlIGRvbid0IGZvbGxvdyBmbHVzaF90aW1lc3RhbXAuIFNvIGFuIGlkZWFsIGNoYW5n ZSBjYW4gYmUgdGhpcy4gQnV0Cj4+IGlzIGl0IGFjY2VwdGlibGUgaWYgd2UgZG9uJ3QgdXNlIGZs dXNoX3RpbWVzdGFtcD8gSXQgY2FuIGZsdXNoIHNvbWUgcGFja2V0cyBpbgo+PiBhZHZhbmNlIHRo ZXJlZm9yZSBtaXNzIG5leHQgbWVyZ2Ugd2luZG93LiBNYXliZSBjdXJyZW50IHdheSBpcyBtb3N0 IHJlc29uYWJsZQo+PiBhbmQgYSB0cmFkZW9mZiBiZXR3ZWVuIHR3byBleHRlcmVtIGNhc2VzLgo+ Cj5Zb3UgY2Fubm90IHNpbXBsaWx5IGRlbGV0ZSB0aGUgY29kZSwgYXMgcnRlX2dyb190aW1lb3V0 X2ZsdXNoKCkKPmlzIGRlc2lnbmVkIHRvIGZsdXNoIHBhY2tldHMgYWNjb3JkaW5nIHRvIGN5Y2xl cy4gSWYgdXNlcnMKPndhbnQgdG8gZmx1c2ggYWxsIHBhY2tldHMgZnJvbSB0aGUgdGFibGUsIHRo ZXkgY2FuIHNldAo+J3RpbWVvdXRfY3ljbGVzJyBpbiBydGVfZ3JvX3RpbWVvdXRfZmx1c2goKSB0 byAwLgo+cnRlX2dyb19yZWFzc2VtYmxlX2J1cnN0KCkgdXNlcyB0aGlzIHdheSB0byByZXR1cm4g YWxsCj5wYWNrZXRzIG9mIGEgYnVyc3QgdG8gdXNlcnMgYWZ0ZXIgR1JPLgo+Cj5UaGFua3MsCj5K aWF5dQo+PiAKPj4gCj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5jIGIv bGliL2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuYwo+PiBpbmRleCAwNjFlN2IwLi5mZmEzNWEyIDEwMDY0 NAo+PiAtLS0gYS9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5jCj4+ICsrKyBiL2xpYi9saWJydGVf Z3JvL2dyb191ZHA0LmMKPj4gQEAgLTM5MSw3ICszOTEsNiBAQAo+PiAKPj4gICAgICAgICAgICAg ICAgIGogPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Owo+PiAgICAgICAgICAgICAgICAgd2hp bGUgKGogIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgewo+PiAtICAgICAgICAgICAgICAgICAgICAg ICBpZiAodGJsLT5pdGVtc1tqXS5zdGFydF90aW1lIDw9IGZsdXNoX3RpbWVzdGFtcCkgewo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb191ZHA0X21lcmdlX2l0ZW1zKHRibCwg aik7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0W2srK10gPSB0YmwtPml0 ZW1zW2pdLmZpcnN0c2VnOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0 YmwtPml0ZW1zW2pdLm5iX21lcmdlZCA+IDEpCj4+IEBAIC00MDcsMTIgKzQwNiw2IEBACj4+IAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShrID09IG5iX291 dCkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gazsK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyoKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUg bGVmdCBwYWNrZXRzIGluIHRoaXMgZmxvdyB3b24ndCBiZQo+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqIHRpbWVvdXQuIEdvIHRvIGNoZWNrIG90aGVyIGZsb3dzLgo+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgIH0KPj4gICAg ICAgICByZXR1cm4gazsKPj4gCj4+IAo+PiAKPj4gCj4+IEF0IDIwMjAtMDktMjEgMTU6NTQ6MzYs ICJIdSwgSmlheXUiIDxqaWF5dS5odUBpbnRlbC5jb20+IHdyb3RlOgo+PiA+SGkgWWksCj4+ID4K Pj4gPlNvbWUgY29tbWVudHMgYXJlIGlubGluZS4KPj4gPgo+PiA+VGhhbmtzLAo+PiA+SmlheXUK Pj4gPgo+PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiA+PiBGcm9tOiB5YW5nX3lf eWlAMTYzLmNvbSA8eWFuZ195X3lpQDE2My5jb20+Cj4+ID4+IFNlbnQ6IFRodXJzZGF5LCBTZXB0 ZW1iZXIgMTcsIDIwMjAgMTE6NTAgQU0KPj4gPj4gVG86IGRldkBkcGRrLm9yZwo+PiA+PiBDYzog SHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyB0aG9tYXNAbW9uamFsb24ubmV0Owo+PiA+ PiB5YW5neWkwMUBpbnNwdXIuY29tOyB5YW5nX3lfeWlAMTYzLmNvbQo+PiA+PiBTdWJqZWN0OiBb UEFUQ0ggdjYgMi8zXSBncm86IGFkZCBWWExBTiBVRFAvSVB2NCBHUk8gc3VwcG9ydAo+PiA+Pgo+ PiA+PiBGcm9tOiBZaSBZYW5nIDx5YW5neWkwMUBpbnNwdXIuY29tPgo+PiA+Pgo+PiA+PiBWWExB TiBVRFAvSVB2NCBHUk8gY2FuIGhlbHAgaW1wcm92ZSBWTS10by1WTSBVRFAKPj4gPj4gcGVyZm9y bWFuY2Ugd2hlbiBVRk8gb3IgR1NPIGlzIGVuYWJsZWQgaW4gVk0sIEdSTwo+PiA+PiBtdXN0IGJl IHN1cHBvcnRlZCBpZiBVRk8gb3IgR1NPIGlzIGVuYWJsZWQsCj4+ID4+IG90aGVyd2lzZSwgcGVy Zm9ybWFuY2UgY2FuJ3QgZ2V0IGJpZyBpbXByb3ZlbWVudAo+PiA+PiBpZiBvbmx5IEdTTyBpcyB0 aGVyZS4KPj4gPj4KPj4gPj4gV2l0aCB0aGlzIGVuYWJsZWQgaW4gRFBESywgT1ZTIERQREsgY2Fu IGxldmVyYWdlIGl0Cj4+ID4+IHRvIGltcHJvdmUgVk0tdG8tVk0gVURQIHBlcmZvcm1hbmNlLCBp dCB3aWxsIHJlYXNzZW1ibGUKPj4gPj4gVlhMQU4gVURQL0lQdjQgZnJhZ21lbnRzIGltbWVkaWF0 ZSBhZnRlciB0aGV5IGFyZQo+PiA+PiByZWNlaXZlZCBmcm9tIGEgcGh5c2ljYWwgTklDLiBJdCBp cyB2ZXJ5IGhlbHBmdWwgaW4KPj4gPj4gT1ZTIERQREsgVlhMQU4gdXNlIGNhc2UuCj4+ID4+Cj4+ ID4+IE5vdGU6IG91dGVyIElQIElEIGlzbid0IHVzZWQgdG8gY2hlY2sgaWYgdHdvIHBhY2tldHMK Pj4gPj4gYXJlIHNhbWUgZmxvdyBhbmQgY2FuIGJlIG1lcmdlZCBiZWNhdXNlIHRoZSBkaWZmZXJl bmNlCj4+ID4+IGJldHdlZW4gb3V0ZXIgSVAgSURzIG9mIHR3byBwYWNrZXRzIGlzbid0IGFsd2F5 cyArLy0xCj4+ID4+IGluIGNhc2Ugb2YgT1ZTIERQREsuCj4+ID4+Cj4+ID4+IFNpZ25lZC1vZmYt Ynk6IFlpIFlhbmcgPHlhbmd5aTAxQGluc3B1ci5jb20+Cj4+ID4+IC0tLQo+PiA+PiAgbGliL2xp YnJ0ZV9ncm8vZ3JvX3VkcDQuaCAgICAgICB8ICAgMSArCj4+ID4+ICBsaWIvbGlicnRlX2dyby9n cm9fdnhsYW5fdWRwNC5jIHwgNTQyCj4+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPj4gPj4gIGxpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmggfCAxNTQg KysrKysrKysrKysrCj4+ID4+ICBsaWIvbGlicnRlX2dyby9tZXNvbi5idWlsZCAgICAgIHwgICAy ICstCj4+ID4+ICBsaWIvbGlicnRlX2dyby9ydGVfZ3JvLmMgICAgICAgIHwgMTE1ICsrKysrKyst LQo+PiA+PiAgbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5oICAgICAgICB8ICAgMyArCj4+ID4+ICA2 IGZpbGVzIGNoYW5nZWQsIDc5MCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPj4gPj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5jCj4+ID4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuaAo+PiA+ Pgo+PiA+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuaCBiL2xpYi9saWJy dGVfZ3JvL2dyb191ZHA0LmgKPj4gPj4gaW5kZXggMGEwNzhlNC4uZDM4YjM5MyAxMDA2NDQKPj4g Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuaAo+PiA+PiArKysgYi9saWIvbGlicnRl X2dyby9ncm9fdWRwNC5oCj4+ID4+IEBAIC03LDYgKzcsNyBAQAo+PiA+Pgo+PiA+PiAgI2luY2x1 ZGUgPHJ0ZV9pcC5oPgo+PiA+PiAgI2luY2x1ZGUgPHJ0ZV91ZHAuaD4KPj4gPj4gKyNpbmNsdWRl IDxydGVfdnhsYW4uaD4KPj4gPj4KPj4gPj4gICNkZWZpbmUgSU5WQUxJRF9BUlJBWV9JTkRFWCAw eGZmZmZmZmZmVUwKPj4gPj4gICNkZWZpbmUgR1JPX1VEUDRfVEJMX01BWF9JVEVNX05VTSAoMTAy NFVMICogMTAyNFVMKQo+PiA+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFu X3VkcDQuYyBiL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMKPj4gPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4gPj4gaW5kZXggMDAwMDAwMC4uNGVlY2U1Ngo+PiA+PiAtLS0gL2Rldi9u dWxsCj4+ID4+ICsrKyBiL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMKPj4gPj4gQEAg LTAsMCArMSw1NDIgQEAKPj4gPj4gKwo+PiA+PiArdWludDE2X3QKPj4gPj4gK2dyb192eGxhbl91 ZHA0X3RibF90aW1lb3V0X2ZsdXNoKHN0cnVjdCBncm9fdnhsYW5fdWRwNF90YmwgKnRibCwKPj4g Pj4gKyAgICAgICAgICAgIHVpbnQ2NF90IGZsdXNoX3RpbWVzdGFtcCwKPj4gPj4gKyAgICAgICAg ICAgIHN0cnVjdCBydGVfbWJ1ZiAqKm91dCwKPj4gPj4gKyAgICAgICAgICAgIHVpbnQxNl90IG5i X291dCkKPj4gPj4gK3sKPj4gPj4gKyAgICB1aW50MTZfdCBrID0gMDsKPj4gPj4gKyAgICB1aW50 MzJfdCBpLCBqOwo+PiA+PiArICAgIHVpbnQzMl90IG1heF9mbG93X251bSA9IHRibC0+bWF4X2Zs b3dfbnVtOwo+PiA+PiArCj4+ID4+ICsgICAgZm9yIChpID0gMDsgaSA8IG1heF9mbG93X251bTsg aSsrKSB7Cj4+ID4+ICsgICAgICAgICAgICBpZiAodW5saWtlbHkodGJsLT5mbG93X251bSA9PSAw KSkKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGs7Cj4+ID4+ICsKPj4gPj4gKyAg ICAgICAgICAgIGogPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Owo+PiA+PiArICAgICAgICAg ICAgd2hpbGUgKGogIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgewo+PiA+PiArICAgICAgICAgICAg ICAgICAgICBpZiAodGJsLT5pdGVtc1tqXS5pbm5lcl9pdGVtLnN0YXJ0X3RpbWUgPD0KPj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX3RpbWVzdGFtcCkgewo+ PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb192eGxhbl91ZHA0X21lcmdlX2l0 ZW1zKHRibCwgaik7Cj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0W2srK10g PSB0YmwtPml0ZW1zW2pdLmlubmVyX2l0ZW0uZmlyc3RzZWc7Cj4+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHRibC0+aXRlbXNbal0uaW5uZXJfaXRlbS5uYl9tZXJnZWQgPiAx KQo+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3Z4bGFu X2hlYWRlcigmKHRibC0KPj4gPj4gPml0ZW1zW2pdKSk7Cj4+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyoKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBEZWxl dGUgdGhlIGl0ZW0gYW5kIGdldCB0aGUgbmV4dCBwYWNrZXQKPj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiBpbmRleC4KPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZGVsZXRlX2l0ZW0o dGJsLCBqLCBJTlZBTElEX0FSUkFZX0lOREVYKTsKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4ID0gajsKPj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoaiA9PSBJTlZBTElEX0FSUkFZX0lOREVYKQo+PiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsLT5mbG93X251bS0tOwo+PiA+PiAr Cj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGsgPT0gbmJf b3V0KSkKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBr Owo+PiA+PiArICAgICAgICAgICAgICAgICAgICB9IGVsc2UKPj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKgo+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRo ZSBsZWZ0IHBhY2tldHMgaW4gdGhlIGZsb3cgd29uJ3QgYmUKPj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiB0aW1lb3V0LiBHbyB0byBjaGVjayBvdGhlciBmbG93cy4KPj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKPj4gPgo+PiA+VGhlIGl0ZW1zIG9mIGEgZmxvdyBhcmUgb3JkZXJl ZCBieSBmcmFnX29mdCwgYW5kIHN0YXJ0X3RpbWUKPj4gPm9mIHRoZXNlIGl0ZW1zIGlzIG5vdCBh bHdheXMgaW4gYXNjZW5kaW5nIG9yZGVyLiBUaGVyZWZvcmUsCj4+ID55b3UgY2Fubm90IHNraXAg Y2hlY2tpbmcgdGhlIGl0ZW1zIGFmdGVyIHRoZSBpdGVtIHdob3NlCj4+ID5zdGFydF90aW1lIGlz IGdyZWF0ZXIgdGhhbiBmbHVzaF90aW1lc3RhbXAuIFRoaXMgaXNzdWUgYWxzbwo+PiA+ZXhpc3Rz IGluIFVEUC9JUHY0IEdSTywgYW5kIG5lZWQgdG8gY29ycmVjdCB0aGVtIGJvdGguCj4+ID4KPj4g Pj4gKyAgICAgICAgICAgIH0KPj4gPj4gKyAgICB9Cj4+ID4+ICsgICAgcmV0dXJuIGs7Cj4+ID4+ ICt9Cj4+ID4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5oCj4+ ID4+IGIvbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuaAo+PiA+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+PiA+PiBpbmRleCAwMDAwMDAwLi42YTQyZmIzCj4+ID4+IC0tLSAvZGV2L251bGwK Pj4gPj4gKysrIGIvbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuaAo+PiA+PiBAQCAtMCww ICsxLDE1NCBAQAo+PiA+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz ZQo+PiA+PiArICogQ29weXJpZ2h0KGMpIDIwMjAgSW5zcHVyIENvcnBvcmF0aW9uCj4+ID4+ICsg Ki8KPj4gPj4gKwo+PiA+PiArI2lmbmRlZiBfR1JPX1ZYTEFOX1VEUDRfSF8KPj4gPj4gKyNkZWZp bmUgX0dST19WWExBTl9VRFA0X0hfCj4+ID4+ICsKPj4gPj4gKyNpbmNsdWRlICJncm9fdWRwNC5o Igo+PiA+PiArCj4+ID4+ICsjZGVmaW5lIEdST19WWExBTl9VRFA0X1RCTF9NQVhfSVRFTV9OVU0g KDEwMjRVTCAqIDEwMjRVTCkKPj4gPj4gKwo+PiA+PiArLyogSGVhZGVyIGZpZWxkcyByZXByZXNl bnRpbmcgYSBWeExBTiBmbG93ICovCj4+ID4+ICtzdHJ1Y3QgdnhsYW5fdWRwNF9mbG93X2tleSB7 Cj4+ID4+ICsgICAgc3RydWN0IHVkcDRfZmxvd19rZXkgaW5uZXJfa2V5Owo+PiA+PiArICAgIHN0 cnVjdCBydGVfdnhsYW5faGRyIHZ4bGFuX2hkcjsKPj4gPj4gKwo+PiA+PiArICAgIHN0cnVjdCBy dGVfZXRoZXJfYWRkciBvdXRlcl9ldGhfc2FkZHI7Cj4+ID4+ICsgICAgc3RydWN0IHJ0ZV9ldGhl cl9hZGRyIG91dGVyX2V0aF9kYWRkcjsKPj4gPj4gKwo+PiA+PiArICAgIHVpbnQzMl90IG91dGVy X2lwX3NyY19hZGRyOwo+PiA+PiArICAgIHVpbnQzMl90IG91dGVyX2lwX2RzdF9hZGRyOwo+PiA+ PiArCj4+ID4+ICsgICAgLyogTm90ZTogSXQgaXMgdW5uZWNlc3NhcnkgdG8gc2F2ZSBvdXRlcl9z cmNfcG9ydCBoZXJlIGJlY2F1c2UgaXQgY2FuCj4+ID4+ICsgICAgICogYmUgZGlmZmVyZW50IGZv ciBWeExBTiBVRFAgZnJhZ21lbnRzIGZyb20gdGhlIHNhbWUgZmxvdy4KPj4gPj4gKyAgICAgKi8K Pj4gPj4gKyAgICB1aW50MTZfdCBvdXRlcl9kc3RfcG9ydDsKPj4gPj4gKwo+PiA+Cj4+ID5UaGUg YWJvdmUgZW1wdHkgbGluZSBpcyB1bm5lY2Vzc2FyeS4KPj4gPgo+PiA+PiArfTsKPj4gPj4gKwo+ PiA+PiArCj4+ID4+ICtzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfaXRlbSB7Cj4+ID4+ICsgICAgc3Ry dWN0IGdyb191ZHA0X2l0ZW0gaW5uZXJfaXRlbTsKPj4gPj4gKyAgICAvKiBOb3RlOiBWWExBTiBV RFAvSVB2NCBHUk8gbmVlZG4ndCBjaGVjayBvdXRlcl9pcF9pZCBiZWNhdXNlCj4+ID4+ICsgICAg ICogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvdXRlcl9pcF9pZHMgb2YgdHdvIHJlY2VpdmVkIHBh Y2tldHMKPj4gPj4gKyAgICAgKiBpc24ndCBhbHdheXMgKy8tMSBpbiBjYXNlIG9mIE9WUyBEUERL LiBTbyBubyBvdXRlcl9pcF9pZAo+PiA+PiArICAgICAqIGFuZCBvdXRlcl9pc19hdG9taWMgZmll bGRzIGhlcmUuCj4+ID4+ICsgICAgICovCj4+ID4KPj4gPkl0IHNlZW1zIHRoZSBhYm92ZSBjb21t ZW50cyBmb3Igb3V0ZXIgSVAgSUQgaXMgZW5vdWdoLCBhbmQgbm8gbmVlZAo+PiA+dG8gaGlnaGxp Z2h0IGluIHRoZSBjb21taXQgbG9nIGFnYWluLiBIb3cgZG8geW91IHRoaW5rPwo+PiA+Cj4+ID4+ ICt9Owo+PiA+PiArCj4+ID4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ydGVfZ3JvLmMg Yi9saWIvbGlicnRlX2dyby9ydGVfZ3JvLmMKPj4gPj4gaW5kZXggZjYyMzIzMC4uZGI5OTBjZiAx MDA2NDQKPj4gPj4gLS0tIGEvbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5jCj4+ID4+ICsrKyBiL2xp Yi9saWJydGVfZ3JvL3J0ZV9ncm8uYwo+PiA+PiBAQCAtMTEsNiArMTEsNyBAQAo+PiA+PiAgI2lu Y2x1ZGUgImdyb190Y3A0LmgiCj4+ID4+ICAjaW5jbHVkZSAiZ3JvX3VkcDQuaCIKPj4gPj4gICNp bmNsdWRlICJncm9fdnhsYW5fdGNwNC5oIgo+PiA+PiArI2luY2x1ZGUgImdyb192eGxhbl91ZHA0 LmgiCj4+ID4+Cj4+ID4+ICAvKgo+PiA+PiAgICogR1JPIGNvbnRleHQgc3RydWN0dXJlLiBJdCBr ZWVwcyB0aGUgdGFibGUgc3RydWN0dXJlcywgd2hpY2ggYXJlCj4+ID4+IEBAIC0xMzcsMTkgKzE0 OCwyNyBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+ID4+ICAgICAgc3RydWN0IGdyb191ZHA0X2l0ZW0g dWRwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXQo+PiA+PiA9IHt7MH0gfTsKPj4g Pj4KPj4gPj4gICAgICAvKiBBbGxvY2F0ZSBhIHJlYXNzZW1ibHkgdGFibGUgZm9yIFZYTEFOIFRD UCBHUk8gKi8KPj4gPj4gLSAgICBzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfdGJsIHZ4bGFuX3RibDsK Pj4gPj4gLSAgICBzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfZmxvdwo+PiA+PiB2eGxhbl9mbG93c1tS VEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV07Cj4+ID4+IC0gICAgc3RydWN0IGdyb192eGxhbl90 Y3A0X2l0ZW0KPj4gPj4gdnhsYW5faXRlbXNbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dCj4+ ID4+ICsgICAgc3RydWN0IGdyb192eGxhbl90Y3A0X3RibCB2eGxhbl90Y3BfdGJsOwo+PiA+PiAr ICAgIHN0cnVjdCBncm9fdnhsYW5fdGNwNF9mbG93Cj4+ID4+IHZ4bGFuX3RjcF9mbG93c1tSVEVf R1JPX01BWF9CVVJTVF9JVEVNX05VTV07Cj4+ID4+ICsgICAgc3RydWN0IGdyb192eGxhbl90Y3A0 X2l0ZW0KPj4gPj4gdnhsYW5fdGNwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXQo+ PiA+PiAgICAgICAgICAgICAgICAgICAgICA9IHt7ezB9LCAwLCAwfSB9Owo+PiA+Pgo+PiA+PiAr ICAgIC8qIEFsbG9jYXRlIGEgcmVhc3NlbWJseSB0YWJsZSBmb3IgVlhMQU4gVURQIEdSTyAqLwo+ PiA+PiArICAgIHN0cnVjdCBncm9fdnhsYW5fdWRwNF90YmwgdnhsYW5fdWRwX3RibDsKPj4gPj4g KyAgICBzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfZmxvdwo+PiA+PiB2eGxhbl91ZHBfZmxvd3NbUlRF X0dST19NQVhfQlVSU1RfSVRFTV9OVU1dOwo+PiA+PiArICAgIHN0cnVjdCBncm9fdnhsYW5fdWRw NF9pdGVtCj4+ID4+IHZ4bGFuX3VkcF9pdGVtc1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV0K Pj4gPj4gKyAgICAgICAgICAgICAgICAgICAgPSB7e3swfX0gfTsKPj4gPj4gKwo+PiA+PiAgICAg IHN0cnVjdCBydGVfbWJ1ZiAqdW5wcm9jZXNzX3BrdHNbbmJfcGt0c107Cj4+ID4+ICAgICAgdWlu dDMyX3QgaXRlbV9udW07Cj4+ID4+ICAgICAgaW50MzJfdCByZXQ7Cj4+ID4+ICAgICAgdWludDE2 X3QgaSwgdW5wcm9jZXNzX251bSA9IDAsIG5iX2FmdGVyX2dybyA9IG5iX3BrdHM7Cj4+ID4+IC0g ICAgdWludDhfdCBkb190Y3A0X2dybyA9IDAsIGRvX3Z4bGFuX2dybyA9IDAsIGRvX3VkcDRfZ3Jv ID0gMDsKPj4gPj4gKyAgICB1aW50OF90IGRvX3RjcDRfZ3JvID0gMCwgZG9fdnhsYW5fdGNwX2dy byA9IDAsIGRvX3VkcDRfZ3JvID0gMCwKPj4gPj4gKyAgICAgICAgICAgIGRvX3Z4bGFuX3VkcF9n cm8gPSAwOwo+PiA+Pgo+PiA+PiAgICAgIGlmICh1bmxpa2VseSgocGFyYW0tPmdyb190eXBlcyAm IChSVEVfR1JPX0lQVjRfVlhMQU5fVENQX0lQVjQgfAo+PiA+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNCB8Cj4+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQgfAo+PiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19VRFBfSVBWNCkp ID09IDApKQo+PiA+PiAgICAgICAgICAgICAgcmV0dXJuIG5iX3BrdHM7Cj4+ID4+Cj4+ID4+IEBA IC0xNjAsMTUgKzE3OSwyOCBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+ID4+Cj4+ID4+ICAgICAgaWYg KHBhcmFtLT5ncm9fdHlwZXMgJiBSVEVfR1JPX0lQVjRfVlhMQU5fVENQX0lQVjQpIHsKPj4gPj4g ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpdGVtX251bTsgaSsrKQo+PiA+PiAtICAgICAg ICAgICAgICAgICAgICB2eGxhbl9mbG93c1tpXS5zdGFydF9pbmRleCA9IElOVkFMSURfQVJSQVlf SU5ERVg7Cj4+ID4+IC0KPj4gPj4gLSAgICAgICAgICAgIHZ4bGFuX3RibC5mbG93cyA9IHZ4bGFu X2Zsb3dzOwo+PiA+PiAtICAgICAgICAgICAgdnhsYW5fdGJsLml0ZW1zID0gdnhsYW5faXRlbXM7 Cj4+ID4+IC0gICAgICAgICAgICB2eGxhbl90YmwuZmxvd19udW0gPSAwOwo+PiA+PiAtICAgICAg ICAgICAgdnhsYW5fdGJsLml0ZW1fbnVtID0gMDsKPj4gPj4gLSAgICAgICAgICAgIHZ4bGFuX3Ri bC5tYXhfZmxvd19udW0gPSBpdGVtX251bTsKPj4gPj4gLSAgICAgICAgICAgIHZ4bGFuX3RibC5t YXhfaXRlbV9udW0gPSBpdGVtX251bTsKPj4gPj4gLSAgICAgICAgICAgIGRvX3Z4bGFuX2dybyA9 IDE7Cj4+ID4+ICsgICAgICAgICAgICAgICAgICAgIHZ4bGFuX3RjcF9mbG93c1tpXS5zdGFydF9p bmRleCA9Cj4+ID4+IElOVkFMSURfQVJSQVlfSU5ERVg7Cj4+ID4+ICsKPj4gPj4gKyAgICAgICAg ICAgIHZ4bGFuX3RjcF90YmwuZmxvd3MgPSB2eGxhbl90Y3BfZmxvd3M7Cj4+ID4+ICsgICAgICAg ICAgICB2eGxhbl90Y3BfdGJsLml0ZW1zID0gdnhsYW5fdGNwX2l0ZW1zOwo+PiA+PiArICAgICAg ICAgICAgdnhsYW5fdGNwX3RibC5mbG93X251bSA9IDA7Cj4+ID4+ICsgICAgICAgICAgICB2eGxh bl90Y3BfdGJsLml0ZW1fbnVtID0gMDsKPj4gPj4gKyAgICAgICAgICAgIHZ4bGFuX3RjcF90Ymwu bWF4X2Zsb3dfbnVtID0gaXRlbV9udW07Cj4+ID4+ICsgICAgICAgICAgICB2eGxhbl90Y3BfdGJs Lm1heF9pdGVtX251bSA9IGl0ZW1fbnVtOwo+PiA+PiArICAgICAgICAgICAgZG9fdnhsYW5fdGNw X2dybyA9IDE7Cj4+ID4+ICsgICAgfQo+PiA+PiArCj4+ID4+ICsgICAgaWYgKHBhcmFtLT5ncm9f dHlwZXMgJiBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQpIHsKPj4gPj4gKyAgICAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBpdGVtX251bTsgaSsrKQo+PiA+PiArICAgICAgICAgICAgICAgICAg ICB2eGxhbl91ZHBfZmxvd3NbaV0uc3RhcnRfaW5kZXggPQo+PiA+PiBJTlZBTElEX0FSUkFZX0lO REVYOwo+PiA+PiArCj4+ID4+ICsgICAgICAgICAgICB2eGxhbl91ZHBfdGJsLmZsb3dzID0gdnhs YW5fdWRwX2Zsb3dzOwo+PiA+PiArICAgICAgICAgICAgdnhsYW5fdWRwX3RibC5pdGVtcyA9IHZ4 bGFuX3VkcF9pdGVtczsKPj4gPj4gKyAgICAgICAgICAgIHZ4bGFuX3VkcF90YmwuZmxvd19udW0g PSAwOwo+PiA+PiArICAgICAgICAgICAgdnhsYW5fdWRwX3RibC5pdGVtX251bSA9IDA7Cj4+ID4+ ICsgICAgICAgICAgICB2eGxhbl91ZHBfdGJsLm1heF9mbG93X251bSA9IGl0ZW1fbnVtOwo+PiA+ PiArICAgICAgICAgICAgdnhsYW5fdWRwX3RibC5tYXhfaXRlbV9udW0gPSBpdGVtX251bTsKPj4g Pj4gKyAgICAgICAgICAgIGRvX3Z4bGFuX3VkcF9ncm8gPSAxOwo+PiA+PiAgICAgIH0KPj4gPj4K Pj4gPj4gICAgICBpZiAocGFyYW0tPmdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjQpIHsKPj4g Pj4gQEAgLTIwNCw5ICsyMzYsMTggQEAgc3RydWN0IGdyb19jdHggewo+PiA+PiAgICAgICAgICAg ICAgICogd2lsbCBiZSBmbHVzaGVkIGZyb20gdGhlIHRhYmxlcy4KPj4gPj4gICAgICAgICAgICAg ICAqLwo+PiA+PiAgICAgICAgICAgICAgaWYgKElTX0lQVjRfVlhMQU5fVENQNF9QS1QocGt0c1tp XS0+cGFja2V0X3R5cGUpICYmCj4+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9f dnhsYW5fZ3JvKSB7Cj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fdnhsYW5f dGNwX2dybykgewo+PiA+PiAgICAgICAgICAgICAgICAgICAgICByZXQgPSBncm9fdnhsYW5fdGNw NF9yZWFzc2VtYmxlKHBrdHNbaV0sCj4+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnZ4bGFuX3RibCwgMCk7Cj4+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZ4bGFuX3RjcF90Ymws IDApOwo+PiA+PiArICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID4gMCkKPj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBNZXJnZSBzdWNjZXNzZnVsbHkgKi8KPj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYl9hZnRlcl9ncm8tLTsKPj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgZWxzZSBpZiAocmV0IDwgMCkKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnByb2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTsKPj4gPj4g KyAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSVBWNF9WWExBTl9VRFA0X1BLVChwa3RzW2ldLT5w YWNrZXRfdHlwZSkgJiYKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb192eGxh bl91ZHBfZ3JvKSB7Cj4+ID4+ICsgICAgICAgICAgICAgICAgICAgIHJldCA9IGdyb192eGxhbl91 ZHA0X3JlYXNzZW1ibGUocGt0c1tpXSwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdnhsYW5fdWRwX3RibCwgMCk7Cj4+ID4+ICAgICAg ICAgICAgICAgICAgICAgIGlmIChyZXQgPiAwKQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIE1lcmdlIHN1Y2Nlc3NmdWxseSAqLwo+PiA+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5iX2FmdGVyX2dyby0tOwo+PiA+PiBAQCAtMjM2LDExICsyNzcsMTcgQEAgc3Ry dWN0IGdyb19jdHggewo+PiA+PiAgICAgICAgICAgICAgIHx8ICh1bnByb2Nlc3NfbnVtIDwgbmJf cGt0cykpIHsKPj4gPj4gICAgICAgICAgICAgIGkgPSAwOwo+PiA+PiAgICAgICAgICAgICAgLyog Rmx1c2ggYWxsIHBhY2tldHMgZnJvbSB0aGUgdGFibGVzICovCj4+ID4+IC0gICAgICAgICAgICBp ZiAoZG9fdnhsYW5fZ3JvKSB7Cj4+ID4+IC0gICAgICAgICAgICAgICAgICAgIGkgPSBncm9fdnhs YW5fdGNwNF90YmxfdGltZW91dF9mbHVzaCgmdnhsYW5fdGJsLAo+PiA+PiArICAgICAgICAgICAg aWYgKGRvX3Z4bGFuX3RjcF9ncm8pIHsKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgaSA9IGdy b192eGxhbl90Y3A0X3RibF90aW1lb3V0X2ZsdXNoKCZ2eGxhbl90Y3BfdGJsLAo+PiA+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcGt0cywgbmJfcGt0cyk7Cj4+ID4+ ICAgICAgICAgICAgICB9Cj4+ID4+Cj4+ID4+ICsgICAgICAgICAgICBpZiAoZG9fdnhsYW5fdWRw X2dybykgewo+PiA+PiArICAgICAgICAgICAgICAgICAgICBpICs9Cj4+ID4+IGdyb192eGxhbl91 ZHA0X3RibF90aW1lb3V0X2ZsdXNoKCZ2eGxhbl91ZHBfdGJsLAo+PiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgJnBrdHNbaV0sIG5iX3BrdHMgLSBpKTsKPj4gPj4g Kwo+PiA+PiArICAgICAgICAgICAgfQo+PiA+PiArCj4+ID4+ICAgICAgICAgICAgICBpZiAoZG9f dGNwNF9ncm8pIHsKPj4gPj4gICAgICAgICAgICAgICAgICAgICAgaSArPSBncm9fdGNwNF90Ymxf dGltZW91dF9mbHVzaCgmdGNwX3RibCwgMCwKPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZwa3RzW2ldLCBuYl9wa3RzIC0gaSk7Cj4+ID4+IEBAIC0yNjksMzMgKzMx Niw0MiBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+ID4+ICB7Cj4+ID4+ICAgICAgc3RydWN0IHJ0ZV9t YnVmICp1bnByb2Nlc3NfcGt0c1tuYl9wa3RzXTsKPj4gPj4gICAgICBzdHJ1Y3QgZ3JvX2N0eCAq Z3JvX2N0eCA9IGN0eDsKPj4gPj4gLSAgICB2b2lkICp0Y3BfdGJsLCAqdWRwX3RibCwgKnZ4bGFu X3RibDsKPj4gPj4gKyAgICB2b2lkICp0Y3BfdGJsLCAqdWRwX3RibCwgKnZ4bGFuX3RjcF90Ymws ICp2eGxhbl91ZHBfdGJsOwo+PiA+PiAgICAgIHVpbnQ2NF90IGN1cnJlbnRfdGltZTsKPj4gPj4g ICAgICB1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMDsKPj4gPj4gLSAgICB1aW50OF90IGRv X3RjcDRfZ3JvLCBkb192eGxhbl9ncm8sIGRvX3VkcDRfZ3JvOwo+PiA+PiArICAgIHVpbnQ4X3Qg ZG9fdGNwNF9ncm8sIGRvX3Z4bGFuX3RjcF9ncm8sIGRvX3VkcDRfZ3JvLAo+PiA+PiBkb192eGxh bl91ZHBfZ3JvOwo+PiA+Pgo+PiA+PiAgICAgIGlmICh1bmxpa2VseSgoZ3JvX2N0eC0+Z3JvX3R5 cGVzICYgKFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNAo+PiA+PiB8Cj4+ID4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX1RDUF9JUFY0IHwKPj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9HUk9fSVBWNF9WWExBTl9VRFBf SVBWNCB8Cj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JP X1VEUF9JUFY0KSkgPT0gMCkpCj4+ID4+ICAgICAgICAgICAgICByZXR1cm4gbmJfcGt0czsKPj4g Pj4KPj4gPj4gICAgICB0Y3BfdGJsID0gZ3JvX2N0eC0+dGJsc1tSVEVfR1JPX1RDUF9JUFY0X0lO REVYXTsKPj4gPj4gLSAgICB2eGxhbl90YmwgPSBncm9fY3R4LT50YmxzW1JURV9HUk9fSVBWNF9W WExBTl9UQ1BfSVBWNF9JTkRFWF07Cj4+ID4+ICsgICAgdnhsYW5fdGNwX3RibCA9IGdyb19jdHgt Cj4+ID4+ID50YmxzW1JURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNF9JTkRFWF07Cj4+ID4+ICAg ICAgdWRwX3RibCA9IGdyb19jdHgtPnRibHNbUlRFX0dST19VRFBfSVBWNF9JTkRFWF07Cj4+ID4+ ICsgICAgdnhsYW5fdWRwX3RibCA9IGdyb19jdHgtCj4+ID4+ID50YmxzW1JURV9HUk9fSVBWNF9W WExBTl9VRFBfSVBWNF9JTkRFWF07Cj4+ID4+Cj4+ID4+ICAgICAgZG9fdGNwNF9ncm8gPSAoZ3Jv X2N0eC0+Z3JvX3R5cGVzICYgUlRFX0dST19UQ1BfSVBWNCkgPT0KPj4gPj4gICAgICAgICAgICAg IFJURV9HUk9fVENQX0lQVjQ7Cj4+ID4+IC0gICAgZG9fdnhsYW5fZ3JvID0gKGdyb19jdHgtPmdy b190eXBlcyAmCj4+ID4+IFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNCkgPT0KPj4gPj4gKyAg ICBkb192eGxhbl90Y3BfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmCj4+ID4+IFJURV9HUk9f SVBWNF9WWExBTl9UQ1BfSVBWNCkgPT0KPj4gPj4gICAgICAgICAgICAgIFJURV9HUk9fSVBWNF9W WExBTl9UQ1BfSVBWNDsKPj4gPj4gICAgICBkb191ZHA0X2dybyA9IChncm9fY3R4LT5ncm9fdHlw ZXMgJiBSVEVfR1JPX1VEUF9JUFY0KSA9PQo+PiA+PiAgICAgICAgICAgICAgUlRFX0dST19VRFBf SVBWNDsKPj4gPj4gKyAgICBkb192eGxhbl91ZHBfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAm Cj4+ID4+IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgPT0KPj4gPj4gKyAgICAgICAgICAg IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNDsKPj4gPj4KPj4gPj4gICAgICBjdXJyZW50X3Rp bWUgPSBydGVfcmR0c2MoKTsKPj4gPj4KPj4gPj4gICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfcGt0 czsgaSsrKSB7Cj4+ID4+ICAgICAgICAgICAgICBpZiAoSVNfSVBWNF9WWExBTl9UQ1A0X1BLVChw a3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYKPj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb192eGxhbl9ncm8pIHsKPj4gPj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGdyb192eGxh bl90Y3A0X3JlYXNzZW1ibGUocGt0c1tpXSwgdnhsYW5fdGJsLAo+PiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvX3Z4bGFuX3RjcF9ncm8pIHsKPj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgaWYgKGdyb192eGxhbl90Y3A0X3JlYXNzZW1ibGUocGt0c1tpXSwgdnhsYW5fdGNwX3Ri bCwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy cmVudF90aW1lKSA8IDApCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wcm9j ZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07Cj4+ID4+ICsgICAgICAgICAgICB9 IGVsc2UgaWYgKElTX0lQVjRfVlhMQU5fVURQNF9QS1QocGt0c1tpXS0+cGFja2V0X3R5cGUpICYm Cj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fdnhsYW5fdWRwX2dybykgewo+ PiA+PiArICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvX3Z4bGFuX3VkcDRfcmVhc3NlbWJsZShw a3RzW2ldLAo+PiA+PiB2eGxhbl91ZHBfdGJsLAo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWUpIDwgMCkKPj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnByb2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0 c1tpXTsKPj4gPj4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSVBWNF9UQ1BfUEtUKHBrdHNb aV0tPnBhY2tldF90eXBlKSAmJgo+PiA+PiBAQCAtMzQxLDYgKzM5NywxMyBAQCBzdHJ1Y3QgZ3Jv X2N0eCB7Cj4+ID4+ICAgICAgICAgICAgICBsZWZ0X25iX291dCA9IG1heF9uYl9vdXQgLSBudW07 Cj4+ID4+ICAgICAgfQo+PiA+Pgo+PiA+PiArICAgIGlmICgoZ3JvX3R5cGVzICYgUlRFX0dST19J UFY0X1ZYTEFOX1VEUF9JUFY0KSAmJiBtYXhfbmJfb3V0ID4KPj4gPj4gMCkgewo+PiA+Cj4+ID5N YXhfbmJfb3V0IGlzIHJlYWQtb25seSBhbmQgbm90IHVwZGF0ZWQuIFNvIGl0IGNhbm5vdCBjaGVj ayBpZiAnb3V0JyBhcnJheQo+PiA+aGFzIGVub3VnaCBzcGFjZS4gTmVlZCB0byB1c2UgbGVmdF9u Yl9vdXQgaW5zdGVhZC4gVGhpcyBpc3N1ZSBhbHNvIGV4aXN0ZWQKPj4gPmluIFVEUC9JUHY0IEdS TywgYW5kIHBsZWFzZSBjb3JyZWN0IHRoZW0gYm90aC4KPj4gPgo+PiA+PiArICAgICAgICAgICAg bnVtICs9IGdyb192eGxhbl91ZHA0X3RibF90aW1lb3V0X2ZsdXNoKGdyb19jdHgtPnRibHNbCj4+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9J UFY0X0lOREVYXSwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF90aW1l c3RhbXAsICZvdXRbbnVtXSwgbGVmdF9uYl9vdXQpOwo+PiA+PiArICAgICAgICAgICAgbGVmdF9u Yl9vdXQgPSBtYXhfbmJfb3V0IC0gbnVtOwo+PiA+PiArICAgIH0KPj4gPj4gKwo+PiA+PiAgICAg IC8qIElmIG5vIGF2YWlsYWJsZSBzcGFjZSBpbiAnb3V0Jywgc3RvcCBmbHVzaGluZy4gKi8KPj4g Pj4gICAgICBpZiAoKGdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjQpICYmIG1heF9uYl9vdXQg PiAwKSB7Cj4+ID4+ICAgICAgICAgICAgICBudW0gKz0gZ3JvX3RjcDRfdGJsX3RpbWVvdXRfZmx1 c2goCj4+ID4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ydGVfZ3JvLmggYi9saWIvbGli cnRlX2dyby9ydGVfZ3JvLmgKPj4gPj4gaW5kZXggNDcwZjNlZC4uOWY5ZWQ0OSAxMDA2NDQKPj4g Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5oCj4+ID4+ICsrKyBiL2xpYi9saWJydGVf Z3JvL3J0ZV9ncm8uaAo+PiA+PiBAQCAtMzUsNiArMzUsOSBAQAo+PiA+PiAgI2RlZmluZSBSVEVf R1JPX1VEUF9JUFY0X0lOREVYIDIKPj4gPj4gICNkZWZpbmUgUlRFX0dST19VRFBfSVBWNCAoMVVM TCA8PCBSVEVfR1JPX1VEUF9JUFY0X0lOREVYKQo+PiA+PiAgLyoqPCBVRFAvSVB2NCBHUk8gZmxh ZyAqLwo+PiA+PiArI2RlZmluZSBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjRfSU5ERVggMwo+ PiA+PiArI2RlZmluZSBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQgKDFVTEwgPDwKPj4gPj4g UlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0X0lOREVYKQo+PiA+PiArLyoqPCBWeExBTiBVRFAv SVB2NCBHUk8gZmxhZy4gKi8KPj4gPj4KPj4gPj4gIC8qKgo+PiA+PiAgICogU3RydWN0dXJlIHVz ZWQgdG8gY3JlYXRlIEdSTyBjb250ZXh0IG9iamVjdHMgb3IgdXNlZCB0byBwYXNzCj4+ID4+IC0t Cj4+ID4+IDEuOC4zLjEKPj4gCj4+IAo+PiAKPj4gIAo+PiAK