From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AA6EC3A59C for ; Fri, 16 Aug 2019 12:35:43 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 157D020644 for ; Fri, 16 Aug 2019 12:35:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fDjvaEZh" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 157D020644 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cbEZBQy7e8SlrrJbyuWnoHtJdBEfZ9q+Ob8A5Wi2Oxg=; b=fDjvaEZhFDSpgA z1njkTouYMzH8G2pu2PLZ7Jrtb4HIfTvtEtifHB2zEWlbIrMvmyahX9BMRl34qrJKpwpwbYepORFk O8wllyVn5NvcYCVSrI632vGpqxmtzw8AKtOlqOGgT8bpW7wYUykcIzFDBLhpbnejFiIkrKq2Cf1uw XHK5vMKPaDj80Aarvi3ZCDzMVxSieAsWI7SdxTPPUtFZ3XtAJwtu5o1pkCrpyCsW87JwdWNmsePKC 2LMoWTbDvgFONNNoRBFnVkq977eT1EsiCdq+qYIbnUcSRuHo/JH6taQIOBxMkge60ChHP8YQWFpLI ZYrkJkgvL7DE45CehiPg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hybSB-00069L-Ib; Fri, 16 Aug 2019 12:35:35 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hybS6-00068S-ER for linux-arm-kernel@lists.infradead.org; Fri, 16 Aug 2019 12:35:33 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0F8D7344; Fri, 16 Aug 2019 05:35:28 -0700 (PDT) Received: from localhost (unknown [10.37.6.20]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BB9103F706; Fri, 16 Aug 2019 05:35:26 -0700 (PDT) Date: Fri, 16 Aug 2019 13:35:24 +0100 From: Andrew Murray To: Xiaowei Bao Subject: Re: [PATCH 01/10] PCI: designware-ep: Add multiple PFs support for DWC Message-ID: <20190816123524.GE14111@e119886-lin.cambridge.arm.com> References: <20190815083716.4715-1-xiaowei.bao@nxp.com> <20190815113129.GF43882@e119886-lin.cambridge.arm.com> <20190816094449.GA14111@e119886-lin.cambridge.arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1+81 (426a6c1) (2018-08-26) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190816_053530_589907_BCB9D930 X-CRM114-Status: GOOD ( 28.95 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "mark.rutland@arm.com" , Roy Zang , "lorenzo.pieralisi@arm.com" , "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "jingoohan1@gmail.com" , "Z.q. Hou" , "linuxppc-dev@lists.ozlabs.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kishon@ti.com" , "M.h. Lian" , "devicetree@vger.kernel.org" , "gustavo.pimentel@synopsys.com" , Leo Li , "shawnguo@kernel.org" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBdWcgMTYsIDIwMTkgYXQgMTE6MDA6MDFBTSArMDAwMCwgWGlhb3dlaSBCYW8gd3Jv dGU6Cj4gCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogQW5kcmV3 IE11cnJheSA8YW5kcmV3Lm11cnJheUBhcm0uY29tPgo+ID4gU2VudDogMjAxOeW5tDjmnIgxNuaX pSAxNzo0NQo+ID4gVG86IFhpYW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29tPgo+ID4gQ2M6 IGppbmdvb2hhbjFAZ21haWwuY29tOyBndXN0YXZvLnBpbWVudGVsQHN5bm9wc3lzLmNvbTsKPiA+ IG1hcmsucnV0bGFuZEBhcm0uY29tOyBzaGF3bmd1b0BrZXJuZWwub3JnOyBMZW8gTGkKPiA+IDxs ZW95YW5nLmxpQG54cC5jb20+OyBraXNob25AdGkuY29tOyBsb3JlbnpvLnBpZXJhbGlzaUBhcm0u Y29tOwo+ID4gYXJuZEBhcm5kYi5kZTsgZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IE0uaC4g TGlhbgo+ID4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT47IFJveSBaYW5nIDxyb3kuemFuZ0BueHAu Y29tPjsKPiA+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJu ZWwub3JnOwo+ID4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnOwo+ID4gbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7 IFoucS4gSG91IDx6aGlxaWFuZy5ob3VAbnhwLmNvbT4KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg MDEvMTBdIFBDSTogZGVzaWdud2FyZS1lcDogQWRkIG11bHRpcGxlIFBGcyBzdXBwb3J0IGZvcgo+ ID4gRFdDCj4gPiAKPiA+IE9uIEZyaSwgQXVnIDE2LCAyMDE5IGF0IDAyOjU1OjQxQU0gKzAwMDAs IFhpYW93ZWkgQmFvIHdyb3RlOgo+ID4gPgo+ID4gPgo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tCj4gPiA+ID4gRnJvbTogQW5kcmV3IE11cnJheSA8YW5kcmV3Lm11cnJheUBhcm0u Y29tPgo+ID4gPiA+IFNlbnQ6IDIwMTnlubQ45pyIMTXml6UgMTk6MzIKPiA+ID4gPiBUbzogWGlh b3dlaSBCYW8gPHhpYW93ZWkuYmFvQG54cC5jb20+Cj4gPiA+ID4gQ2M6IGppbmdvb2hhbjFAZ21h aWwuY29tOyBndXN0YXZvLnBpbWVudGVsQHN5bm9wc3lzLmNvbTsKPiA+ID4gPiBiaGVsZ2Fhc0Bn b29nbGUuY29tOyByb2JoK2R0QGtlcm5lbC5vcmc7IG1hcmsucnV0bGFuZEBhcm0uY29tOwo+ID4g PiA+IHNoYXduZ3VvQGtlcm5lbC5vcmc7IExlbyBMaSA8bGVveWFuZy5saUBueHAuY29tPjsga2lz aG9uQHRpLmNvbTsKPiA+ID4gPiBsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29tOyBhcm5kQGFybmRi LmRlOwo+ID4gPiA+IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBNLmguIExpYW4gPG1pbmdo dWFuLmxpYW5AbnhwLmNvbT47Cj4gPiA+ID4gTWluZ2thaSBIdSA8bWluZ2thaS5odUBueHAuY29t PjsgUm95IFphbmcgPHJveS56YW5nQG54cC5jb20+Owo+ID4gPiA+IGxpbnV4LXBjaUB2Z2VyLmtl cm5lbC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOwo+ID4gPiA+IGxpbnV4LWtlcm5l bEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsK PiA+ID4gPiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZwo+ID4gPiA+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMDEvMTBdIFBDSTogZGVzaWdud2FyZS1lcDogQWRkIG11bHRpcGxlIFBGcwo+ID4g PiA+IHN1cHBvcnQgZm9yIERXQwo+ID4gPiA+Cj4gPiA+ID4gT24gVGh1LCBBdWcgMTUsIDIwMTkg YXQgMDQ6Mzc6MDdQTSArMDgwMCwgWGlhb3dlaSBCYW8gd3JvdGU6Cj4gPiA+ID4gPiBBZGQgbXVs dGlwbGUgUEZzIHN1cHBvcnQgZm9yIERXQywgZGlmZmVyZW50IFBGIGhhdmUgZGlmZmVyZW50Cj4g PiA+ID4gPiBjb25maWcgc3BhY2UsIHdlIHVzZSBwZi1vZmZzZXQgcHJvcGVydHkgd2hpY2ggZ2V0 IGZyb20gdGhlIERUUyB0bwo+ID4gPiA+ID4gYWNjZXNzIHRoZSBkaWZmZXJlbnQgcEYgY29uZmln IHNwYWNlLgo+ID4gPiA+Cj4gPiA+ID4gVGhhbmtzIGZvciB0aGUgcGF0Y2guIEkgaGF2ZW4ndCBz ZWVuIGEgY292ZXIgbGV0dGVyIGZvciB0aGlzIHNlcmllcywKPiA+ID4gPiBpcyB0aGVyZSBvbmUg bWlzc2luZz8KPiA+ID4gTWF5YmUgSSBtaXNzLCBJIHdpbGwgYWRkIHlvdSB0byByZXZpZXcgbmV4 dCB0aW1lLCB0aGFua3MgYSBsb3QgZm9yIHlvdXIKPiA+IGNvbW1lbnRzLgo+ID4gPiA+Cj4gPiA+ ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBYaWFvd2VpIEJhbyA8eGlhb3dl aS5iYW9AbnhwLmNvbT4KPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1lcC5jIHwgIDk3Cj4gPiA+ID4gKysrKysrKysrKysr Ky0tLS0tLS0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVz aWdud2FyZS5jICAgIHwgMTA1Cj4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiA+ ID4gPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmggICAgfCAg MTAgKystCj4gPiA+ID4gPiAgaW5jbHVkZS9saW51eC9wY2ktZXBjLmggICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ID4gPiA+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlv bnMoKyksIDQ5IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYwo+ID4gPiA+ID4g Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYwo+ID4gPiA+ ID4gaW5kZXggMmJmNWEzNS4uNzVlMjk1NSAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1lcC5jCj4gPiA+ID4gPiArKysgYi9k cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYwo+ID4gPiA+ID4g QEAgLTE5LDEyICsxOSwxNCBAQCB2b2lkIGR3X3BjaWVfZXBfbGlua3VwKHN0cnVjdCBkd19wY2ll X2VwCj4gPiAqZXApCj4gPiA+ID4gPiAgCXBjaV9lcGNfbGlua3VwKGVwYyk7Cj4gPiA+ID4gPiAg fQo+ID4gPiA+ID4KPiA+ID4gPiA+IC1zdGF0aWMgdm9pZCBfX2R3X3BjaWVfZXBfcmVzZXRfYmFy KHN0cnVjdCBkd19wY2llICpwY2ksIGVudW0KPiA+ID4gPiA+IHBjaV9iYXJubwo+ID4gPiA+IGJh ciwKPiA+ID4gPiA+IC0JCQkJICAgaW50IGZsYWdzKQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIF9f ZHdfcGNpZV9lcF9yZXNldF9iYXIoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTggZnVuY19ubywKPiA+ ID4gPiA+ICsJCQkJICAgZW51bSBwY2lfYmFybm8gYmFyLCBpbnQgZmxhZ3MpCj4gPiA+ID4gPiAg ewo+ID4gPiA+ID4gIAl1MzIgcmVnOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwYyAqZXBjID0g cGNpLT5lcC5lcGM7Cj4gPiA+ID4gPiArCXUzMiBwZl9iYXNlID0gZnVuY19ubyAqIGVwYy0+cGZf b2Zmc2V0Owo+ID4gPiA+ID4KPiA+ID4gPiA+IC0JcmVnID0gUENJX0JBU0VfQUREUkVTU18wICsg KDQgKiBiYXIpOwo+ID4gPiA+ID4gKwlyZWcgPSBwZl9iYXNlICsgUENJX0JBU0VfQUREUkVTU18w ICsgKDQgKiBiYXIpOwo+ID4gPiA+Cj4gPiA+ID4gSSB0aGluayBJJ2QgcmF0aGVyIHNlZSB0aGlz IGFyaXRobWV0aWMgKGFuZCB0aGUgb25lIGZvciBkZXRlcm1pbmluZwo+ID4gPiA+IHBmX2Jhc2Up IGluc2lkZSBhIG1hY3JvIG9yIGlubGluZSBoZWFkZXIgZnVuY3Rpb24uIFRoaXMgd291bGQgbWFr ZQo+ID4gPiA+IHRoaXMgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCByZWR1Y2UgdGhlIGNoYW5jZXMg b2YgYW4gZXJyb3IgYnkgYXZvaWRpbmcKPiA+IGR1cGxpY2F0aW9uIG9mIGNvZGUuCj4gPiA+ID4K PiA+ID4gPiBGb3IgZXhhbXBsZSBsb29rIGF0IGNkbnNfcGNpZV9lcF9mbl93cml0ZWIgYW5kCj4g PiA+ID4gUk9DS0NISVBfUENJRV9FUF9GVU5DX0JBU0UgZm9yIGV4YW1wbGVzIG9mIG90aGVyIEVQ IGRyaXZlcnMgdGhhdCBkbwo+ID4gPiA+IHRoaXMuCj4gPiA+IEFncmVlLCB0aGlzIGxvb2tzIGZp bmUsIHRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cywgSSB3aWxsIHVzZQo+ID4gPiB0aGlz IHdheSB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVycyBpbiBuZXh0IHZlcnNpb24gcGF0Y2guCj4gPiA+ ID4KPiA+ID4gPgo+ID4gPiA+ID4gIAlkd19wY2llX2RiaV9yb193cl9lbihwY2kpOwo+ID4gPiA+ ID4gIAlkd19wY2llX3dyaXRlbF9kYmkyKHBjaSwgcmVnLCAweDApOwo+ID4gPiA+ID4gIAlkd19w Y2llX3dyaXRlbF9kYmkocGNpLCByZWcsIDB4MCk7IEBAIC0zNyw3ICszOSwxMiBAQCBzdGF0aWMK PiA+ID4gPiA+IHZvaWQgX19kd19wY2llX2VwX3Jlc2V0X2JhcihzdHJ1Y3QgZHdfcGNpZSAqcGNp LCBlbnVtIHBjaV9iYXJubwo+ID4gPiA+ID4gYmFyLAo+ID4gPiA+ID4KPiA+ID4gPiA+ICB2b2lk IGR3X3BjaWVfZXBfcmVzZXRfYmFyKHN0cnVjdCBkd19wY2llICpwY2ksIGVudW0gcGNpX2Jhcm5v IGJhcikKPiA+IHsKPiA+ID4gPiA+IC0JX19kd19wY2llX2VwX3Jlc2V0X2JhcihwY2ksIGJhciwg MCk7Cj4gPiA+ID4gPiArCXU4IGZ1bmNfbm8sIGZ1bmNzOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KwlmdW5jcyA9IHBjaS0+ZXAuZXBjLT5tYXhfZnVuY3Rpb25zOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwlmb3IgKGZ1bmNfbm8gPSAwOyBmdW5jX25vIDwgZnVuY3M7IGZ1bmNfbm8rKykKPiA+ID4g PiA+ICsJCV9fZHdfcGNpZV9lcF9yZXNldF9iYXIocGNpLCBmdW5jX25vLCBiYXIsIDApOwo+ID4g PiA+ID4gIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAgc3RhdGljIHU4IF9fZHdfcGNpZV9lcF9maW5k X25leHRfY2FwKHN0cnVjdCBkd19wY2llICpwY2ksIHU4Cj4gPiA+ID4gPiBjYXBfcHRyLCBAQCAt NzgsMjggKzg1LDI5IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+IGR3X3BjaWVfZXBfd3JpdGVfaGVh ZGVyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sICB7Cj4gPiA+ID4gPiAgCXN0cnVj dCBkd19wY2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMpOwo+ID4gPiA+ID4gIAlzdHJ1 Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsKPiA+ID4gPiA+ICsJdTMy IHBmX2Jhc2UgPSBmdW5jX25vICogZXBjLT5wZl9vZmZzZXQ7Cj4gPiA+ID4gPgo+ID4gPiA+ID4g IAlkd19wY2llX2RiaV9yb193cl9lbihwY2kpOwo+ID4gPiA+ID4gLQlkd19wY2llX3dyaXRld19k YmkocGNpLCBQQ0lfVkVORE9SX0lELCBoZHItPnZlbmRvcmlkKTsKPiA+ID4gPiA+IC0JZHdfcGNp ZV93cml0ZXdfZGJpKHBjaSwgUENJX0RFVklDRV9JRCwgaGRyLT5kZXZpY2VpZCk7Cj4gPiA+ID4g PiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBDSV9SRVZJU0lPTl9JRCwgaGRyLT5yZXZpZCk7 Cj4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBDSV9DTEFTU19QUk9HLCBoZHIt PnByb2dpZl9jb2RlKTsKPiA+ID4gPiA+IC0JZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgUENJX0NM QVNTX0RFVklDRSwKPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgcGZfYmFzZSAr IFBDSV9WRU5ET1JfSUQsCj4gPiBoZHItPnZlbmRvcmlkKTsKPiA+ID4gPiA+ICsJZHdfcGNpZV93 cml0ZXdfZGJpKHBjaSwgcGZfYmFzZSArIFBDSV9ERVZJQ0VfSUQsIGhkci0+ZGV2aWNlaWQpOwo+ ID4gPiA+ID4gKwlkd19wY2llX3dyaXRlYl9kYmkocGNpLCBwZl9iYXNlICsgUENJX1JFVklTSU9O X0lELCBoZHItPnJldmlkKTsKPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWJfZGJpKHBjaSwgcGZf YmFzZSArIFBDSV9DTEFTU19QUk9HLAo+ID4gaGRyLT5wcm9naWZfY29kZSk7Cj4gPiA+ID4gPiAr CWR3X3BjaWVfd3JpdGV3X2RiaShwY2ksIHBmX2Jhc2UgKyBQQ0lfQ0xBU1NfREVWSUNFLAo+ID4g PiA+ID4gIAkJCSAgIGhkci0+c3ViY2xhc3NfY29kZSB8IGhkci0+YmFzZWNsYXNzX2NvZGUgPDwg OCk7Cj4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBDSV9DQUNIRV9MSU5FX1NJ WkUsCj4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIHBmX2Jhc2UgKyBQQ0lfQ0FD SEVfTElORV9TSVpFLAo+ID4gPiA+ID4gIAkJCSAgIGhkci0+Y2FjaGVfbGluZV9zaXplKTsKPiA+ ID4gPiA+IC0JZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgUENJX1NVQlNZU1RFTV9WRU5ET1JfSUQs Cj4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGV3X2RiaShwY2ksIHBmX2Jhc2UgKyBQQ0lfU1VCU1lT VEVNX1ZFTkRPUl9JRCwKPiA+ID4gPiA+ICAJCQkgICBoZHItPnN1YnN5c192ZW5kb3JfaWQpOwo+ ID4gPiA+ID4gLQlkd19wY2llX3dyaXRld19kYmkocGNpLCBQQ0lfU1VCU1lTVEVNX0lELCBoZHIt PnN1YnN5c19pZCk7Cj4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBDSV9JTlRF UlJVUFRfUElOLAo+ID4gPiA+ID4gKwlkd19wY2llX3dyaXRld19kYmkocGNpLCBwZl9iYXNlICsg UENJX1NVQlNZU1RFTV9JRCwKPiA+ID4gPiBoZHItPnN1YnN5c19pZCk7Cj4gPiA+ID4gPiArCWR3 X3BjaWVfd3JpdGViX2RiaShwY2ksIHBmX2Jhc2UgKyBQQ0lfSU5URVJSVVBUX1BJTiwKPiA+ID4g PiA+ICAJCQkgICBoZHItPmludGVycnVwdF9waW4pOwo+ID4gPiA+ID4gIAlkd19wY2llX2RiaV9y b193cl9kaXMocGNpKTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+ID4g IH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAtc3RhdGljIGludCBkd19wY2llX2VwX2luYm91bmRfYXR1 KHN0cnVjdCBkd19wY2llX2VwICplcCwgZW51bQo+ID4gPiA+IHBjaV9iYXJubyBiYXIsCj4gPiA+ ID4gPiAtCQkJCSAgZG1hX2FkZHJfdCBjcHVfYWRkciwKPiA+ID4gPiA+ICtzdGF0aWMgaW50IGR3 X3BjaWVfZXBfaW5ib3VuZF9hdHUoc3RydWN0IGR3X3BjaWVfZXAgKmVwLCB1OAo+ID4gZnVuY19u bywKPiA+ID4gPiA+ICsJCQkJICBlbnVtIHBjaV9iYXJubyBiYXIsIGRtYV9hZGRyX3QgY3B1X2Fk ZHIsCj4gPiA+ID4gPiAgCQkJCSAgZW51bSBkd19wY2llX2FzX3R5cGUgYXNfdHlwZSkgIHsKPiA+ ID4gPiA+ICAJaW50IHJldDsKPiA+ID4gPiA+IEBAIC0xMTIsNyArMTIwLDcgQEAgc3RhdGljIGlu dCBkd19wY2llX2VwX2luYm91bmRfYXR1KHN0cnVjdAo+ID4gPiA+IGR3X3BjaWVfZXAgKmVwLCBl bnVtIHBjaV9iYXJubyBiYXIsCj4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ ICAJfQo+ID4gPiA+ID4KPiA+ID4gPiA+IC0JcmV0ID0gZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1 KHBjaSwgZnJlZV93aW4sIGJhciwgY3B1X2FkZHIsCj4gPiA+ID4gPiArCXJldCA9IGR3X3BjaWVf cHJvZ19pbmJvdW5kX2F0dShwY2ksIGZ1bmNfbm8sIGZyZWVfd2luLCBiYXIsCj4gPiA+ID4gPiAr Y3B1X2FkZHIsCj4gPiA+ID4gPiAgCQkJCSAgICAgICBhc190eXBlKTsKPiA+ID4gPiA+ICAJaWYg KHJldCA8IDApIHsKPiA+ID4gPiA+ICAJCWRldl9lcnIocGNpLT5kZXYsICJGYWlsZWQgdG8gcHJv Z3JhbSBJQiB3aW5kb3dcbiIpOyBAQAo+ID4gLTEyNSw3Cj4gPiA+ID4gPiArMTMzLDggQEAgc3Rh dGljIGludCBkd19wY2llX2VwX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llX2VwICplcCwKPiA+ ID4gPiBlbnVtIHBjaV9iYXJubyBiYXIsCj4gPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+ID4g IH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAtc3RhdGljIGludCBkd19wY2llX2VwX291dGJvdW5kX2F0 dShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsCj4gPiA+ID4gPiBwaHlzX2FkZHJfdCBwaHlzX2FkZHIs Cj4gPiA+ID4gPiArc3RhdGljIGludCBkd19wY2llX2VwX291dGJvdW5kX2F0dShzdHJ1Y3QgZHdf cGNpZV9lcCAqZXAsIHU4Cj4gPiBmdW5jX25vLAo+ID4gPiA+ID4gKwkJCQkgICBwaHlzX2FkZHJf dCBwaHlzX2FkZHIsCj4gPiA+ID4gPiAgCQkJCSAgIHU2NCBwY2lfYWRkciwgc2l6ZV90IHNpemUp ICB7Cj4gPiA+ID4gPiAgCXUzMiBmcmVlX3dpbjsKPiA+ID4gPiA+IEBAIC0xMzcsOCArMTQ2LDgg QEAgc3RhdGljIGludCBkd19wY2llX2VwX291dGJvdW5kX2F0dShzdHJ1Y3QKPiA+ID4gPiBkd19w Y2llX2VwICplcCwgcGh5c19hZGRyX3QgcGh5c19hZGRyLAo+ID4gPiA+ID4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAtCWR3X3BjaWVfcHJvZ19v dXRib3VuZF9hdHUocGNpLCBmcmVlX3dpbiwgUENJRV9BVFVfVFlQRV9NRU0sCj4gPiA+ID4gPiAt CQkJCSAgcGh5c19hZGRyLCBwY2lfYWRkciwgc2l6ZSk7Cj4gPiA+ID4gPiArCWR3X3BjaWVfcHJv Z19lcF9vdXRib3VuZF9hdHUocGNpLCBmdW5jX25vLCBmcmVlX3dpbiwKPiA+ID4gPiBQQ0lFX0FU VV9UWVBFX01FTSwKPiA+ID4gPiA+ICsJCQkJICAgICBwaHlzX2FkZHIsIHBjaV9hZGRyLCBzaXpl KTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgCXNldF9iaXQoZnJlZV93aW4sIGVwLT5vYl93aW5kb3df bWFwKTsKPiA+ID4gPiA+ICAJZXAtPm91dGJvdW5kX2FkZHJbZnJlZV93aW5dID0gcGh5c19hZGRy OyBAQCAtMTU0LDcgKzE2Myw3Cj4gPiBAQAo+ID4gPiA+IHN0YXRpYwo+ID4gPiA+ID4gdm9pZCBk d19wY2llX2VwX2NsZWFyX2JhcihzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLAo+ID4g PiA+ID4gIAllbnVtIHBjaV9iYXJubyBiYXIgPSBlcGZfYmFyLT5iYXJubzsKPiA+ID4gPiA+ICAJ dTMyIGF0dV9pbmRleCA9IGVwLT5iYXJfdG9fYXR1W2Jhcl07Cj4gPiA+ID4gPgo+ID4gPiA+ID4g LQlfX2R3X3BjaWVfZXBfcmVzZXRfYmFyKHBjaSwgYmFyLCBlcGZfYmFyLT5mbGFncyk7Cj4gPiA+ ID4gPiArCV9fZHdfcGNpZV9lcF9yZXNldF9iYXIocGNpLCBmdW5jX25vLCBiYXIsIGVwZl9iYXIt PmZsYWdzKTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgCWR3X3BjaWVfZGlzYWJsZV9hdHUocGNpLCBh dHVfaW5kZXgsCj4gPiBEV19QQ0lFX1JFR0lPTl9JTkJPVU5EKTsKPiA+ID4gPiA+ICAJY2xlYXJf Yml0KGF0dV9pbmRleCwgZXAtPmliX3dpbmRvd19tYXApOyBAQCAtMTcwLDE0ICsxNzksMTYKPiA+ IEBACj4gPiA+ID4gPiBzdGF0aWMgaW50IGR3X3BjaWVfZXBfc2V0X2JhcihzdHJ1Y3QgcGNpX2Vw YyAqZXBjLCB1OCBmdW5jX25vLAo+ID4gPiA+ID4gIAlzaXplX3Qgc2l6ZSA9IGVwZl9iYXItPnNp emU7Cj4gPiA+ID4gPiAgCWludCBmbGFncyA9IGVwZl9iYXItPmZsYWdzOwo+ID4gPiA+ID4gIAll bnVtIGR3X3BjaWVfYXNfdHlwZSBhc190eXBlOwo+ID4gPiA+ID4gLQl1MzIgcmVnID0gUENJX0JB U0VfQUREUkVTU18wICsgKDQgKiBiYXIpOwo+ID4gPiA+ID4gKwl1MzIgcGZfYmFzZSA9IGZ1bmNf bm8gKiBlcGMtPnBmX29mZnNldDsKPiA+ID4gPiA+ICsJdTMyIHJlZyA9IFBDSV9CQVNFX0FERFJF U1NfMCArICg0ICogYmFyKSArIHBmX2Jhc2U7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIAlpZiAoIShm bGFncyAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UpKQo+ID4gPiA+ID4gIAkJYXNfdHlwZSA9IERX X1BDSUVfQVNfTUVNOwo+ID4gPiA+ID4gIAllbHNlCj4gPiA+ID4gPiAgCQlhc190eXBlID0gRFdf UENJRV9BU19JTzsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtCXJldCA9IGR3X3BjaWVfZXBfaW5ib3Vu ZF9hdHUoZXAsIGJhciwgZXBmX2Jhci0+cGh5c19hZGRyLAo+ID4gYXNfdHlwZSk7Cj4gPiA+ID4g PiArCXJldCA9IGR3X3BjaWVfZXBfaW5ib3VuZF9hdHUoZXAsIGZ1bmNfbm8sIGJhciwKPiA+ID4g PiA+ICsJCQkJICAgICBlcGZfYmFyLT5waHlzX2FkZHIsIGFzX3R5cGUpOwo+ID4gPiA+ID4gIAlp ZiAocmV0KQo+ID4gPiA+ID4gIAkJcmV0dXJuIHJldDsKPiA+ID4gPiA+Cj4gPiA+ID4gPiBAQCAt MjM1LDcgKzI0Niw3IEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9tYXBfYWRkcihzdHJ1Y3QgcGNp X2VwYwo+ID4gPiA+ICplcGMsIHU4IGZ1bmNfbm8sCj4gPiA+ID4gPiAgCXN0cnVjdCBkd19wY2ll X2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMpOwo+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtCXJl dCA9IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KGVwLCBhZGRyLCBwY2lfYWRkciwgc2l6ZSk7Cj4g PiA+ID4gPiArCXJldCA9IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KGVwLCBmdW5jX25vLCBhZGRy LCBwY2lfYWRkciwKPiA+ID4gPiA+ICtzaXplKTsKPiA+ID4gPiA+ICAJaWYgKHJldCkgewo+ID4g PiA+ID4gIAkJZGV2X2VycihwY2ktPmRldiwgIkZhaWxlZCB0byBlbmFibGUgYWRkcmVzc1xuIik7 Cj4gPiA+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gQEAgLTI0OCwxMiArMjU5LDEzIEBA IHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9nZXRfbXNpKHN0cnVjdCBwY2lfZXBjCj4gPiA+ID4gPiAq ZXBjLCB1OCBmdW5jX25vKSAgewo+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAgPSBl cGNfZ2V0X2RydmRhdGEoZXBjKTsKPiA+ID4gPiA+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRv X2R3X3BjaWVfZnJvbV9lcChlcCk7Cj4gPiA+ID4gPiArCXUzMiBwZl9iYXNlID0gZnVuY19ubyAq IGVwYy0+cGZfb2Zmc2V0Owo+ID4gPiA+ID4gIAl1MzIgdmFsLCByZWc7Cj4gPiA+ID4gPgo+ID4g PiA+ID4gIAlpZiAoIWVwLT5tc2lfY2FwKQo+ID4gPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4g PiA+ID4gPgo+ID4gPiA+ID4gLQlyZWcgPSBlcC0+bXNpX2NhcCArIFBDSV9NU0lfRkxBR1M7Cj4g PiA+ID4gPiArCXJlZyA9IGVwLT5tc2lfY2FwICsgcGZfYmFzZSArIFBDSV9NU0lfRkxBR1M7Cj4g PiA+ID4gPiAgCXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwgcmVnKTsKPiA+ID4gPiA+ICAJ aWYgKCEodmFsICYgUENJX01TSV9GTEFHU19FTkFCTEUpKQo+ID4gPiA+ID4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gPiA+ID4gPiBAQCAtMjY3LDEyICsyNzksMTMgQEAgc3RhdGljIGludCBkd19wY2ll X2VwX3NldF9tc2koc3RydWN0IHBjaV9lcGMKPiA+ID4gPiA+ICplcGMsIHU4IGZ1bmNfbm8sIHU4 IGludGVycnVwdHMpICB7Cj4gPiA+ID4gPiAgCXN0cnVjdCBkd19wY2llX2VwICplcCA9IGVwY19n ZXRfZHJ2ZGF0YShlcGMpOwo+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdf cGNpZV9mcm9tX2VwKGVwKTsKPiA+ID4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBmdW5jX25vICogZXBj LT5wZl9vZmZzZXQ7Cj4gPiA+ID4gPiAgCXUzMiB2YWwsIHJlZzsKPiA+ID4gPiA+Cj4gPiA+ID4g PiAgCWlmICghZXAtPm1zaV9jYXApCj4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4g PiA+Cj4gPiA+ID4gPiAtCXJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9GTEFHUzsKPiA+ID4g PiA+ICsJcmVnID0gZXAtPm1zaV9jYXAgKyBwZl9iYXNlICsgUENJX01TSV9GTEFHUzsKPiA+ID4g PiA+ICAJdmFsID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCByZWcpOwo+ID4gPiA+ID4gIAl2YWwg Jj0gflBDSV9NU0lfRkxBR1NfUU1BU0s7Cj4gPiA+ID4gPiAgCXZhbCB8PSAoaW50ZXJydXB0cyA8 PCAxKSAmIFBDSV9NU0lfRkxBR1NfUU1BU0s7IEBAIC0yODcsMTIKPiA+ID4gPiA+ICszMDAsMTMg QEAgc3RhdGljIGludCBkd19wY2llX2VwX2dldF9tc2l4KHN0cnVjdCBwY2lfZXBjICplcGMsIHU4 Cj4gPiBmdW5jX25vKSAgewo+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAgPSBlcGNf Z2V0X2RydmRhdGEoZXBjKTsKPiA+ID4gPiA+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3 X3BjaWVfZnJvbV9lcChlcCk7Cj4gPiA+ID4gPiArCXUzMiBwZl9iYXNlID0gZnVuY19ubyAqIGVw Yy0+cGZfb2Zmc2V0Owo+ID4gPiA+ID4gIAl1MzIgdmFsLCByZWc7Cj4gPiA+ID4gPgo+ID4gPiA+ ID4gIAlpZiAoIWVwLT5tc2l4X2NhcCkKPiA+ID4gPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4g PiA+ID4KPiA+ID4gPiA+IC0JcmVnID0gZXAtPm1zaXhfY2FwICsgUENJX01TSVhfRkxBR1M7Cj4g PiA+ID4gPiArCXJlZyA9IGVwLT5tc2l4X2NhcCArIHBmX2Jhc2UgKyBQQ0lfTVNJWF9GTEFHUzsK PiA+ID4gPiA+ICAJdmFsID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCByZWcpOwo+ID4gPiA+ID4g IAlpZiAoISh2YWwgJiBQQ0lfTVNJWF9GTEFHU19FTkFCTEUpKQo+ID4gPiA+ID4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gPiA+ID4gPiBAQCAtMzA2LDEyICszMjAsMTMgQEAgc3RhdGljIGludCBkd19w Y2llX2VwX3NldF9tc2l4KHN0cnVjdAo+ID4gPiA+ID4gcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25v LCB1MTYgaW50ZXJydXB0cykgIHsKPiA+ID4gPiA+ICAJc3RydWN0IGR3X3BjaWVfZXAgKmVwID0g ZXBjX2dldF9kcnZkYXRhKGVwYyk7Cj4gPiA+ID4gPiAgCXN0cnVjdCBkd19wY2llICpwY2kgPSB0 b19kd19wY2llX2Zyb21fZXAoZXApOwo+ID4gPiA+ID4gKwl1MzIgcGZfYmFzZSA9IGZ1bmNfbm8g KiBlcGMtPnBmX29mZnNldDsKPiA+ID4gPiA+ICAJdTMyIHZhbCwgcmVnOwo+ID4gPiA+ID4KPiA+ ID4gPiA+ICAJaWYgKCFlcC0+bXNpeF9jYXApCj4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiA+ID4gPiA+Cj4gPiA+ID4gPiAtCXJlZyA9IGVwLT5tc2l4X2NhcCArIFBDSV9NU0lYX0ZMQUdT Owo+ID4gPiA+ID4gKwlyZWcgPSBlcC0+bXNpeF9jYXAgKyBwZl9iYXNlICsgUENJX01TSVhfRkxB R1M7Cj4gPiA+ID4gPiAgCXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwgcmVnKTsKPiA+ID4g PiA+ICAJdmFsICY9IH5QQ0lfTVNJWF9GTEFHU19RU0laRTsKPiA+ID4gPiA+ICAJdmFsIHw9IGlu dGVycnVwdHM7Cj4gPiA+ID4gPiBAQCAtNDAwLDYgKzQxNSw3IEBAIGludCBkd19wY2llX2VwX3Jh aXNlX21zaV9pcnEoc3RydWN0Cj4gPiBkd19wY2llX2VwCj4gPiA+ID4gKmVwLCB1OCBmdW5jX25v LAo+ID4gPiA+ID4gIAl1bnNpZ25lZCBpbnQgYWxpZ25lZF9vZmZzZXQ7Cj4gPiA+ID4gPiAgCXUx NiBtc2dfY3RybCwgbXNnX2RhdGE7Cj4gPiA+ID4gPiAgCXUzMiBtc2dfYWRkcl9sb3dlciwgbXNn X2FkZHJfdXBwZXIsIHJlZzsKPiA+ID4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBmdW5jX25vICogZXBj LT5wZl9vZmZzZXQ7Cj4gPiA+ID4gPiAgCXU2NCBtc2dfYWRkcjsKPiA+ID4gPiA+ICAJYm9vbCBo YXNfdXBwZXI7Cj4gPiA+ID4gPiAgCWludCByZXQ7Cj4gPiA+ID4gPiBAQCAtNDA4LDE5ICs0MjQs MTkgQEAgaW50IGR3X3BjaWVfZXBfcmFpc2VfbXNpX2lycShzdHJ1Y3QKPiA+ID4gPiBkd19wY2ll X2VwICplcCwgdTggZnVuY19ubywKPiA+ID4gPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ ID4KPiA+ID4gPiA+ICAJLyogUmFpc2UgTVNJIHBlciB0aGUgUENJIExvY2FsIEJ1cyBTcGVjaWZp Y2F0aW9uIFJldmlzaW9uIDMuMCwgNi44LjEuCj4gPiAqLwo+ID4gPiA+ID4gLQlyZWcgPSBlcC0+ bXNpX2NhcCArIFBDSV9NU0lfRkxBR1M7Cj4gPiA+ID4gPiArCXJlZyA9IGVwLT5tc2lfY2FwICsg cGZfYmFzZSArIFBDSV9NU0lfRkxBR1M7Cj4gPiA+ID4gPiAgCW1zZ19jdHJsID0gZHdfcGNpZV9y ZWFkd19kYmkocGNpLCByZWcpOwo+ID4gPiA+ID4gIAloYXNfdXBwZXIgPSAhIShtc2dfY3RybCAm IFBDSV9NU0lfRkxBR1NfNjRCSVQpOwo+ID4gPiA+ID4gLQlyZWcgPSBlcC0+bXNpX2NhcCArIFBD SV9NU0lfQUREUkVTU19MTzsKPiA+ID4gPiA+ICsJcmVnID0gZXAtPm1zaV9jYXAgKyBwZl9iYXNl ICsgUENJX01TSV9BRERSRVNTX0xPOwo+ID4gPiA+ID4gIAltc2dfYWRkcl9sb3dlciA9IGR3X3Bj aWVfcmVhZGxfZGJpKHBjaSwgcmVnKTsKPiA+ID4gPiA+ICAJaWYgKGhhc191cHBlcikgewo+ID4g PiA+ID4gLQkJcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lfTVNJX0FERFJFU1NfSEk7Cj4gPiA+ID4g PiArCQlyZWcgPSBlcC0+bXNpX2NhcCArIHBmX2Jhc2UgKyBQQ0lfTVNJX0FERFJFU1NfSEk7Cj4g PiA+ID4gPiAgCQltc2dfYWRkcl91cHBlciA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgcmVnKTsK PiA+ID4gPiA+IC0JCXJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9EQVRBXzY0Owo+ID4gPiA+ ID4gKwkJcmVnID0gZXAtPm1zaV9jYXAgKyBwZl9iYXNlICsgUENJX01TSV9EQVRBXzY0Owo+ID4g PiA+ID4gIAkJbXNnX2RhdGEgPSBkd19wY2llX3JlYWR3X2RiaShwY2ksIHJlZyk7Cj4gPiA+ID4g PiAgCX0gZWxzZSB7Cj4gPiA+ID4gPiAgCQltc2dfYWRkcl91cHBlciA9IDA7Cj4gPiA+ID4gPiAt CQlyZWcgPSBlcC0+bXNpX2NhcCArIFBDSV9NU0lfREFUQV8zMjsKPiA+ID4gPiA+ICsJCXJlZyA9 IGVwLT5tc2lfY2FwICsgcGZfYmFzZSArIFBDSV9NU0lfREFUQV8zMjsKPiA+ID4gPiA+ICAJCW1z Z19kYXRhID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCByZWcpOwo+ID4gPiA+ID4gIAl9Cj4gPiA+ ID4gPiAgCWFsaWduZWRfb2Zmc2V0ID0gbXNnX2FkZHJfbG93ZXIgJiAoZXBjLT5tZW0tPnBhZ2Vf c2l6ZSAtIDEpOwo+ID4gQEAKPiA+ID4gPiA+IC00MzksNyArNDU1LDcgQEAgaW50IGR3X3BjaWVf ZXBfcmFpc2VfbXNpX2lycShzdHJ1Y3QgZHdfcGNpZV9lcAo+ID4gPiA+ID4gKmVwLAo+ID4gPiA+ ID4gdTggZnVuY19ubywgIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAgaW50IGR3X3BjaWVfZXBfcmFp c2VfbXNpeF9pcnEoc3RydWN0IGR3X3BjaWVfZXAgKmVwLCB1OCBmdW5jX25vLAo+ID4gPiA+ID4g LQkJCSAgICAgdTE2IGludGVycnVwdF9udW0pCj4gPiA+ID4gPiArCQkJICAgICAgdTE2IGludGVy cnVwdF9udW0pCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0g dG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsKPiA+ID4gPiA+ICAJc3RydWN0IHBjaV9lcGMgKmVwYyA9 IGVwLT5lcGM7Cj4gPiA+ID4gPiBAQCAtNDQ3LDE2ICs0NjMsMTcgQEAgaW50IGR3X3BjaWVfZXBf cmFpc2VfbXNpeF9pcnEoc3RydWN0Cj4gPiA+ID4gZHdfcGNpZV9lcCAqZXAsIHU4IGZ1bmNfbm8s Cj4gPiA+ID4gPiAgCXUzMiBiYXJfYWRkcl91cHBlciwgYmFyX2FkZHJfbG93ZXI7Cj4gPiA+ID4g PiAgCXUzMiBtc2dfYWRkcl91cHBlciwgbXNnX2FkZHJfbG93ZXI7Cj4gPiA+ID4gPiAgCXUzMiBy ZWcsIG1zZ19kYXRhLCB2ZWNfY3RybDsKPiA+ID4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBmdW5jX25v ICogZXBjLT5wZl9vZmZzZXQ7Cj4gPiA+ID4gPiAgCXU2NCB0YmxfYWRkciwgbXNnX2FkZHIsIHJl Z191NjQ7Cj4gPiA+ID4gPiAgCXZvaWQgX19pb21lbSAqbXNpeF90Ymw7Cj4gPiA+ID4gPiAgCWlu dCByZXQ7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gLQlyZWcgPSBlcC0+bXNpeF9jYXAgKyBQQ0lfTVNJ WF9UQUJMRTsKPiA+ID4gPiA+ICsJcmVnID0gZXAtPm1zaXhfY2FwICsgcGZfYmFzZSArIFBDSV9N U0lYX1RBQkxFOwo+ID4gPiA+ID4gIAl0Ymxfb2Zmc2V0ID0gZHdfcGNpZV9yZWFkbF9kYmkocGNp LCByZWcpOwo+ID4gPiA+ID4gIAliaXIgPSAodGJsX29mZnNldCAmIFBDSV9NU0lYX1RBQkxFX0JJ Uik7Cj4gPiA+ID4gPiAgCXRibF9vZmZzZXQgJj0gUENJX01TSVhfVEFCTEVfT0ZGU0VUOwo+ID4g PiA+ID4KPiA+ID4gPiA+IC0JcmVnID0gUENJX0JBU0VfQUREUkVTU18wICsgKDQgKiBiaXIpOwo+ ID4gPiA+ID4gKwlyZWcgPSBQQ0lfQkFTRV9BRERSRVNTXzAgKyBwZl9iYXNlICsgKDQgKiBiaXIp Owo+ID4gPiA+ID4gIAliYXJfYWRkcl91cHBlciA9IDA7Cj4gPiA+ID4gPiAgCWJhcl9hZGRyX2xv d2VyID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCByZWcpOwo+ID4gPiA+ID4gIAlyZWdfdTY0ID0g KGJhcl9hZGRyX2xvd2VyICYKPiA+IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfTUFTSyk7Cj4g PiA+ID4gQEAKPiA+ID4gPiA+IC01OTIsMTMgKzYwOSwxNyBAQCBpbnQgZHdfcGNpZV9lcF9pbml0 KHN0cnVjdCBkd19wY2llX2VwICplcCkKPiA+ID4gPiA+ICAJZXAtPmVwYyA9IGVwYzsKPiA+ID4g PiA+ICAJZXBjX3NldF9kcnZkYXRhKGVwYywgZXApOwo+ID4gPiA+ID4KPiA+ID4gPiA+IC0JaWYg KGVwLT5vcHMtPmVwX2luaXQpCj4gPiA+ID4gPiAtCQllcC0+b3BzLT5lcF9pbml0KGVwKTsKPiA+ ID4gPiA+IC0KPiA+ID4gPiA+ICAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91OChucCwgIm1heC1m dW5jdGlvbnMiLAo+ID4gJmVwYy0+bWF4X2Z1bmN0aW9ucyk7Cj4gPiA+ID4gPiAgCWlmIChyZXQg PCAwKQo+ID4gPiA+ID4gIAkJZXBjLT5tYXhfZnVuY3Rpb25zID0gMTsKPiA+ID4gPiA+Cj4gPiA+ ID4gPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAicGYtb2Zmc2V0IiwgJmVwYy0+ cGZfb2Zmc2V0KTsKPiA+ID4gPiA+ICsJaWYgKHJldCA8IDApCj4gPiA+ID4gPiArCQllcGMtPnBm X29mZnNldCA9IDA7Cj4gPiA+ID4KPiA+ID4gPiBCYWQgdGhpbmdzIHdpbGwgbGlrZWx5IGhhcHBl biBpZiBtYXhfZnVuY3Rpb25zID4gMSBhbmQgcGYtb2Zmc2V0IGlzbid0IHNldC4KPiA+ID4gPiBJ IHRoaW5rIHRoZSBkcml2ZXIgc2hvdWxkIGJhaWwgaW4gdGhpcyBzaXR1YXRpb24uIEl0IHdvdWxk IGJlIHZlcnkKPiA+ID4gPiBlYXN5IGZvciBzb21lb25lIHRvIG1pc2NvbmZpZ3VyZSB0aGlzLgo+ ID4gPiBZZXMsIHlvdSBhcmUgcmlnaHQsIGJ1dCBpZiB0aGUgbWF4LWZ1bmN0aW9ucyBoYXZlIGRl ZmluZWQgaW4gRFRTLAo+ID4gPiByZXF1aXJlIHRoZSBwZi1vZmZzZXQgbXVzdCBkZWZpbmUgaW4g RFRTLCBJIGFtIG5vdCBzdXJlIHRoZSBjb3JyZWN0Cj4gPiA+IHZhbHVlIG9mIHBmLW9mZnNldGZv ciBvdGhlciBwbGF0Zm9ybXMsIHNvIEkgdGhpbmsgdGhlIG1heC1mdW5jdGlvbnMgYW5kCj4gPiBw Zi1vZmZzZXQgc2hvdWxkIG5vdCBoYXZlIHRoZSBkZXBlbmRlbmNlLgo+ID4gCj4gPiBZZXMgeW91 J3JlIGNvcnJlY3QuIEkgaGFkbid0IHJlYWxseSB0aG91Z2h0IGFib3V0IHRoaXMgYmV5b25kIGxh eWVyc2NhcGUuIEl0J3MKPiA+IGFsc28gcG9zc2libGUgdGhhdCBvdGhlciBoYXJkd2FyZSBjb3Vs ZCBzdXBwb3J0IG11bHRpcGxlIFBGcyB3aXRob3V0IHJlbHlpbmcKPiA+IG9uIGFuIG9mZnNldCBh bmQgcGVyaGFwcyBlbXBsb3kgc29tZSBvdGhlciBtZWNoYW5pc20gdG8gYWNjZXNzIGRpZmZlcmVu dAo+ID4gZnVuY3Rpb25zLiBTbyB3aGlsc3QgdGhpcyBwcm9wZXJ0eSBjYW4gYmUgb3B0aW9uYWwg Zm9yIHRoZSBtYWpvcml0eSBvZiBkd2MKPiA+IGNvbnRyb2xsZXJzIC0gaXQgbXVzdCBiZSBzZXQg YW5kIGNhbm5vdCBiZSB6ZXJvIGZvciBsYXllcnNjYXBlLgo+ID4gCj4gPiBQZXJoYXBzIGluc2lk ZSBsc19wY2llX2VwX2luaXQsIHlvdSBjYW4gc2V0IG1heF9mdW5jdGlvbnMgdG8gMSBpZiBwZl9v ZmZzZXQgaXMKPiA+IDAgYW5kIHByaW50IGEgV0FSTiB0byBleHBsYWluIHdoeT8gKE9yIGxzX3Bj aWVfZXBfaW5pdCByZXR1cm5zIGZhaWx1cmUgYW5kCj4gPiBkd19wY2llX2VwX2luaXQgY2hlY2tz IGl0IGFuZCBiYWlscykuCj4gPiAKPiA+IFRoZSBhc3N1bXB0aW9uIGlzIGJlaW5nIG1hZGUgaGVy ZSB0aGF0IGZ1dHVyZSBkdyBjb250cm9sbGVycyBtYXkgYWxzbyB1c2UKPiA+IHBmX29mZnNldCAo aXMgdGhpcyBsaWtlbHk/KSAtIG90aGVyd2lzZSB3aHkgaXMgdGhpcyBpbiBwY2llLWRlc2lnbndh cmUtZXAuYyBhbmQKPiA+IG5vdCBwY2ktbGF5ZXJzY2FwZS1lcC5jIGFuZCB3aHkgaXMgdGhpcyB2 YWx1ZSBub3QganVzdCBoYXJkLWNvZGVkIGZvciBscD8KPiAKPiBUaGFua3MgYSBsb3QgZm9yIHlv dXIgZGV0YWlsIGNvbW1lbnRzLCB0aGlzIGdpdmUgbWUgYSBsb3Qgb2YgaGVscC4KPiBZZXMsIEkg YWdyZWUgeW91ciBwb2ludCwgYW5kIEkgd2lsbCBzZXJpb3VzbHkgY29uc2lkZXIgYSBiZXN0IHdh eSB0byBmaXggdGhpcyBwb3RlbnRpYWwgaXNzdWUuCj4gQmFzZWQgb24geW91ciBleHBlcmllbmNl LCBob3cgZG8gb3RoZXIgcGxhdGZvcm1zIGltcGxlbWVudCB0aGUgbXVsdGlwbGUgZnVuY3Rpb25z Pwo+IFRoZSBEV0MgY29yZSBkaWZmZXJlbmNlIHRoZSBkaWZmZXJlbnQgUEYgYnkgc2lnbmFsICJj bGllbnQwX3RscF9mdW5jX251bVsoUEZfV0QtMSk6MF0iCgpJIGRvbid0IGtub3csIHRob3VnaCBs b29raW5nIGF0IHRoZSBrZXJuZWwgZHJpdmVycyBzdWdnZXN0cyB0aGF0IHRoZQpleGlzdGluZyBF UCBjb250cm9sbGVycyBoYXZlIGEgbGFyZ2UgYWRkcmVzcyBzcGFjZSB3aGljaCBjb250YWlucyBt dWx0aXBsZQpQRnMuIFRoZXkgYXJlIGFjY2Vzc2VkIHZpYSBtYWNyb3MgKFJPQ0tDSElQX1BDSUVf RVBfRlVOQ19CQVNFKGZuKSwgCkNETlNfUENJRV9FUF9GVU5DX0JBU0UoZm4pKS4gSXQgd291bGQg YmUgcG9zc2libGUsIGJ1dCBwcm9iYWJseSBub3QgZGVzaXJhYmxlCnRvIGhhdmUgYSBzbWFsbGVy IGFkZHJlc3Mgc3BhY2UgKHdpbmRvdykgYW5kIGEgcmVnaXN0ZXIgdGhhdCBzZWxlY3RzIHdoaWNo CmZ1bmN0aW9uIHRoZSB3aW5kb3cgcmVmZXJzIHRvLiBUaGlzIGlzIHdoeSBJJ20gc2xpZ2h0IG5l cnZvdXMgb2YgYXNzdW1pbmcKdGhhdCBhIHBmLW9mZnNldCB3aWxsIGNvdmVyIGFsbCBmdXR1cmUg ZHcgZHJpdmVycyAtIEkgbWF5IGJlIHdyb25nLgoKPiA+IAo+ID4gCj4gPiA+IGV2ZW4gdGhvdWdo IEkgZGlkbid0IGRlZmluZSBwZi1vZmZzZXQgd2hlbiBJIGRlZmluZWQgbWF4LWZ1bmN0aW9ucywK PiA+ID4gdGhlIHBmLW9mZnNldCBpcyAwLCB0aGUgRFdDIGVwIGRyaXZlciBjYW4gY29udGludWUg cnVuIHRoZSBwcm9ncmVzcyBvZgo+ID4gPiBJTklUIGJ1dCBub3QgcmV0dXJuLCBvZiBjb3Vyc2Us IHRodXMgdGhlIFBGMSB3aWxsIG5vdCB3b3JrLCBJIGRvbid0IGtub3cgd2hpY2gKPiA+IHdheSBp cyBiZXR0ZXIuCj4gSGkgQW5kcmV3LAo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsJaWYgKGVwLT5vcHMtPmVwX2luaXQpCj4gPiA+ID4gPiArCQllcC0+b3BzLT5lcF9pbml0 KGVwKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICAJcmV0ID0gX19wY2lfZXBjX21lbV9pbml0KGVw YywgZXAtPnBoeXNfYmFzZSwgZXAtPmFkZHJfc2l6ZSwKPiA+ID4gPiA+ICAJCQkJIGVwLT5wYWdl X3NpemUpOwo+ID4gPiA+ID4gIAlpZiAocmV0IDwgMCkgewo+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5jCj4gPiA+ID4gPiBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5jCj4gPiA+ID4gPiBp bmRleCA3ZDI1MTAyLi5jOTljZWU0IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kv Y29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5jCj4gPiA+ID4gPiBAQCAtMTU4LDYg KzE1OCw0MyBAQCBzdGF0aWMgdm9pZCBkd19wY2llX3dyaXRlbF9vYl91bnJvbGwoc3RydWN0Cj4g PiA+ID4gZHdfcGNpZSAqcGNpLCB1MzIgaW5kZXgsIHUzMiByZWcsCj4gPiA+ID4gPiAgCWR3X3Bj aWVfd3JpdGVsX2F0dShwY2ksIG9mZnNldCArIHJlZywgdmFsKTsgIH0KPiA+ID4gPiA+Cj4gPiA+ ID4gPiArc3RhdGljIHZvaWQgZHdfcGNpZV9wcm9nX2VwX291dGJvdW5kX2F0dV91bnJvbGwoc3Ry dWN0IGR3X3BjaWUKPiA+ID4gPiA+ICsqcGNpLCB1OAo+ID4gPiA+IGZ1bmNfbm8sCj4gPiA+ID4g PiArCQkJCQkJaW50IGluZGV4LCBpbnQgdHlwZSwKPiA+ID4gPiA+ICsJCQkJCQl1NjQgY3B1X2Fk ZHIsIHU2NCBwY2lfYWRkciwKPiA+ID4gPiA+ICsJCQkJCQl1MzIgc2l6ZSkKPiA+ID4gPiA+ICt7 Cj4gPiA+ID4gPiArCXUzMiByZXRyaWVzLCB2YWw7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWR3 X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LAo+ID4gUENJRV9BVFVfVU5SX0xPV0VS X0JBU0UsCj4gPiA+ID4gPiArCQkJCSBsb3dlcl8zMl9iaXRzKGNwdV9hZGRyKSk7Cj4gPiA+ID4g PiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LAo+ID4gUENJRV9BVFVfVU5S X1VQUEVSX0JBU0UsCj4gPiA+ID4gPiArCQkJCSB1cHBlcl8zMl9iaXRzKGNwdV9hZGRyKSk7Cj4g PiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LCBQQ0lFX0FUVV9V TlJfTElNSVQsCj4gPiA+ID4gPiArCQkJCSBsb3dlcl8zMl9iaXRzKGNwdV9hZGRyICsgc2l6ZSAt IDEpKTsKPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxfb2JfdW5yb2xsKHBjaSwgaW5kZXgsCj4g PiBQQ0lFX0FUVV9VTlJfTE9XRVJfVEFSR0VULAo+ID4gPiA+ID4gKwkJCQkgbG93ZXJfMzJfYml0 cyhwY2lfYWRkcikpOwo+ID4gPiA+ID4gKwlkd19wY2llX3dyaXRlbF9vYl91bnJvbGwocGNpLCBp bmRleCwKPiA+IFBDSUVfQVRVX1VOUl9VUFBFUl9UQVJHRVQsCj4gPiA+ID4gPiArCQkJCSB1cHBl cl8zMl9iaXRzKHBjaV9hZGRyKSk7Cj4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9s bChwY2ksIGluZGV4LAo+ID4gUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMSwKPiA+ID4gPiA+ICsJ CQkJIHR5cGUgfCBQQ0lFX0FUVV9GVU5DX05VTShmdW5jX25vKSk7Cj4gPiA+ID4KPiA+ID4gPiBX aXRoIHRoZSBleGNlcHRpb24gb2YgdGhpcyBsaW5lLCB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9u IGlzCj4gPiA+ID4gaWRlbnRpY2FsIHRvIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHVfdW5yb2xs Lgo+ID4gPiBZZXMsIEkgY2FuIGludGVncmF0ZSB0aGUgc2FtZSBjb2RlLCBidXQgSSB0aGluayB3 ZSdkIGJldHRlciB1c2UgdGhlCj4gPiA+IGRpZmZlcmVudCBvdXRib3VuZCB3aW5kb3cgc2V0IGZ1 bmN0aW9uIGJldHdlZW4gUkMgYW5kIEVQLCBiZWNhdXNlIHRoZSBSQwo+ID4gZG9uJ3QgbmVlZCB0 aGUgZnVuY19udW0gcGFyYW1ldGVyLgo+ID4gCj4gPiAKPiA+IAo+ID4gPiA+Cj4gPiA+ID4gPiAr CWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LAo+ID4gUENJRV9BVFVfVU5SX1JF R0lPTl9DVFJMMiwKPiA+ID4gPiA+ICsJCQkJIFBDSUVfQVRVX0VOQUJMRSk7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCS8qCj4gPiA+ID4gPiArCSAqIE1ha2Ugc3VyZSBBVFUgZW5hYmxlIHRha2Vz IGVmZmVjdCBiZWZvcmUgYW55IHN1YnNlcXVlbnQgY29uZmlnCj4gPiA+ID4gPiArCSAqIGFuZCBJ L08gYWNjZXNzZXMuCj4gPiA+ID4gPiArCSAqLwo+ID4gPiA+ID4gKwlmb3IgKHJldHJpZXMgPSAw OyByZXRyaWVzIDwgTElOS19XQUlUX01BWF9JQVRVX1JFVFJJRVM7IHJldHJpZXMrKykKPiA+IHsK PiA+ID4gPiA+ICsJCXZhbCA9IGR3X3BjaWVfcmVhZGxfb2JfdW5yb2xsKHBjaSwgaW5kZXgsCj4g PiA+ID4gPiArCQkJCQkgICAgICBQQ0lFX0FUVV9VTlJfUkVHSU9OX0NUUkwyKTsKPiA+ID4gPiA+ ICsJCWlmICh2YWwgJiBQQ0lFX0FUVV9FTkFCTEUpCj4gPiA+ID4gPiArCQkJcmV0dXJuOwo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gKwkJbWRlbGF5KExJTktfV0FJVF9JQVRVKTsKPiA+ID4gPiA+ICsJ fQo+ID4gPiA+ID4gKwlkZXZfZXJyKHBjaS0+ZGV2LCAiT3V0Ym91bmQgaUFUVSBpcyBub3QgYmVp bmcgZW5hYmxlZFxuIik7IH0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBkd19w Y2llX3Byb2dfb3V0Ym91bmRfYXR1X3Vucm9sbChzdHJ1Y3QgZHdfcGNpZSAqcGNpLAo+ID4gPiA+ ID4gaW50Cj4gPiA+ID4gaW5kZXgsCj4gPiA+ID4gPiAgCQkJCQkgICAgIGludCB0eXBlLCB1NjQg Y3B1X2FkZHIsCj4gPiA+ID4gPiAgCQkJCQkgICAgIHU2NCBwY2lfYWRkciwgdTMyIHNpemUpIEBA IC0xOTQsNgo+ID4gKzIzMSw1MSBAQCBzdGF0aWMKPiA+ID4gPiA+IHZvaWQKPiA+ID4gPiBkd19w Y2llX3Byb2dfb3V0Ym91bmRfYXR1X3Vucm9sbChzdHJ1Y3QgZHdfcGNpZSAqcGNpLCBpbnQgaW5k ZXgsCj4gPiA+ID4gPiAgCWRldl9lcnIocGNpLT5kZXYsICJPdXRib3VuZCBpQVRVIGlzIG5vdCBi ZWluZyBlbmFibGVkXG4iKTsgIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiArdm9pZCBkd19wY2llX3By b2dfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIHU4Cj4gPiA+ID4gPiArZnVu Y19ubywgaW50Cj4gPiA+ID4gaW5kZXgsCj4gPiA+ID4gPiArCQkJCSAgaW50IHR5cGUsIHU2NCBj cHVfYWRkciwgdTY0IHBjaV9hZGRyLAo+ID4gPiA+ID4gKwkJCQkgIHUzMiBzaXplKQo+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ICsJdTMyIHJldHJpZXMsIHZhbDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsJaWYgKHBjaS0+b3BzLT5jcHVfYWRkcl9maXh1cCkKPiA+ID4gPiA+ICsJCWNwdV9hZGRyID0g cGNpLT5vcHMtPmNwdV9hZGRyX2ZpeHVwKHBjaSwgY3B1X2FkZHIpOwo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwlpZiAocGNpLT5pYXR1X3Vucm9sbF9lbmFibGVkKSB7Cj4gPiA+ID4gPiArCQlkd19w Y2llX3Byb2dfZXBfb3V0Ym91bmRfYXR1X3Vucm9sbChwY2ksIGZ1bmNfbm8sIGluZGV4LAo+ID4g dHlwZSwKPiA+ID4gPiA+ICsJCQkJCQkgICAgY3B1X2FkZHIsIHBjaV9hZGRyLCBzaXplKTsKPiA+ ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlk d19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9WSUVXUE9SVCwKPiA+ID4gPiA+ICsJCQkg ICBQQ0lFX0FUVV9SRUdJT05fT1VUQk9VTkQgfCBpbmRleCk7Cj4gPiA+ID4gPiArCWR3X3BjaWVf d3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0xPV0VSX0JBU0UsCj4gPiA+ID4gPiArCQkJICAgbG93 ZXJfMzJfYml0cyhjcHVfYWRkcikpOwo+ID4gPiA+ID4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNp LCBQQ0lFX0FUVV9VUFBFUl9CQVNFLAo+ID4gPiA+ID4gKwkJCSAgIHVwcGVyXzMyX2JpdHMoY3B1 X2FkZHIpKTsKPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfTElN SVQsCj4gPiA+ID4gPiArCQkJICAgbG93ZXJfMzJfYml0cyhjcHVfYWRkciArIHNpemUgLSAxKSk7 Cj4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0xPV0VSX1RBUkdF VCwKPiA+ID4gPiA+ICsJCQkgICBsb3dlcl8zMl9iaXRzKHBjaV9hZGRyKSk7Cj4gPiA+ID4gPiAr CWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX1VQUEVSX1RBUkdFVCwKPiA+ID4gPiA+ ICsJCQkgICB1cHBlcl8zMl9iaXRzKHBjaV9hZGRyKSk7Cj4gPiA+ID4gPiArCWR3X3BjaWVfd3Jp dGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMSwgdHlwZSB8Cj4gPiA+ID4gPiArCQkJICAgUENJRV9B VFVfRlVOQ19OVU0oZnVuY19ubykpOwo+ID4gPiA+Cj4gPiA+ID4gVGhlIHNhbWUgaGVyZSwgdGhp cyBpcyBpZGVudGljYWwgdG8gZHdfcGNpZV9wcm9nX291dGJvdW5kX2F0dSB3aXRoCj4gPiA+ID4g dGhlIGV4Y2VwdGlvbiBvZiB0aGlzIGxpbmUuCj4gPiA+ID4KPiA+ID4gPiBJcyB0aGVyZSBhIHdh eSB5b3UgY2FuIGF2b2lkIGFsbCBvZiB0aGlzIGR1cGxpY2F0ZWQgY29kZT8KPiA+ID4gQXMgYWJv dmUsIEkgY2FuIGludGVncmF0ZSB0aGUgc2FtZSBjb2RlLCBidXQgSSBrZWVwIHRvIHRoaW5rIHRo ZQo+ID4gPiBkaWZmZXJlbnQgb3V0Ym91bmQgV2luZG93IHNldCBmdW5jdGlvbiBzaG91bGQgYmUg dXNlZCBiZXR3ZWVuIFJDIGFuZCBFUC4KPiA+IAo+ID4gT3IsIGlzIGl0IHBvc3NpYmxlIHRvIGtl ZXAgYW5kIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLCBidXQgdXNlIHRoZW0KPiA+IGRpZmZl cmVudGx5LCBlLmc6Cj4gPiAKPiA+IAo+ID4gQEAgLTEzNyw4ICsxNDYsOCBAQCBzdGF0aWMgaW50 IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdAo+ID4gZHdfcGNpZV9lcCAqZXAsIHBoeXNf YWRkcl90IHBoeXNfYWRkciwKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ ICAgICAgICAgfQo+ID4gCj4gPiAtICAgICAgIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHUocGNp LCBmcmVlX3dpbiwgUENJRV9BVFVfVFlQRV9NRU0sCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGh5c19hZGRyLCBwY2lfYWRkciwgc2l6ZSk7Cj4gPiArICAgICAgIGR3X3Bj aWVfcHJvZ19vdXRib3VuZF9hdHUocGNpLCBmcmVlX3dpbiwKPiA+IFBDSUVfQVRVX1RZUEVfTUVN X0ZVTkMoZnVuY19ubyksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGh5c19hZGRyLCBwY2lfYWRkciwgc2l6ZSk7Cj4gPiAKPiA+ICAgICAgICAgc2V0X2JpdChmcmVl X3dpbiwgZXAtPm9iX3dpbmRvd19tYXApOwo+ID4gICAgICAgICBlcC0+b3V0Ym91bmRfYWRkcltm cmVlX3dpbl0gPSBwaHlzX2FkZHI7Cj4gPiAKPiA+IAo+ID4gU3VwcG9ydGVkIHdpdGg6Cj4gPiAK PiA+ICNkZWZpbmUgUENJRV9BVFVfVFlQRV9NRU0gICAgICAgICAgICAgICAweDAKPiA+ICNkZWZp bmUgUENJRV9BVFVfVFlQRV9NRU1fRlVOQyhmdW5jX25vKSAoUENJRV9BVFVfVFlQRV9NRU0gfAo+ ID4gUENJRV9BVFVfRlVOQ19OVU0oZnVuY19ubykpCj4gPiAKPiA+IAo+ID4gVGhpcyBpcyBqdXN0 IGEgc3VnZ2VzdGlvbiwgYnV0IEknbSBrZWVuIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCj4g VGhhbmtzLCBJIGhhdmUgdGhpbmsgb2YgYSB3YXkgYXMgZm9sbG93Ogo+IAo+IFRoaXMgaXMgYSBn b29kIHdheSwgYnV0IEkgdGhpbmsgUENJRV9BVFVfVFlQRV9NRU1fRlVOQyhmdW5jX25vKSB3aWxs IGdpdmUKPiBTb21lb25lIGNvbmZ1c2VkIG1lYW5pbmcsIGJlY2F1c2UgUENJRV9BVFVfVFlQRV9N RU0gaW5kaWNhdGUgdGhlIHR5cGUgb2YgVExQLAo+IGFuZCB0aGUgbG9jYXRpb24gaW4gdGhlIGJp dFswOjNdIG9mIHJlZ2lzdGVyIENSMSwgYnV0IHRoZSBQQ0lFX0FUVV9GVU5DX05VTSBpcyBiaXRb MjA6MjRdLAo+IEkgaGF2ZSBhbm90aGVyIHdheToKPiBAQCAtMTM3LDggKzE0Niw4IEBAIHN0YXRp YyBpbnQgZHdfcGNpZV9lcF9vdXRib3VuZF9hdHUoc3RydWN0Cj4gZHdfcGNpZV9lcCAqZXAsIHBo eXNfYWRkcl90IHBoeXNfYWRkciwKPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ICAgICAgICAgfQo+IAkJCj4gCQlkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KHBjaSwgZnJlZV93 aW4sIFBDSUVfQVRVX1RZUEVfTUVNLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGh5c19hZGRyLCBwY2lfYWRkciwgc2l6ZSk7Cj4gKwkJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmko cGNpLCBQQ0lFX0FUVV9DUjEpOwo+ICsJCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRV X0NSMSwgdmFsIHwgUENJRV9BVFVfRlVOQ19OVU0oZnVuY19ubykpOwo+IG9yIAo+ICt2b2lkIGR3 X3BjaWVfcHJvZ19lcF9vdXRib3VuZF9hdHUoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTggZnVuY19u bywgaW50IGluZGV4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0 eXBlLCB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1MzIgc2l6ZSkKPiArewo+ICsJCWR3X3BjaWVfcHJvZ19vdXRib3VuZF9h dHUocGNpLCBpbmRleCwgdHlwZSwgY3B1X2FkZHIsIHBjaV9hZGRyLCBzaXplKTsJCj4gKwkJdmFs ID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBQQ0lFX0FUVV9DUjEpOwo+ICsJCWR3X3BjaWVfd3Jp dGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMSwgdmFsIHwgUENJRV9BVFVfRlVOQ19OVU0oZnVuY19u bykpOwo+ICt9Cj4gCj4gV2hpY2ggZG8geW91IHRoaW5rIGlzIGJldHRlciBvZiB0aGVzZSB0aHJl ZSB3YXlzPwoKQnVpbGRpbmcgdXBvbiB5b3VyIGlkZWEsIGhvdyBhYm91dDoKCiAKIEBAIC0xMzcs OCArMTQ2LDggQEAgc3RhdGljIGludCBkd19wY2llX2VwX291dGJvdW5kX2F0dShzdHJ1Y3QKIGR3 X3BjaWVfZXAgKmVwLCBwaHlzX2FkZHJfdCBwaHlzX2FkZHIsCiAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CiAgICAgICAgIH0KIAogLSAgICAgICBkd19wY2llX3Byb2dfb3V0Ym91bmRf YXR1KHBjaSwgZnJlZV93aW4sIFBDSUVfQVRVX1RZUEVfTUVNLAogLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBoeXNfYWRkciwgcGNpX2FkZHIsIHNpemUpOwogKyAgICAgICBkd19w Y2llX3Byb2dfZXBfb3V0Ym91bmRfYXR1KHBjaSwgZnVuY19ubywgZnJlZV93aW4sIFBDSUVfQVRV X1RZUEVfTUVNCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19hZGRy LCBwY2lfYWRkciwgc2l6ZSk7CiAKICAgICAgICAgc2V0X2JpdChmcmVlX3dpbiwgZXAtPm9iX3dp bmRvd19tYXApOwogICAgICAgICBlcC0+b3V0Ym91bmRfYWRkcltmcmVlX3dpbl0gPSBwaHlzX2Fk ZHI7CiAKCiArdm9pZCBkd19wY2llX3Byb2dfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBkd19wY2ll ICpwY2ksIHU4IGZ1bmNfbm8sIGludCBpbmRleCwKICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCB0eXBlLCB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwKICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBzaXplKQogK3sKICsJCV9fZHdfcGNpZV9w cm9nX291dGJvdW5kX2F0dShwY2ksIGZ1bmNfbm8sIGluZGV4LCB0eXBlLCBjcHVfYWRkciwgcGNp X2FkZHIsIHNpemUpOwkKICt9CiArCiArdm9pZCBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KHN0 cnVjdCBkd19wY2llICpwY2ksIHU4IGZ1bmNfbm8sIGludCBpbmRleCwKICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRk ciwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBzaXplKQogK3sKICsJ CV9fZHdfcGNpZV9wcm9nX291dGJvdW5kX2F0dShwY2ksIDAsIGluZGV4LCB0eXBlLCBjcHVfYWRk ciwgcGNpX2FkZHIsIHNpemUpOwkKICt9CgpJbiBvdGhlciB3b3JkcyBkd19wY2llX3Byb2dfb3V0 Ym91bmRfYXR1IGlzIHVwZGF0ZWQgKGFuZCByZW5hbWVkKSB0byBhbHdheXMKdGFrZSBhIGZ1bmNf bm8gYW5kIGZvciBob3N0IGNvbnRyb2xsZXJzIHRoaXMgaXMgYWx3YXlzIHNldCB0byB6ZXJvLiBP ciB5b3UKY291bGQgZm9sbG93IHRoZSBhcHByb2FjaCB0YWtlbiBpbiB0aGUgY2FkZW5jZSBkcml2 ZXJzIGZvciB0aGVpciBpbXBsZW1lbnRhdGlvbgpvZiBjZG5zX3BjaWVfc2V0X291dGJvdW5kX3Jl Z2lvbiAtIHRoaXMgYWx3YXlzIHRha2VzIGEgZnVuY19ubyBhbmQgaXMgdXNlZApieSBob3N0IGNv bnRyb2xsZXIgYW5kIGVuZHBvaW50IGRyaXZlcnMgKGV4Y2VwdCB0aGV5IGRvbid0IGhhdmUgdGhl IGhlbHBlcgp3cmFwcGVyIGZ1bmN0aW9ucyBhYm92ZSB0aHVzIGV4cG9zaW5nIGZuPTAgdG8gaG9z dCBjb250cm9sbGVycykuCgo+ID4gCj4gPiA+ID4KPiA+ID4gPiBUaGFua3MsCj4gPiA+ID4KPiA+ ID4gPiBBbmRyZXcgTXVycmF5Cj4gPiA+ID4KPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJp KHBjaSwgUENJRV9BVFVfQ1IyLCBQQ0lFX0FUVV9FTkFCTEUpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwkvKgo+ID4gPiA+ID4gKwkgKiBNYWtlIHN1cmUgQVRVIGVuYWJsZSB0YWtlcyBlZmZlY3Qg YmVmb3JlIGFueSBzdWJzZXF1ZW50IGNvbmZpZwo+ID4gPiA+ID4gKwkgKiBhbmQgSS9PIGFjY2Vz c2VzLgo+ID4gPiA+ID4gKwkgKi8KPiA+ID4gPiA+ICsJZm9yIChyZXRyaWVzID0gMDsgcmV0cmll cyA8IExJTktfV0FJVF9NQVhfSUFUVV9SRVRSSUVTOyByZXRyaWVzKyspCj4gPiB7Cj4gPiA+ID4g PiArCQl2YWwgPSBkd19wY2llX3JlYWRsX2RiaShwY2ksIFBDSUVfQVRVX0NSMik7Cj4gPiA+ID4g PiArCQlpZiAodmFsICYgUENJRV9BVFVfRU5BQkxFKQo+ID4gPiA+ID4gKwkJCXJldHVybjsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsJCW1kZWxheShMSU5LX1dBSVRfSUFUVSk7Cj4gPiA+ID4gPiAr CX0KPiA+ID4gPiA+ICsJZGV2X2VycihwY2ktPmRldiwgIk91dGJvdW5kIGlBVFUgaXMgbm90IGJl aW5nIGVuYWJsZWRcbiIpOyB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgdm9pZCBkd19wY2llX3By b2dfb3V0Ym91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIGludCBpbmRleCwgaW50Cj4gPiB0 eXBlLAo+ID4gPiA+ID4gIAkJCSAgICAgICB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwgdTMy IHNpemUpICB7IEBACj4gPiAtMjUyLDgKPiA+ID4gPiArMzM0LDgKPiA+ID4gPiA+IEBAIHN0YXRp YyB2b2lkIGR3X3BjaWVfd3JpdGVsX2liX3Vucm9sbChzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1MzIK PiA+ID4gPiA+IGluZGV4LAo+ID4gPiA+IHUzMiByZWcsCj4gPiA+ID4gPiAgCWR3X3BjaWVfd3Jp dGVsX2F0dShwY2ksIG9mZnNldCArIHJlZywgdmFsKTsgIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAt c3RhdGljIGludCBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2ll ICpwY2ksIGludAo+ID4gaW5kZXgsCj4gPiA+ID4gPiAtCQkJCQkgICBpbnQgYmFyLCB1NjQgY3B1 X2FkZHIsCj4gPiA+ID4gPiArc3RhdGljIGludCBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHVfdW5y b2xsKHN0cnVjdCBkd19wY2llICpwY2ksCj4gPiA+ID4gPiArdTgKPiA+ID4gPiBmdW5jX25vLAo+ ID4gPiA+ID4gKwkJCQkJICAgaW50IGluZGV4LCBpbnQgYmFyLCB1NjQgY3B1X2FkZHIsCj4gPiA+ ID4gPiAgCQkJCQkgICBlbnVtIGR3X3BjaWVfYXNfdHlwZSBhc190eXBlKSAgewo+ID4gPiA+ID4g IAlpbnQgdHlwZTsKPiA+ID4gPiA+IEBAIC0yNzUsOCArMzU3LDEwIEBAIHN0YXRpYyBpbnQKPiA+ ID4gPiA+IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dV91bnJvbGwoc3RydWN0Cj4gPiA+ID4gZHdf cGNpZSAqcGNpLCBpbnQgaW5kZXgsCj4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4g PiA+ICAJfQo+ID4gPiA+ID4KPiA+ID4gPiA+IC0JZHdfcGNpZV93cml0ZWxfaWJfdW5yb2xsKHBj aSwgaW5kZXgsCj4gPiBQQ0lFX0FUVV9VTlJfUkVHSU9OX0NUUkwxLAo+ID4gPiA+IHR5cGUpOwo+ ID4gPiA+ID4gKwlkd19wY2llX3dyaXRlbF9pYl91bnJvbGwocGNpLCBpbmRleCwKPiA+IFBDSUVf QVRVX1VOUl9SRUdJT05fQ1RSTDEsCj4gPiA+ID4gdHlwZSB8Cj4gPiA+ID4gPiArCQkJCSBQQ0lF X0FUVV9GVU5DX05VTShmdW5jX25vKSk7Cj4gPiA+ID4gPiAgCWR3X3BjaWVfd3JpdGVsX2liX3Vu cm9sbChwY2ksIGluZGV4LAo+ID4gUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMiwKPiA+ID4gPiA+ ICsJCQkJIFBDSUVfQVRVX0ZVTkNfTlVNX01BVENIX0VOIHwKPiA+ID4gPiA+ICAJCQkJIFBDSUVf QVRVX0VOQUJMRSB8Cj4gPiA+ID4gPiAgCQkJCSBQQ0lFX0FUVV9CQVJfTU9ERV9FTkFCTEUgfCAo YmFyIDw8IDgpKTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiBAQCAtMjk3LDE0ICszODEsMTUgQEAgc3Rh dGljIGludAo+ID4gPiA+IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dV91bnJvbGwoc3RydWN0IGR3 X3BjaWUgKnBjaSwgaW50IGluZGV4LAo+ID4gPiA+ID4gIAlyZXR1cm4gLUVCVVNZOwo+ID4gPiA+ ID4gIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAtaW50IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dShz dHJ1Y3QgZHdfcGNpZSAqcGNpLCBpbnQgaW5kZXgsIGludCBiYXIsCj4gPiA+ID4gPiAtCQkJICAg ICB1NjQgY3B1X2FkZHIsIGVudW0gZHdfcGNpZV9hc190eXBlIGFzX3R5cGUpCj4gPiA+ID4gPiAr aW50IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1OCBmdW5j X25vLCBpbnQKPiA+IGluZGV4LAo+ID4gPiA+ID4gKwkJCSAgICAgaW50IGJhciwgdTY0IGNwdV9h ZGRyLAo+ID4gPiA+ID4gKwkJCSAgICAgZW51bSBkd19wY2llX2FzX3R5cGUgYXNfdHlwZSkKPiA+ ID4gPiA+ICB7Cj4gPiA+ID4gPiAgCWludCB0eXBlOwo+ID4gPiA+ID4gIAl1MzIgcmV0cmllcywg dmFsOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAJaWYgKHBjaS0+aWF0dV91bnJvbGxfZW5hYmxlZCkK PiA+ID4gPiA+IC0JCXJldHVybiBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHVfdW5yb2xsKHBjaSwg aW5kZXgsIGJhciwKPiA+ID4gPiA+ICsJCXJldHVybiBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHVf dW5yb2xsKHBjaSwgZnVuY19ubywgaW5kZXgsCj4gPiA+ID4gPiArYmFyLAo+ID4gPiA+ID4gIAkJ CQkJCSAgICAgICBjcHVfYWRkciwgYXNfdHlwZSk7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIAlkd19w Y2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9WSUVXUE9SVCwKPiA+ID4gPiBQQ0lFX0FUVV9S RUdJT05fSU5CT1VORCB8Cj4gPiA+ID4gPiBAQCAtMzIzLDkgKzQwOCwxMSBAQCBpbnQgZHdfcGNp ZV9wcm9nX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llCj4gPiA+ID4gKnBjaSwgaW50IGluZGV4 LCBpbnQgYmFyLAo+ID4gPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiAgCX0KPiA+ ID4gPiA+Cj4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMSwg dHlwZSk7Cj4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMiwg UENJRV9BVFVfRU5BQkxFCj4gPiA+ID4gPiAtCQkJICAgfCBQQ0lFX0FUVV9CQVJfTU9ERV9FTkFC TEUgfCAoYmFyIDw8IDgpKTsKPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJ RV9BVFVfQ1IxLCB0eXBlIHwKPiA+ID4gPiA+ICsJCQkgICBQQ0lFX0FUVV9GVU5DX05VTShmdW5j X25vKSk7Cj4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMiwg UENJRV9BVFVfRU5BQkxFIHwKPiA+ID4gPiA+ICsJCQkgICBQQ0lFX0FUVV9GVU5DX05VTV9NQVRD SF9FTiB8Cj4gPiA+ID4gPiArCQkJICAgUENJRV9BVFVfQkFSX01PREVfRU5BQkxFIHwgKGJhciA8 PCA4KSk7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIAkvKgo+ID4gPiA+ID4gIAkgKiBNYWtlIHN1cmUg QVRVIGVuYWJsZSB0YWtlcyBlZmZlY3QgYmVmb3JlIGFueSBzdWJzZXF1ZW50Cj4gPiA+ID4gPiBj b25maWcgZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdu d2FyZS5oCj4gPiA+ID4gPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdu d2FyZS5oCj4gPiA+ID4gPiBpbmRleCBmZmVkMDg0Li4yYjI5MWU4IDEwMDY0NAo+ID4gPiA+ID4g LS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmgKPiA+ID4g PiA+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oCj4g PiA+ID4gPiBAQCAtNzEsOSArNzEsMTEgQEAKPiA+ID4gPiA+ICAjZGVmaW5lIFBDSUVfQVRVX1RZ UEVfSU8JCTB4Mgo+ID4gPiA+ID4gICNkZWZpbmUgUENJRV9BVFVfVFlQRV9DRkcwCQkweDQKPiA+ ID4gPiA+ICAjZGVmaW5lIFBDSUVfQVRVX1RZUEVfQ0ZHMQkJMHg1Cj4gPiA+ID4gPiArI2RlZmlu ZSBQQ0lFX0FUVV9GVU5DX05VTShwZikgICAgICAgICAgIChwZiA8PCAyMCkKPiA+ID4gPiA+ICAj ZGVmaW5lIFBDSUVfQVRVX0NSMgkJCTB4OTA4Cj4gPiA+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9F TkFCTEUJCQlCSVQoMzEpCj4gPiA+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9CQVJfTU9ERV9FTkFC TEUJQklUKDMwKQo+ID4gPiA+ID4gKyNkZWZpbmUgUENJRV9BVFVfRlVOQ19OVU1fTUFUQ0hfRU4g ICAgICBCSVQoMTkpCj4gPiA+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9MT1dFUl9CQVNFCQkweDkw Qwo+ID4gPiA+ID4gICNkZWZpbmUgUENJRV9BVFVfVVBQRVJfQkFTRQkJMHg5MTAKPiA+ID4gPiA+ ICAjZGVmaW5lIFBDSUVfQVRVX0xJTUlUCQkJMHg5MTQKPiA+ID4gPiA+IEBAIC0yNjUsOCArMjY3 LDEyIEBAIGludCBkd19wY2llX3dhaXRfZm9yX2xpbmsoc3RydWN0IGR3X3BjaWUKPiA+ID4gPiA+ ICpwY2kpOyB2b2lkIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHUoc3RydWN0IGR3X3BjaWUgKnBj aSwgaW50IGluZGV4LAo+ID4gPiA+ID4gIAkJCSAgICAgICBpbnQgdHlwZSwgdTY0IGNwdV9hZGRy LCB1NjQgcGNpX2FkZHIsCj4gPiA+ID4gPiAgCQkJICAgICAgIHUzMiBzaXplKTsKPiA+ID4gPiA+ IC1pbnQgZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIGludCBp bmRleCwgaW50IGJhciwKPiA+ID4gPiA+IC0JCQkgICAgIHU2NCBjcHVfYWRkciwgZW51bSBkd19w Y2llX2FzX3R5cGUgYXNfdHlwZSk7Cj4gPiA+ID4gPiArdm9pZCBkd19wY2llX3Byb2dfZXBfb3V0 Ym91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIHU4Cj4gPiA+ID4gPiArZnVuY19ubywgaW50 Cj4gPiA+ID4gaW5kZXgsCj4gPiA+ID4gPiArCQkJCSAgaW50IHR5cGUsIHU2NCBjcHVfYWRkciwg dTY0IHBjaV9hZGRyLAo+ID4gPiA+ID4gKwkJCQkgIHUzMiBzaXplKTsKPiA+ID4gPiA+ICtpbnQg ZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIHU4IGZ1bmNfbm8s IGludAo+ID4gaW5kZXgsCj4gPiA+ID4gPiArCQkJICAgICBpbnQgYmFyLCB1NjQgY3B1X2FkZHIs Cj4gPiA+ID4gPiArCQkJICAgICBlbnVtIGR3X3BjaWVfYXNfdHlwZSBhc190eXBlKTsKPiA+ID4g PiA+ICB2b2lkIGR3X3BjaWVfZGlzYWJsZV9hdHUoc3RydWN0IGR3X3BjaWUgKnBjaSwgaW50IGlu ZGV4LAo+ID4gPiA+ID4gIAkJCSBlbnVtIGR3X3BjaWVfcmVnaW9uX3R5cGUgdHlwZSk7ICB2b2lk Cj4gPiBkd19wY2llX3NldHVwKHN0cnVjdAo+ID4gPiA+ID4gZHdfcGNpZSAqcGNpKTsgZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLWVwYy5oCj4gPiA+ID4gPiBiL2luY2x1ZGUvbGludXgv cGNpLWVwYy5oIGluZGV4IGY2NDFiYWQuLmZjMmZlZWUgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9p bmNsdWRlL2xpbnV4L3BjaS1lcGMuaAo+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9wY2kt ZXBjLmgKPiA+ID4gPiA+IEBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCBwY2lfZXBjIHsKPiA+ID4g PiA+ICAJY29uc3Qgc3RydWN0IHBjaV9lcGNfb3BzCSpvcHM7Cj4gPiA+ID4gPiAgCXN0cnVjdCBw Y2lfZXBjX21lbQkJKm1lbTsKPiA+ID4gPiA+ICAJdTgJCQkJbWF4X2Z1bmN0aW9uczsKPiA+ID4g PiA+ICsJdTMyCQkJCXBmX29mZnNldDsKPiA+IAo+ID4gQWxzbyBwZl9vZmZzZXQgaXMgYW4gaW1w bGVtZW50YXRpb24gZGV0YWlsIG5lZWRlZCBvbmx5IGJ5IHRoZSBkcml2ZXIgdG8KPiA+IGNhbGN1 bGF0ZSB3aGVyZSB0aGUgUEYgaXMgLSBpdCBkb2Vzbid0IHNlZW0gcmlnaHQgdGhhdCB3ZSBzaGFy ZSB0aGlzIHdpdGggdGhlIEVQCj4gPiBjb250cm9sbGVyIGZyYW1ld29yayAod2hlcmVhcyBtYXhf ZnVuY3Rpb25zIGlzIHVzZWQgYXMgYSBib3VuZHMgY2hlY2sgZm9yCj4gPiBmdW5jX25vIGluIHRo ZSBmcmFtZXdvcmsgY2FsbHMpLgo+ID4gCj4gPiBJJ2Qgc3VnZ2VzdCB0aGF0IHBmX29mZnNldCBp cyBtb3ZlZCB0byBhIGR3YyBzdHJ1Y3R1cmUsIHBlcmhhcHMgZHdfcGNpZV9lcD8KPiBJIGFkZCB0 aGUgdmFyaWFibGUgdG8gdGhpcyBzdHJ1Y3QgaXMgY29uc2lkZXIgdGhhdCBhbGwgUEYgaXMgYmVs b25nIHRvIGEgUENJZSBjb250cm9sbGVyLAo+IGFuZCB0aGUgcGNpX2VwYyBpbmRpY2F0ZSBhIFBD SWUgY29udHJvbGxlciwgc28gSSBhZGQgdGhpcyB2YXJpYWJsZSB0byB0aGlzIHN0cnVjdCwgd2hh dAo+IGRvIHlvdSB0aGluayBhYm91dCB0aGlzPyBJIGFtIG5vdCBzdXJlIHdoZXRoZXIgSSBzaG91 bGQgYWRkIHRoaXMgdmFyaWFibGUgdG8gZHdfcGNpZV9lcC4KClRoZSBFUEMgZnJhbWV3b3JrIHdv bid0IHVzZSB0aGUgcGZfb2Zmc2V0IGFuZCBkb2Vzbid0IG5lZWQgaXQuIEl0IGFic3RyYWN0cwp0 aGUgY29tcGxleGl0eSBvZiB3cml0aW5nIHRvIHRoZSBjb25maWcgYWRkcmVzcyBzcGFjZSAoYW5k IHNpbWlsYXIpIHRocm91Z2gKdGhlIHBjaV9lcGNfb3BzLiBJJ2Qgc3VnZ2VzdCB0aGF0IHRoZSBF UEMgZnJhbWV3b3JrIChhbmQgcGNpX2VwYyBzdHJ1Y3QpIG9ubHkKbmVlZHMgdG8gY29udGFpbiB3 aGF0ICppdCogbmVlZHMuIEVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCBub3QgYWxsIGVwIGRyaXZlcnMK aGF2ZSBhIHBmX29mZnNldCBvciBzaW1pbGFyLgoKSSB1bmRlcnN0YW5kIHRoZSBsb2dpYyB0aGF0 IHBjaV9lcGMgcmVwcmVzZW50cyBhIEVQIGNvbnRyb2xsZXIsIGJ1dCBJIHRoaW5rCnlvdSBzaG91 bGQgY29uc2lkZXIgdGhhdCBpdCBhY3R1YWxseSByZXByZXNlbnRzIGEgKmdlbmVyaWMqIEVQIGNv bnRyb2xsZXIgaW4KdGhlIGNvbnRleHQgb2YgYSBmcmFtZXdvcmsgd2hpY2ggc29sZWx5IHNlcnZl cyB0aGUgcHVycG9zZSBvZiBjb25uZWN0aW5nCmNvbnRyb2xsZXJzIHdpdGggZnVuY3Rpb25zLiBX aGVyZWFzIHRoZSBkd19wY2llX2VwIHJlcHJlc2VudHMgYSBzcGVjaWZpYyB0eXBlCm9mIGNvbnRy b2xsZXIgKERXKSAtIGFzIHRoZSBwZl9vZmZzZXQgaXMgKHNvIGZhcikgcmVsYXRpbmcgdG8gb25s eSBEVwpjb250cm9sbGVycyAoYW5kIGFzIGNvbmZpcm1lZCBieSB0aGUgRFQgbWFwcGluZykgdGhl biBpdCBtYWtlcyBzZW5zZSB0byBub3QKbW92ZSBwZl9vZmZzZXQgZnJvbSB0aGUgc3BlY2lhbGlz ZWQgc3BlY2lmaWMgY29udHJvbGxlciB0byB0aGUgZ2VuZXJpYwpjb250cm9sbGVyLiAoT3IgYXQg bGVhc3QgdGhpcyBpcyBob3cgSSByYXRpb25hbGlzZSBpdCwgdGhvdWdoIHRoZSBFUEMKZnJhbWV3 b3JrIGlzIHNvbWV0aGluZyBxdWl0ZSB1bmZhbWlsaWFyIHRvIG1lKS4KClRoYW5rcywKCkFuZHJl dyBNdXJyYXkKCj4gPiAKPiA+IFRoYW5rcywKPiA+IAo+ID4gQW5kcmV3IE11cnJheQo+ID4gCj4g PiA+ID4gPiAgCXN0cnVjdCBjb25maWdfZ3JvdXAJCSpncm91cDsKPiA+ID4gPiA+ICAJLyogc3Bp bmxvY2sgdG8gcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzIG9mIEVQIGNvbnRyb2xs ZXIgKi8KPiA+ID4gPiA+ICAJc3BpbmxvY2tfdAkJCWxvY2s7Cj4gPiA+ID4gPiAtLQo+ID4gPiA+ ID4gMi45LjUKPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPiA+IGxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0Cj4gPiA+ID4gPiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKPiA+ID4gPiA+IGh0dHA6Ly9saXN0cwo+ID4gPiA+ID4gLmluZnJhZGVhZC5vcmclMkZtYWls bWFuJTJGbGlzdGluZm8lMkZsaW51eC1hcm0ta2VybmVsJmFtcDtkYXRhPTAKPiA+IDIKPiA+ID4g PiA+ICUKPiA+ID4gPiA3QzAKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+IDElN0N4aWFvd2VpLmJhbyU0 MG54cC5jb20lN0MwZTM5MTY4ZjZmMTQ0ZGI2ODQwMzA4ZDcyMTc0MjA0MCU3Cj4gPiA+ID4gQzY4 NmVhMWQKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+IDNiYzJiNGM2ZmE5MmNkOTljNWMzMDE2MzUlN0Mw JTdDMSU3QzYzNzAxNDY1NDk5ODUyNDQ1MiZhbXA7c2QKPiA+ID4gPiBhdGE9YlA3ZWgKPiA+ID4g PiA+IGNqbEdYQ01WRkUyYjRmMTJRNmZHVjdsUSUyRjVpOXFJaTlGb1BsYkklM0QmYW1wO3Jlc2Vy dmVkPTAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK