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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED 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 79883C433E0 for ; Mon, 6 Jul 2020 10:12:16 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 2AEF12075B for ; Mon, 6 Jul 2020 10:12:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="FHGPkepO"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="DGnhhDU5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2AEF12075B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Mime-Version:References:In-Reply-To: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=soIZqEPR/mi+o8P/teqJAz2RZn3ZKHMdWL7knL3ENXk=; b=FHGPkepOqZOWY9CJNySMXCBhR pq41z8a0GR8fNfa+qZH1kGDez1WPjKJLHVQRkeRvBTQRl/t5b1bcFcupMUZk0XM5NZxbp4i/hccJo nY0FzKxdvz695GyXunwPqe6FGDzb7TCuqZ0NVXmRpLr3cZ4s+8dk8xvuA3ZYn3UIMaNIZnjaFCFqi t5bQIfJM1fu/3BJ3snkhrYXFkrreXJs50LufJINkwa9MSd+Q/15rAeFgJff111DiDB8pJ7bl7eNBP BvZTfYTWmeNY8G2r4TaMmpyVDvrNF6gYPRWckN1HKAvY1Bp89cVROgAqLSQuSvr9cUN971vmJQYQK +BDQ6T2zA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jsO6Y-0001ix-VG; Mon, 06 Jul 2020 10:12:07 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jsO6V-0001iE-Qn for linux-riscv@lists.infradead.org; Mon, 06 Jul 2020 10:12:05 +0000 Received: from devnote2 (NE2965lan1.rev.em-net.ne.jp [210.141.244.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BC9E320739; Mon, 6 Jul 2020 10:11:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594030322; bh=BvUt24CnRR9w1cul8LL9Pe0e9cjok831rkCZizq1BjQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=DGnhhDU5HjArrf9pzHB1m7K0a1/IpvRXLS61BYjBbjMJiFucwi3fVjnnLq+AX8cbQ YAotPDGdY32BDfwLebExT420ycNzJMIIEe53ZIIMZTQ/sd1EdlmasxM4fqrteJ2OxR iKkRu3jNO/kKandrEpCaST3065T89ah9ebyAYEbo= Date: Mon, 6 Jul 2020 19:11:56 +0900 From: Masami Hiramatsu To: guoren@kernel.org Subject: Re: [PATCH V1 4/5] riscv: Add kprobes supported Message-Id: <20200706191156.ef63ba62d5d3e33f665997b7@kernel.org> In-Reply-To: <1593833659-26224-5-git-send-email-guoren@kernel.org> References: <1593833659-26224-1-git-send-email-guoren@kernel.org> <1593833659-26224-5-git-send-email-guoren@kernel.org> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) Mime-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200706_061204_043818_C5ADABEE X-CRM114-Status: GOOD ( 35.06 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: me@packi.ch, Guo Ren , anup@brainfault.org, palmerdabbelt@google.com, linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org, atish.patra@wdc.com, Masami Hiramatsu , zong.li@sifive.com, paul.walmsley@sifive.com, greentime.hu@sifive.com, linux-riscv@lists.infradead.org, bjorn.topel@gmail.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkgR3VvLAoKT24gU2F0LCAgNCBKdWwgMjAyMCAwMzozNDoxOCArMDAwMApndW9yZW5Aa2VybmVs Lm9yZyB3cm90ZToKCj4gRnJvbTogR3VvIFJlbiA8Z3VvcmVuQGxpbnV4LmFsaWJhYmEuY29tPgo+ IAo+IFRoaXMgcGF0Y2ggZW5hYmxlcyAia3Byb2JlICYga3JldHByb2JlIiB0byB3b3JrIHdpdGgg ZnRyYWNlCj4gaW50ZXJmYWNlLiBJdCB1dGlsaXplZCBzb2Z0d2FyZSBicmVha3BvaW50IGFzIHNp bmdsZS1zdGVwCj4gbWVjaGFuaXNtLgo+IAo+IFNvbWUgaW5zdHJ1Y3Rpb25zIHdoaWNoIGNhbid0 IGJlIHNpbmdsZS1zdGVwIGV4ZWN1dGVkIG11c3QgYmUKPiBzaW11bGF0ZWQgaW4ga2VybmVsIGV4 ZWN1dGlvbiBzbG90LCBzdWNoIGFzOiBicmFuY2gsIGphbCwgYXVpcGMsCj4gbGEgLi4uCj4gCj4g U29tZSBpbnN0cnVjdGlvbnMgc2hvdWxkIGJlIHJlamVjdGVkIGZvciBwcm9iaW5nIGFuZCB3ZSB1 c2UgYQo+IGJsYWNrbGlzdCB0byBmaWx0ZXIsIHN1Y2ggYXM6IGVjYWxsLCBlYnJlYWssIC4uLgo+ IAo+IFdlIHVzZSBlYnJlYWsgJiBjLmVicmVhayB0byByZXBsYWNlIG9yaWdpbiBpbnN0cnVjdGlv biBhbmQgdGhlCj4ga3Byb2JlIGhhbmRsZXIgcHJlcGFyZXMgYW4gZXhlY3V0YWJsZSBtZW1vcnkg c2xvdCBmb3Igb3V0LW9mLWxpbmUKPiBleGVjdXRpb24gd2l0aCBhIGNvcHkgb2YgdGhlIG9yaWdp bmFsIGluc3RydWN0aW9uIGJlaW5nIHByb2JlZC4KPiBJbiBleGVjdXRpb24gc2xvdCB3ZSBhZGQg ZWJyZWFrIGJlaGluZCBvcmlnaW5hbCBpbnN0cnVjdGlvbiB0bwo+IHNpbXVsYXRlIGEgc2luZ2xl LXNldHAgbWVjaGFuaXNtLgo+IAo+IFRoZSBwYXRjaCBpcyBiYXNlZCBvbiBwYWNraSdzIHdvcmsg WzFdIGFuZCBjc2t5J3Mgd29yayBbMl0uCj4gIC0gVGhlIGtwcm9iZXNfdHJhbXBvbGluZS5TIGlz IGFsbCBmcm9tIHBhY2tpJ3MgcGF0Y2gKPiAgLSBUaGUgc2luZ2xlLXN0ZXAgbWVjaGFuaXNtIGlz IG5ldyBkZXNpZ25lZCBmb3IgcmlzY3Ygd2l0aG91dCBodwo+ICAgIHNpbmdsZS1zdGVwIHRyYXAK PiAgLSBUaGUgc2ltdWxhdGlvbiBjb2RlcyBhcmUgZnJvbSBjc2t5Cj4gIC0gRnJhbmtseSwgYWxs IGNvZGVzIHJlZmVyIHRvIG90aGVyIGFyY2hzJyBpbXBsZW1lbnRhdGlvbgo+IAo+ICBbMV0gaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcmlzY3YvMjAxODExMTMxOTU4MDQuMjI4MjUtMS1t ZUBwYWNraS5jaC8KPiAgWzJdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWNza3kvMjAy MDA0MDMwNDQxNTAuMjA1NjItOS1ndW9yZW5Aa2VybmVsLm9yZy8KPiAKClRoaXMgbG9va3MgZ29v ZCB0byBtZS4gVGhhbmtzIGZvciB1cGRhdGluZyAhCgpBY2tlZC1ieTogTWFzYW1pIEhpcmFtYXRz dSA8bWhpcmFtYXRAa2VybmVsLm9yZz4KClRoYW5rIHlvdSwKCgo+IFNpZ25lZC1vZmYtYnk6IEd1 byBSZW4gPGd1b3JlbkBsaW51eC5hbGliYWJhLmNvbT4KPiBDby1EZXZlbG9wZWQtYnk6IFBhdHJp Y2sgU3TDpGhsaW4gPG1lQHBhY2tpLmNoPgo+IENjOiBQYXRyaWNrIFN0w6RobGluIDxtZUBwYWNr aS5jaD4KPiBDYzogTWFzYW1pIEhpcmFtYXRzdSA8bWhpcmFtYXRAa2VybmVsLm9yZz4KPiBDYzog UGFsbWVyIERhYmJlbHQgPHBhbG1lcmRhYmJlbHRAZ29vZ2xlLmNvbT4KPiBDYzogQmrDtnJuIFTD tnBlbCA8Ympvcm4udG9wZWxAZ21haWwuY29tPgo+IC0tLQo+ICBhcmNoL3Jpc2N2L0tjb25maWcg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL2twcm9iZXMuaCAgICAgICAgICAgICAgfCAgNDAgKysrCj4gIGFyY2gvcmlzY3YvaW5jbHVk ZS9hc20vcHJvYmVzLmggICAgICAgICAgICAgICB8ICAyNCArKwo+ICBhcmNoL3Jpc2N2L2tlcm5l bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBhcmNoL3Jpc2N2L2tlcm5l bC9wcm9iZXMvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDQgKwo+ICBhcmNoL3Jpc2N2L2tlcm5l bC9wcm9iZXMvZGVjb2RlLWluc24uYyAgICAgICAgfCAgNDggKysrCj4gIGFyY2gvcmlzY3Yva2Vy bmVsL3Byb2Jlcy9kZWNvZGUtaW5zbi5oICAgICAgICB8ICAxOCArCj4gIGFyY2gvcmlzY3Yva2Vy bmVsL3Byb2Jlcy9rcHJvYmVzLmMgICAgICAgICAgICB8IDQ3MSArKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jlc190cmFtcG9saW5lLlMg fCAgOTMgKysrKysKPiAgYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWluc24uYyAg ICAgIHwgIDg1ICsrKysrCj4gIGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9zaW11bGF0ZS1pbnNu LmggICAgICB8ICA0NyArKysKPiAgYXJjaC9yaXNjdi9rZXJuZWwvdHJhcHMuYyAgICAgICAgICAg ICAgICAgICAgIHwgICA5ICsKPiAgYXJjaC9yaXNjdi9tbS9mYXVsdC5jICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0ICsKPiAgMTMgZmlsZXMgY2hhbmdlZCwgODQ2IGluc2VydGlvbnMoKykK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvYmVzLmgKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2RlY29kZS1pbnNuLmMK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9kZWNvZGUtaW5z bi5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jl cy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jl c190cmFtcG9saW5lLlMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVsL3By b2Jlcy9zaW11bGF0ZS1pbnNuLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2Vy bmVsL3Byb2Jlcy9zaW11bGF0ZS1pbnNuLmgKPiAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9L Y29uZmlnIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4gaW5kZXggNThkNmY2Ni4uYTI5NWYwYiAxMDA2 NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L0tjb25maWcKPiArKysgYi9hcmNoL3Jpc2N2L0tjb25maWcK PiBAQCAtNTcsNiArNTcsOCBAQCBjb25maWcgUklTQ1YKPiAgCXNlbGVjdCBIQVZFX0VCUEZfSklU IGlmIE1NVQo+ICAJc2VsZWN0IEhBVkVfRlVURVhfQ01QWENIRyBpZiBGVVRFWAo+ICAJc2VsZWN0 IEhBVkVfR0VORVJJQ19WRFNPIGlmIE1NVSAmJiA2NEJJVAo+ICsJc2VsZWN0IEhBVkVfS1BST0JF Uwo+ICsJc2VsZWN0IEhBVkVfS1JFVFBST0JFUwo+ICAJc2VsZWN0IEhBVkVfUENJCj4gIAlzZWxl Y3QgSEFWRV9QRVJGX0VWRU5UUwo+ICAJc2VsZWN0IEhBVkVfUEVSRl9SRUdTCj4gZGlmZiAtLWdp dCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3Byb2Jlcy5oIGIvYXJjaC9yaXNjdi9pbmNsdWRl L2FzbS9rcHJvYmVzLmgKPiBpbmRleCA1NmE5OGVhMy4uNDY0N2QzOCAxMDA2NDQKPiAtLS0gYS9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAo+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20va3Byb2Jlcy5oCj4gQEAgLTExLDQgKzExLDQ0IEBACj4gIAo+ICAjaW5jbHVkZSA8YXNt LWdlbmVyaWMva3Byb2Jlcy5oPgo+ICAKPiArI2lmZGVmIENPTkZJR19LUFJPQkVTCj4gKyNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9wZXJjcHUuaD4KPiArCj4gKyNkZWZpbmUgX19BUkNIX1dBTlRfS1BST0JFU19J TlNOX1NMT1QKPiArI2RlZmluZSBNQVhfSU5TTl9TSVpFCQkJMgo+ICsKPiArI2RlZmluZSBmbHVz aF9pbnNuX3Nsb3QocCkJCWRvIHsgfSB3aGlsZSAoMCkKPiArI2RlZmluZSBrcmV0cHJvYmVfYmxh Y2tsaXN0X3NpemUJMAo+ICsKPiArI2luY2x1ZGUgPGFzbS9wcm9iZXMuaD4KPiArCj4gK3N0cnVj dCBwcmV2X2twcm9iZSB7Cj4gKwlzdHJ1Y3Qga3Byb2JlICprcDsKPiArCXVuc2lnbmVkIGludCBz dGF0dXM7Cj4gK307Cj4gKwo+ICsvKiBTaW5nbGUgc3RlcCBjb250ZXh0IGZvciBrcHJvYmUgKi8K PiArc3RydWN0IGtwcm9iZV9zdGVwX2N0eCB7Cj4gKwl1bnNpZ25lZCBsb25nIHNzX3BlbmRpbmc7 Cj4gKwl1bnNpZ25lZCBsb25nIG1hdGNoX2FkZHI7Cj4gK307Cj4gKwo+ICsvKiBwZXItY3B1IGtw cm9iZSBjb250cm9sIGJsb2NrICovCj4gK3N0cnVjdCBrcHJvYmVfY3RsYmxrIHsKPiArCXVuc2ln bmVkIGludCBrcHJvYmVfc3RhdHVzOwo+ICsJdW5zaWduZWQgbG9uZyBzYXZlZF9zdGF0dXM7Cj4g KwlzdHJ1Y3QgcHJldl9rcHJvYmUgcHJldl9rcHJvYmU7Cj4gKwlzdHJ1Y3Qga3Byb2JlX3N0ZXBf Y3R4IHNzX2N0eDsKPiArfTsKPiArCj4gK3ZvaWQgYXJjaF9yZW1vdmVfa3Byb2JlKHN0cnVjdCBr cHJvYmUgKnApOwo+ICtpbnQga3Byb2JlX2ZhdWx0X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJl Z3MsIHVuc2lnbmVkIGludCB0cmFwbnIpOwo+ICtib29sIGtwcm9iZV9icmVha3BvaW50X2hhbmRs ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwo+ICtib29sIGtwcm9iZV9zaW5nbGVfc3RlcF9oYW5k bGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKPiArdm9pZCBrcmV0cHJvYmVfdHJhbXBvbGluZSh2 b2lkKTsKPiArdm9pZCBfX2twcm9iZXMgKnRyYW1wb2xpbmVfcHJvYmVfaGFuZGxlcihzdHJ1Y3Qg cHRfcmVncyAqcmVncyk7Cj4gKwo+ICsjZW5kaWYgLyogQ09ORklHX0tQUk9CRVMgKi8KPiAgI2Vu ZGlmIC8qIF9BU01fUklTQ1ZfS1BST0JFU19IICovCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv aW5jbHVkZS9hc20vcHJvYmVzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Jlcy5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uYTc4N2U2ZAo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Jlcy5oCj4gQEAgLTAsMCAr MSwyNCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ICsKPiAr I2lmbmRlZiBfQVNNX1JJU0NWX1BST0JFU19ICj4gKyNkZWZpbmUgX0FTTV9SSVNDVl9QUk9CRVNf SAo+ICsKPiArdHlwZWRlZiB1MzIgcHJvYmVfb3Bjb2RlX3Q7Cj4gK3R5cGVkZWYgYm9vbCAocHJv YmVzX2hhbmRsZXJfdCkgKHUzMiBvcGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IHB0 X3JlZ3MgKik7Cj4gKwo+ICsvKiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29weSBvZiBvcmlnaW5h bCBpbnN0cnVjdGlvbiAqLwo+ICtzdHJ1Y3QgYXJjaF9wcm9iZV9pbnNuIHsKPiArCXByb2JlX29w Y29kZV90ICppbnNuOwo+ICsJcHJvYmVzX2hhbmRsZXJfdCAqaGFuZGxlcjsKPiArCS8qIHJlc3Rv cmUgYWRkcmVzcyBhZnRlciBzaW11bGF0aW9uICovCj4gKwl1bnNpZ25lZCBsb25nIHJlc3RvcmU7 Cj4gK307Cj4gKwo+ICsjaWZkZWYgQ09ORklHX0tQUk9CRVMKPiArdHlwZWRlZiB1MzIga3Byb2Jl X29wY29kZV90Owo+ICtzdHJ1Y3QgYXJjaF9zcGVjaWZpY19pbnNuIHsKPiArCXN0cnVjdCBhcmNo X3Byb2JlX2luc24gYXBpOwo+ICt9Owo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfQVNNX1JJ U0NWX1BST0JFU19IICovCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxl IGIvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUKPiBpbmRleCBiMzU1Y2Y0Li5jM2ZmZjNlIDEw MDY0NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlCj4gKysrIGIvYXJjaC9yaXNj di9rZXJuZWwvTWFrZWZpbGUKPiBAQCAtMjksNiArMjksNyBAQCBvYmoteQkrPSByaXNjdl9rc3lt cy5vCj4gIG9iai15CSs9IHN0YWNrdHJhY2Uubwo+ICBvYmoteQkrPSBjYWNoZWluZm8ubwo+ICBv YmoteQkrPSBwYXRjaC5vCj4gK29iai15CSs9IHByb2Jlcy8KPiAgb2JqLSQoQ09ORklHX01NVSkg Kz0gdmRzby5vIHZkc28vCj4gIAo+ICBvYmotJChDT05GSUdfUklTQ1ZfTV9NT0RFKQkrPSBjbGlu dC5vIHRyYXBzX21pc2FsaWduZWQubwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9w cm9iZXMvTWFrZWZpbGUgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi44YTM5NTA3Cj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZQo+IEBAIC0wLDAgKzEs NCBAQAo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gK29iai0kKENPTkZJ R19LUFJPQkVTKQkJKz0ga3Byb2Jlcy5vIGRlY29kZS1pbnNuLm8gc2ltdWxhdGUtaW5zbi5vCj4g K29iai0kKENPTkZJR19LUFJPQkVTKQkJKz0ga3Byb2Jlc190cmFtcG9saW5lLm8KPiArQ0ZMQUdT X1JFTU9WRV9zaW11bGF0ZS1pbnNuLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSkKPiBkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2RlY29kZS1pbnNuLmMgYi9hcmNoL3Jpc2N2L2tl cm5lbC9wcm9iZXMvZGVjb2RlLWluc24uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAuLjA4NzZjMzAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9yaXNjdi9rZXJu ZWwvcHJvYmVzL2RlY29kZS1pbnNuLmMKPiBAQCAtMCwwICsxLDQ4IEBACj4gKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pgo+ICsjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rYWxsc3ltcy5oPgo+ICsjaW5jbHVkZSA8YXNtL3NlY3Rp b25zLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZGVjb2RlLWluc24uaCIKPiArI2luY2x1ZGUgInNpbXVs YXRlLWluc24uaCIKPiArCj4gKy8qIFJldHVybjoKPiArICogICBJTlNOX1JFSkVDVEVEICAgICBJ ZiBpbnN0cnVjdGlvbiBpcyBvbmUgbm90IGFsbG93ZWQgdG8ga3Byb2JlLAo+ICsgKiAgIElOU05f R09PRF9OT19TTE9UIElmIGluc3RydWN0aW9uIGlzIHN1cHBvcnRlZCBidXQgZG9lc24ndCB1c2Ug aXRzIHNsb3QuCj4gKyAqLwo+ICtlbnVtIHByb2JlX2luc24gX19rcHJvYmVzCj4gK3Jpc2N2X3By b2JlX2RlY29kZV9pbnNuKHByb2JlX29wY29kZV90ICphZGRyLCBzdHJ1Y3QgYXJjaF9wcm9iZV9p bnNuICphcGkpCj4gK3sKPiArCXByb2JlX29wY29kZV90IGluc24gPSBsZTMyX3RvX2NwdSgqYWRk cik7Cj4gKwo+ICsJLyoKPiArCSAqIFJlamVjdCBpbnN0cnVjdGlvbnMgbGlzdDoKPiArCSAqLwo+ ICsJUklTQ1ZfSU5TTl9SRUpFQ1RFRChzeXN0ZW0sCQlpbnNuKTsKPiArCVJJU0NWX0lOU05fUkVK RUNURUQoZmVuY2UsCQlpbnNuKTsKPiArCj4gKwkvKgo+ICsJICogU2ltdWxhdGUgaW5zdHJ1Y3Rp b25zIGxpc3Q6Cj4gKwkgKiBUT0RPOiB0aGUgUkVKRUNURUQgb25lcyBiZWxvdyBuZWVkIHRvIGJl IGltcGxlbWVudGVkCj4gKwkgKi8KPiArI2lmZGVmIENPTkZJR19SSVNDVl9JU0FfQwo+ICsJUklT Q1ZfSU5TTl9SRUpFQ1RFRChjX2osCQlpbnNuKTsKPiArCVJJU0NWX0lOU05fUkVKRUNURUQoY19q ciwJCWluc24pOwo+ICsJUklTQ1ZfSU5TTl9SRUpFQ1RFRChjX2phbCwJCWluc24pOwo+ICsJUklT Q1ZfSU5TTl9SRUpFQ1RFRChjX2phbHIsCQlpbnNuKTsKPiArCVJJU0NWX0lOU05fUkVKRUNURUQo Y19iZXF6LAkJaW5zbik7Cj4gKwlSSVNDVl9JTlNOX1JFSkVDVEVEKGNfYm5leiwJCWluc24pOwo+ ICsJUklTQ1ZfSU5TTl9SRUpFQ1RFRChjX2VicmVhaywJCWluc24pOwo+ICsjZW5kaWYKPiArCj4g KwlSSVNDVl9JTlNOX1JFSkVDVEVEKGF1aXBjLAkJaW5zbik7Cj4gKwlSSVNDVl9JTlNOX1JFSkVD VEVEKGJyYW5jaCwJCWluc24pOwo+ICsKPiArCVJJU0NWX0lOU05fU0VUX1NJTVVMQVRFKGphbCwJ CWluc24pOwo+ICsJUklTQ1ZfSU5TTl9TRVRfU0lNVUxBVEUoamFsciwJCWluc24pOwo+ICsKPiAr CXJldHVybiBJTlNOX0dPT0Q7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwv cHJvYmVzL2RlY29kZS1pbnNuLmggYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvZGVjb2RlLWlu c24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjQyMjY5YTcKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2RlY29kZS1pbnNu LmgKPiBAQCAtMCwwICsxLDE4IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wKyAqLwo+ICsKPiArI2lmbmRlZiBfUklTQ1ZfS0VSTkVMX0tQUk9CRVNfREVDT0RFX0lOU05f SAo+ICsjZGVmaW5lIF9SSVNDVl9LRVJORUxfS1BST0JFU19ERUNPREVfSU5TTl9ICj4gKwo+ICsj aW5jbHVkZSA8YXNtL3NlY3Rpb25zLmg+Cj4gKyNpbmNsdWRlIDxhc20va3Byb2Jlcy5oPgo+ICsK PiArZW51bSBwcm9iZV9pbnNuIHsKPiArCUlOU05fUkVKRUNURUQsCj4gKwlJTlNOX0dPT0RfTk9f U0xPVCwKPiArCUlOU05fR09PRCwKPiArfTsKPiArCj4gK2VudW0gcHJvYmVfaW5zbiBfX2twcm9i ZXMKPiArcmlzY3ZfcHJvYmVfZGVjb2RlX2luc24ocHJvYmVfb3Bjb2RlX3QgKmFkZHIsIHN0cnVj dCBhcmNoX3Byb2JlX2luc24gKmFzaSk7Cj4gKwo+ICsjZW5kaWYgLyogX1JJU0NWX0tFUk5FTF9L UFJPQkVTX0RFQ09ERV9JTlNOX0ggKi8KPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwv cHJvYmVzL2twcm9iZXMuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVzLmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4zMWI2MTk2Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVzLmMKPiBAQCAtMCww ICsxLDQ3MSBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKPiArCj4g KyNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9leHRhYmxlLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zdG9wX21hY2hp bmUuaD4KPiArI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3VhY2Nl c3MuaD4KPiArI2luY2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgo+ICsjaW5jbHVkZSA8YXNtL2NhY2hl Zmx1c2guaD4KPiArI2luY2x1ZGUgPGFzbS9idWcuaD4KPiArI2luY2x1ZGUgPGFzbS9wYXRjaC5o Pgo+ICsKPiArI2luY2x1ZGUgImRlY29kZS1pbnNuLmgiCj4gKwo+ICtERUZJTkVfUEVSX0NQVShz dHJ1Y3Qga3Byb2JlICosIGN1cnJlbnRfa3Byb2JlKSA9IE5VTEw7Cj4gK0RFRklORV9QRVJfQ1BV KHN0cnVjdCBrcHJvYmVfY3RsYmxrLCBrcHJvYmVfY3RsYmxrKTsKPiArCj4gK3N0YXRpYyB2b2lk IF9fa3Byb2Jlcwo+ICtwb3N0X2twcm9iZV9oYW5kbGVyKHN0cnVjdCBrcHJvYmVfY3RsYmxrICos IHN0cnVjdCBwdF9yZWdzICopOwo+ICsKPiArc3RhdGljIHZvaWQgX19rcHJvYmVzIGFyY2hfcHJl cGFyZV9zc19zbG90KHN0cnVjdCBrcHJvYmUgKnApCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgb2Zm c2V0ID0gR0VUX0lOU05fTEVOR1RIKHAtPm9wY29kZSk7Cj4gKwo+ICsJcC0+YWluc24uYXBpLnJl c3RvcmUgPSAodW5zaWduZWQgbG9uZylwLT5hZGRyICsgb2Zmc2V0Owo+ICsKPiArCXBhdGNoX3Rl eHQocC0+YWluc24uYXBpLmluc24sIHAtPm9wY29kZSk7Cj4gKwlwYXRjaF90ZXh0KCh2b2lkICop KCh1bnNpZ25lZCBsb25nKShwLT5haW5zbi5hcGkuaW5zbikgKyBvZmZzZXQpLAo+ICsJCSAgIF9f QlVHX0lOU05fMzIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2twcm9iZXMgYXJjaF9wcmVw YXJlX3NpbXVsYXRlKHN0cnVjdCBrcHJvYmUgKnApCj4gK3sKPiArCXAtPmFpbnNuLmFwaS5yZXN0 b3JlID0gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19rcHJvYmVzIGFyY2hfc2ltdWxhdGVf aW5zbihzdHJ1Y3Qga3Byb2JlICpwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKPiArewo+ICsJc3Ry dWN0IGtwcm9iZV9jdGxibGsgKmtjYiA9IGdldF9rcHJvYmVfY3RsYmxrKCk7Cj4gKwo+ICsJaWYg KHAtPmFpbnNuLmFwaS5oYW5kbGVyKQo+ICsJCXAtPmFpbnNuLmFwaS5oYW5kbGVyKCh1MzIpcC0+ b3Bjb2RlLAo+ICsJCQkJCSh1bnNpZ25lZCBsb25nKXAtPmFkZHIsIHJlZ3MpOwo+ICsKPiArCXBv c3Rfa3Byb2JlX2hhbmRsZXIoa2NiLCByZWdzKTsKPiArfQo+ICsKPiAraW50IF9fa3Byb2JlcyBh cmNoX3ByZXBhcmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnApCj4gK3sKPiArCXVuc2lnbmVkIGxv bmcgcHJvYmVfYWRkciA9ICh1bnNpZ25lZCBsb25nKXAtPmFkZHI7Cj4gKwo+ICsJaWYgKHByb2Jl X2FkZHIgJiAweDEpIHsKPiArCQlwcl93YXJuKCJBZGRyZXNzIG5vdCBhbGlnbmVkLlxuIik7Cj4g Kwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCS8qIGNvcHkgaW5zdHJ1Y3Rpb24g Ki8KPiArCXAtPm9wY29kZSA9IGxlMzJfdG9fY3B1KCpwLT5hZGRyKTsKPiArCj4gKwkvKiBkZWNv ZGUgaW5zdHJ1Y3Rpb24gKi8KPiArCXN3aXRjaCAocmlzY3ZfcHJvYmVfZGVjb2RlX2luc24ocC0+ YWRkciwgJnAtPmFpbnNuLmFwaSkpIHsKPiArCWNhc2UgSU5TTl9SRUpFQ1RFRDoJLyogaW5zbiBu b3Qgc3VwcG9ydGVkICovCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJY2FzZSBJTlNOX0dP T0RfTk9fU0xPVDoJLyogaW5zbiBuZWVkIHNpbXVsYXRpb24gKi8KPiArCQlwLT5haW5zbi5hcGku aW5zbiA9IE5VTEw7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJTlNOX0dPT0Q6CS8qIGluc3Ry dWN0aW9uIHVzZXMgc2xvdCAqLwo+ICsJCXAtPmFpbnNuLmFwaS5pbnNuID0gZ2V0X2luc25fc2xv dCgpOwo+ICsJCWlmICghcC0+YWluc24uYXBpLmluc24pCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCS8qIHByZXBhcmUgdGhlIGluc3RydWN0aW9uICovCj4g KwlpZiAocC0+YWluc24uYXBpLmluc24pCj4gKwkJYXJjaF9wcmVwYXJlX3NzX3Nsb3QocCk7Cj4g KwllbHNlCj4gKwkJYXJjaF9wcmVwYXJlX3NpbXVsYXRlKHApOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICsvKiBpbnN0YWxsIGJyZWFrcG9pbnQgaW4gdGV4dCAqLwo+ICt2b2lkIF9fa3By b2JlcyBhcmNoX2FybV9rcHJvYmUoc3RydWN0IGtwcm9iZSAqcCkKPiArewo+ICsJaWYgKChwLT5v cGNvZGUgJiBfX0lOU05fTEVOR1RIX01BU0spID09IF9fSU5TTl9MRU5HVEhfMzIpCj4gKwkJcGF0 Y2hfdGV4dChwLT5hZGRyLCBfX0JVR19JTlNOXzMyKTsKPiArCWVsc2UKPiArCQlwYXRjaF90ZXh0 KHAtPmFkZHIsIF9fQlVHX0lOU05fMTYpOwo+ICt9Cj4gKwo+ICsvKiByZW1vdmUgYnJlYWtwb2lu dCBmcm9tIHRleHQgKi8KPiArdm9pZCBfX2twcm9iZXMgYXJjaF9kaXNhcm1fa3Byb2JlKHN0cnVj dCBrcHJvYmUgKnApCj4gK3sKPiArCXBhdGNoX3RleHQocC0+YWRkciwgcC0+b3Bjb2RlKTsKPiAr fQo+ICsKPiArdm9pZCBfX2twcm9iZXMgYXJjaF9yZW1vdmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUg KnApCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19rcHJvYmVzIHNhdmVfcHJldmlvdXNf a3Byb2JlKHN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2IpCj4gK3sKPiArCWtjYi0+cHJldl9rcHJv YmUua3AgPSBrcHJvYmVfcnVubmluZygpOwo+ICsJa2NiLT5wcmV2X2twcm9iZS5zdGF0dXMgPSBr Y2ItPmtwcm9iZV9zdGF0dXM7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fa3Byb2JlcyByZXN0 b3JlX3ByZXZpb3VzX2twcm9iZShzdHJ1Y3Qga3Byb2JlX2N0bGJsayAqa2NiKQo+ICt7Cj4gKwlf X3RoaXNfY3B1X3dyaXRlKGN1cnJlbnRfa3Byb2JlLCBrY2ItPnByZXZfa3Byb2JlLmtwKTsKPiAr CWtjYi0+a3Byb2JlX3N0YXR1cyA9IGtjYi0+cHJldl9rcHJvYmUuc3RhdHVzOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBfX2twcm9iZXMgc2V0X2N1cnJlbnRfa3Byb2JlKHN0cnVjdCBrcHJvYmUg KnApCj4gK3sKPiArCV9fdGhpc19jcHVfd3JpdGUoY3VycmVudF9rcHJvYmUsIHApOwo+ICt9Cj4g Kwo+ICsvKgo+ICsgKiBJbnRlcnJ1cHRzIG5lZWQgdG8gYmUgZGlzYWJsZWQgYmVmb3JlIHNpbmds ZS1zdGVwIG1vZGUgaXMgc2V0LCBhbmQgbm90Cj4gKyAqIHJlZW5hYmxlZCB1bnRpbCBhZnRlciBz aW5nbGUtc3RlcCBtb2RlIGVuZHMuCj4gKyAqIFdpdGhvdXQgZGlzYWJsaW5nIGludGVycnVwdCBv biBsb2NhbCBDUFUsIHRoZXJlIGlzIGEgY2hhbmNlIG9mCj4gKyAqIGludGVycnVwdCBvY2N1cnJl bmNlIGluIHRoZSBwZXJpb2Qgb2YgZXhjZXB0aW9uIHJldHVybiBhbmQgIHN0YXJ0IG9mCj4gKyAq IG91dC1vZi1saW5lIHNpbmdsZS1zdGVwLCB0aGF0IHJlc3VsdCBpbiB3cm9uZ2x5IHNpbmdsZSBz dGVwcGluZwo+ICsgKiBpbnRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4KPiArICovCj4gK3N0YXRp YyB2b2lkIF9fa3Byb2JlcyBrcHJvYmVzX3NhdmVfbG9jYWxfaXJxZmxhZyhzdHJ1Y3Qga3Byb2Jl X2N0bGJsayAqa2NiLAo+ICsJCQkJCQlzdHJ1Y3QgcHRfcmVncyAqcmVncykKPiArewo+ICsJa2Ni LT5zYXZlZF9zdGF0dXMgPSByZWdzLT5zdGF0dXM7Cj4gKwlyZWdzLT5zdGF0dXMgJj0gflNSX1NQ SUU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fa3Byb2JlcyBrcHJvYmVzX3Jlc3RvcmVfbG9j YWxfaXJxZmxhZyhzdHJ1Y3Qga3Byb2JlX2N0bGJsayAqa2NiLAo+ICsJCQkJCQlzdHJ1Y3QgcHRf cmVncyAqcmVncykKPiArewo+ICsJcmVncy0+c3RhdHVzID0ga2NiLT5zYXZlZF9zdGF0dXM7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIF9fa3Byb2Jlcwo+ICtzZXRfc3NfY29udGV4dChzdHJ1Y3Qg a3Byb2JlX2N0bGJsayAqa2NiLCB1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCBrcHJvYmUgKnAp Cj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gR0VUX0lOU05fTEVOR1RIKHAtPm9wY29k ZSk7Cj4gKwo+ICsJa2NiLT5zc19jdHguc3NfcGVuZGluZyA9IHRydWU7Cj4gKwlrY2ItPnNzX2N0 eC5tYXRjaF9hZGRyID0gYWRkciArIG9mZnNldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19r cHJvYmVzIGNsZWFyX3NzX2NvbnRleHQoc3RydWN0IGtwcm9iZV9jdGxibGsgKmtjYikKPiArewo+ ICsJa2NiLT5zc19jdHguc3NfcGVuZGluZyA9IGZhbHNlOwo+ICsJa2NiLT5zc19jdHgubWF0Y2hf YWRkciA9IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fa3Byb2JlcyBzZXR1cF9zaW5nbGVz dGVwKHN0cnVjdCBrcHJvYmUgKnAsCj4gKwkJCQkgICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms Cj4gKwkJCQkgICAgICAgc3RydWN0IGtwcm9iZV9jdGxibGsgKmtjYiwgaW50IHJlZW50ZXIpCj4g K3sKPiArCXVuc2lnbmVkIGxvbmcgc2xvdDsKPiArCj4gKwlpZiAocmVlbnRlcikgewo+ICsJCXNh dmVfcHJldmlvdXNfa3Byb2JlKGtjYik7Cj4gKwkJc2V0X2N1cnJlbnRfa3Byb2JlKHApOwo+ICsJ CWtjYi0+a3Byb2JlX3N0YXR1cyA9IEtQUk9CRV9SRUVOVEVSOwo+ICsJfSBlbHNlIHsKPiArCQlr Y2ItPmtwcm9iZV9zdGF0dXMgPSBLUFJPQkVfSElUX1NTOwo+ICsJfQo+ICsKPiArCWlmIChwLT5h aW5zbi5hcGkuaW5zbikgewo+ICsJCS8qIHByZXBhcmUgZm9yIHNpbmdsZSBzdGVwcGluZyAqLwo+ ICsJCXNsb3QgPSAodW5zaWduZWQgbG9uZylwLT5haW5zbi5hcGkuaW5zbjsKPiArCj4gKwkJc2V0 X3NzX2NvbnRleHQoa2NiLCBzbG90LCBwKTsJLyogbWFyayBwZW5kaW5nIHNzICovCj4gKwo+ICsJ CS8qIElSUXMgYW5kIHNpbmdsZSBzdGVwcGluZyBkbyBub3QgbWl4IHdlbGwuICovCj4gKwkJa3By b2Jlc19zYXZlX2xvY2FsX2lycWZsYWcoa2NiLCByZWdzKTsKPiArCj4gKwkJaW5zdHJ1Y3Rpb25f cG9pbnRlcl9zZXQocmVncywgc2xvdCk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIGluc24gc2ltdWxh dGlvbiAqLwo+ICsJCWFyY2hfc2ltdWxhdGVfaW5zbihwLCByZWdzKTsKPiArCX0KPiArfQo+ICsK PiArc3RhdGljIGludCBfX2twcm9iZXMgcmVlbnRlcl9rcHJvYmUoc3RydWN0IGtwcm9iZSAqcCwK PiArCQkJCSAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncywKPiArCQkJCSAgICBzdHJ1Y3Qga3Byb2Jl X2N0bGJsayAqa2NiKQo+ICt7Cj4gKwlzd2l0Y2ggKGtjYi0+a3Byb2JlX3N0YXR1cykgewo+ICsJ Y2FzZSBLUFJPQkVfSElUX1NTRE9ORToKPiArCWNhc2UgS1BST0JFX0hJVF9BQ1RJVkU6Cj4gKwkJ a3Byb2Jlc19pbmNfbm1pc3NlZF9jb3VudChwKTsKPiArCQlzZXR1cF9zaW5nbGVzdGVwKHAsIHJl Z3MsIGtjYiwgMSk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEtQUk9CRV9ISVRfU1M6Cj4gKwljYXNl IEtQUk9CRV9SRUVOVEVSOgo+ICsJCXByX3dhcm4oIlVucmVjb3ZlcmFibGUga3Byb2JlIGRldGVj dGVkLlxuIik7Cj4gKwkJZHVtcF9rcHJvYmUocCk7Cj4gKwkJQlVHKCk7Cj4gKwkJYnJlYWs7Cj4g KwlkZWZhdWx0Ogo+ICsJCVdBUk5fT04oMSk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fa3Byb2Jlcwo+ICtwb3N0X2twcm9i ZV9oYW5kbGVyKHN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2IsIHN0cnVjdCBwdF9yZWdzICpyZWdz KQo+ICt7Cj4gKwlzdHJ1Y3Qga3Byb2JlICpjdXIgPSBrcHJvYmVfcnVubmluZygpOwo+ICsKPiAr CWlmICghY3VyKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKiByZXR1cm4gYWRkciByZXN0b3JlIGlm IG5vbi1icmFuY2hpbmcgaW5zbiAqLwo+ICsJaWYgKGN1ci0+YWluc24uYXBpLnJlc3RvcmUgIT0g MCkKPiArCQlyZWdzLT5lcGMgPSBjdXItPmFpbnNuLmFwaS5yZXN0b3JlOwo+ICsKPiArCS8qIHJl c3RvcmUgYmFjayBvcmlnaW5hbCBzYXZlZCBrcHJvYmUgdmFyaWFibGVzIGFuZCBjb250aW51ZSAq Lwo+ICsJaWYgKGtjYi0+a3Byb2JlX3N0YXR1cyA9PSBLUFJPQkVfUkVFTlRFUikgewo+ICsJCXJl c3RvcmVfcHJldmlvdXNfa3Byb2JlKGtjYik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8q IGNhbGwgcG9zdCBoYW5kbGVyICovCj4gKwlrY2ItPmtwcm9iZV9zdGF0dXMgPSBLUFJPQkVfSElU X1NTRE9ORTsKPiArCWlmIChjdXItPnBvc3RfaGFuZGxlcikJewo+ICsJCS8qIHBvc3RfaGFuZGxl ciBjYW4gaGl0IGJyZWFrcG9pbnQgYW5kIHNpbmdsZSBzdGVwCj4gKwkJICogYWdhaW4sIHNvIHdl IGVuYWJsZSBELWZsYWcgZm9yIHJlY3Vyc2l2ZSBleGNlcHRpb24uCj4gKwkJICovCj4gKwkJY3Vy LT5wb3N0X2hhbmRsZXIoY3VyLCByZWdzLCAwKTsKPiArCX0KPiArCj4gKwlyZXNldF9jdXJyZW50 X2twcm9iZSgpOwo+ICt9Cj4gKwo+ICtpbnQgX19rcHJvYmVzIGtwcm9iZV9mYXVsdF9oYW5kbGVy KHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgdHJhcG5yKQo+ICt7Cj4gKwlzdHJ1 Y3Qga3Byb2JlICpjdXIgPSBrcHJvYmVfcnVubmluZygpOwo+ICsJc3RydWN0IGtwcm9iZV9jdGxi bGsgKmtjYiA9IGdldF9rcHJvYmVfY3RsYmxrKCk7Cj4gKwo+ICsJc3dpdGNoIChrY2ItPmtwcm9i ZV9zdGF0dXMpIHsKPiArCWNhc2UgS1BST0JFX0hJVF9TUzoKPiArCWNhc2UgS1BST0JFX1JFRU5U RVI6Cj4gKwkJLyoKPiArCQkgKiBXZSBhcmUgaGVyZSBiZWNhdXNlIHRoZSBpbnN0cnVjdGlvbiBi ZWluZyBzaW5nbGUKPiArCQkgKiBzdGVwcGVkIGNhdXNlZCBhIHBhZ2UgZmF1bHQuIFdlIHJlc2V0 IHRoZSBjdXJyZW50Cj4gKwkJICoga3Byb2JlIGFuZCB0aGUgaXAgcG9pbnRzIGJhY2sgdG8gdGhl IHByb2JlIGFkZHJlc3MKPiArCQkgKiBhbmQgYWxsb3cgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlciB0 byBjb250aW51ZSBhcyBhCj4gKwkJICogbm9ybWFsIHBhZ2UgZmF1bHQuCj4gKwkJICovCj4gKwkJ cmVncy0+ZXBjID0gKHVuc2lnbmVkIGxvbmcpIGN1ci0+YWRkcjsKPiArCQlpZiAoIWluc3RydWN0 aW9uX3BvaW50ZXIocmVncykpCj4gKwkJCUJVRygpOwo+ICsKPiArCQlpZiAoa2NiLT5rcHJvYmVf c3RhdHVzID09IEtQUk9CRV9SRUVOVEVSKQo+ICsJCQlyZXN0b3JlX3ByZXZpb3VzX2twcm9iZShr Y2IpOwo+ICsJCWVsc2UKPiArCQkJcmVzZXRfY3VycmVudF9rcHJvYmUoKTsKPiArCj4gKwkJYnJl YWs7Cj4gKwljYXNlIEtQUk9CRV9ISVRfQUNUSVZFOgo+ICsJY2FzZSBLUFJPQkVfSElUX1NTRE9O RToKPiArCQkvKgo+ICsJCSAqIFdlIGluY3JlbWVudCB0aGUgbm1pc3NlZCBjb3VudCBmb3IgYWNj b3VudGluZywKPiArCQkgKiB3ZSBjYW4gYWxzbyB1c2UgbnByZS9ucG9zdGZhdWx0IGNvdW50IGZv ciBhY2NvdW50aW5nCj4gKwkJICogdGhlc2Ugc3BlY2lmaWMgZmF1bHQgY2FzZXMuCj4gKwkJICov Cj4gKwkJa3Byb2Jlc19pbmNfbm1pc3NlZF9jb3VudChjdXIpOwo+ICsKPiArCQkvKgo+ICsJCSAq IFdlIGNvbWUgaGVyZSBiZWNhdXNlIGluc3RydWN0aW9ucyBpbiB0aGUgcHJlL3Bvc3QKPiArCQkg KiBoYW5kbGVyIGNhdXNlZCB0aGUgcGFnZV9mYXVsdCwgdGhpcyBjb3VsZCBoYXBwZW4KPiArCQkg KiBpZiBoYW5kbGVyIHRyaWVzIHRvIGFjY2VzcyB1c2VyIHNwYWNlIGJ5Cj4gKwkJICogY29weV9m cm9tX3VzZXIoKSwgZ2V0X3VzZXIoKSBldGMuIExldCB0aGUKPiArCQkgKiB1c2VyLXNwZWNpZmll ZCBoYW5kbGVyIHRyeSB0byBmaXggaXQgZmlyc3QuCj4gKwkJICovCj4gKwkJaWYgKGN1ci0+ZmF1 bHRfaGFuZGxlciAmJiBjdXItPmZhdWx0X2hhbmRsZXIoY3VyLCByZWdzLCB0cmFwbnIpKQo+ICsJ CQlyZXR1cm4gMTsKPiArCj4gKwkJLyoKPiArCQkgKiBJbiBjYXNlIHRoZSB1c2VyLXNwZWNpZmll ZCBmYXVsdCBoYW5kbGVyIHJldHVybmVkCj4gKwkJICogemVybywgdHJ5IHRvIGZpeCB1cC4KPiAr CQkgKi8KPiArCQlpZiAoZml4dXBfZXhjZXB0aW9uKHJlZ3MpKQo+ICsJCQlyZXR1cm4gMTsKPiAr CX0KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtib29sIF9fa3Byb2Jlcwo+ICtrcHJvYmVfYnJl YWtwb2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ICt7Cj4gKwlzdHJ1Y3Qga3By b2JlICpwLCAqY3VyX2twcm9iZTsKPiArCXN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2I7Cj4gKwl1 bnNpZ25lZCBsb25nIGFkZHIgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpOwo+ICsKPiArCWtj YiA9IGdldF9rcHJvYmVfY3RsYmxrKCk7Cj4gKwljdXJfa3Byb2JlID0ga3Byb2JlX3J1bm5pbmco KTsKPiArCj4gKwlwID0gZ2V0X2twcm9iZSgoa3Byb2JlX29wY29kZV90ICopIGFkZHIpOwo+ICsK PiArCWlmIChwKSB7Cj4gKwkJaWYgKGN1cl9rcHJvYmUpIHsKPiArCQkJaWYgKHJlZW50ZXJfa3By b2JlKHAsIHJlZ3MsIGtjYikpCj4gKwkJCQlyZXR1cm4gdHJ1ZTsKPiArCQl9IGVsc2Ugewo+ICsJ CQkvKiBQcm9iZSBoaXQgKi8KPiArCQkJc2V0X2N1cnJlbnRfa3Byb2JlKHApOwo+ICsJCQlrY2It Pmtwcm9iZV9zdGF0dXMgPSBLUFJPQkVfSElUX0FDVElWRTsKPiArCj4gKwkJCS8qCj4gKwkJCSAq IElmIHdlIGhhdmUgbm8gcHJlLWhhbmRsZXIgb3IgaXQgcmV0dXJuZWQgMCwgd2UKPiArCQkJICog Y29udGludWUgd2l0aCBub3JtYWwgcHJvY2Vzc2luZy4gIElmIHdlIGhhdmUgYQo+ICsJCQkgKiBw cmUtaGFuZGxlciBhbmQgaXQgcmV0dXJuZWQgbm9uLXplcm8sIGl0IHdpbGwKPiArCQkJICogbW9k aWZ5IHRoZSBleGVjdXRpb24gcGF0aCBhbmQgbm8gbmVlZCB0byBzaW5nbGUKPiArCQkJICogc3Rl cHBpbmcuIExldCdzIGp1c3QgcmVzZXQgY3VycmVudCBrcHJvYmUgYW5kIGV4aXQuCj4gKwkJCSAq Cj4gKwkJCSAqIHByZV9oYW5kbGVyIGNhbiBoaXQgYSBicmVha3BvaW50IGFuZCBjYW4gc3RlcCB0 aHJ1Cj4gKwkJCSAqIGJlZm9yZSByZXR1cm4uCj4gKwkJCSAqLwo+ICsJCQlpZiAoIXAtPnByZV9o YW5kbGVyIHx8ICFwLT5wcmVfaGFuZGxlcihwLCByZWdzKSkKPiArCQkJCXNldHVwX3NpbmdsZXN0 ZXAocCwgcmVncywga2NiLCAwKTsKPiArCQkJZWxzZQo+ICsJCQkJcmVzZXRfY3VycmVudF9rcHJv YmUoKTsKPiArCQl9Cj4gKwkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIFRo ZSBicmVha3BvaW50IGluc3RydWN0aW9uIHdhcyByZW1vdmVkIHJpZ2h0Cj4gKwkgKiBhZnRlciB3 ZSBoaXQgaXQuICBBbm90aGVyIGNwdSBoYXMgcmVtb3ZlZAo+ICsJICogZWl0aGVyIGEgcHJvYmVw b2ludCBvciBhIGRlYnVnZ2VyIGJyZWFrcG9pbnQKPiArCSAqIGF0IHRoaXMgYWRkcmVzcy4gIElu IGVpdGhlciBjYXNlLCBubyBmdXJ0aGVyCj4gKwkgKiBoYW5kbGluZyBvZiB0aGlzIGludGVycnVw dCBpcyBhcHByb3ByaWF0ZS4KPiArCSAqIFJldHVybiBiYWNrIHRvIG9yaWdpbmFsIGluc3RydWN0 aW9uLCBhbmQgY29udGludWUuCj4gKwkgKi8KPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAr Ym9vbCBfX2twcm9iZXMKPiAra3Byb2JlX3NpbmdsZV9zdGVwX2hhbmRsZXIoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MpCj4gK3sKPiArCXN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2IgPSBnZXRfa3Byb2Jl X2N0bGJsaygpOwo+ICsKPiArCWlmICgoa2NiLT5zc19jdHguc3NfcGVuZGluZykKPiArCSAgICAm JiAoa2NiLT5zc19jdHgubWF0Y2hfYWRkciA9PSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpKSkg ewo+ICsJCWNsZWFyX3NzX2NvbnRleHQoa2NiKTsJLyogY2xlYXIgcGVuZGluZyBzcyAqLwo+ICsK PiArCQlrcHJvYmVzX3Jlc3RvcmVfbG9jYWxfaXJxZmxhZyhrY2IsIHJlZ3MpOwo+ICsKPiArCQlw b3N0X2twcm9iZV9oYW5kbGVyKGtjYiwgcmVncyk7Cj4gKwkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4g KwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFByb3ZpZGUgYSBibGFja2xpc3Qg b2Ygc3ltYm9scyBpZGVudGlmeWluZyByYW5nZXMgd2hpY2ggY2Fubm90IGJlIGtwcm9iZWQuCj4g KyAqIFRoaXMgYmxhY2tsaXN0IGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzIChr cHJvYmVzL2JsYWNrbGlzdCkuCj4gKyAqLwo+ICtpbnQgX19pbml0IGFyY2hfcG9wdWxhdGVfa3By b2JlX2JsYWNrbGlzdCh2b2lkKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGtwcm9i ZV9hZGRfYXJlYV9ibGFja2xpc3QoKHVuc2lnbmVkIGxvbmcpX19pcnFlbnRyeV90ZXh0X3N0YXJ0 LAo+ICsJCQkJCSh1bnNpZ25lZCBsb25nKV9faXJxZW50cnlfdGV4dF9lbmQpOwo+ICsJcmV0dXJu IHJldDsKPiArfQo+ICsKPiArdm9pZCBfX2twcm9iZXMgX191c2VkICp0cmFtcG9saW5lX3Byb2Jl X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gK3sKPiArCXN0cnVjdCBrcmV0cHJvYmVf aW5zdGFuY2UgKnJpID0gTlVMTDsKPiArCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkLCBlbXB0eV9y cDsKPiArCXN0cnVjdCBobGlzdF9ub2RlICp0bXA7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzLCBv cmlnX3JldF9hZGRyZXNzID0gMDsKPiArCXVuc2lnbmVkIGxvbmcgdHJhbXBvbGluZV9hZGRyZXNz ID0KPiArCQkodW5zaWduZWQgbG9uZykma3JldHByb2JlX3RyYW1wb2xpbmU7Cj4gKwlrcHJvYmVf b3Bjb2RlX3QgKmNvcnJlY3RfcmV0X2FkZHIgPSBOVUxMOwo+ICsKPiArCUlOSVRfSExJU1RfSEVB RCgmZW1wdHlfcnApOwo+ICsJa3JldHByb2JlX2hhc2hfbG9jayhjdXJyZW50LCAmaGVhZCwgJmZs YWdzKTsKPiArCj4gKwkvKgo+ICsJICogSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBtdWx0aXBsZSBp bnN0YW5jZXMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4KPiArCSAqIHRhc2sgZWl0aGVyIGJlY2F1 c2UgbXVsdGlwbGUgZnVuY3Rpb25zIGluIHRoZSBjYWxsIHBhdGggaGF2ZQo+ICsJICogcmV0dXJu IHByb2JlcyBpbnN0YWxsZWQgb24gdGhlbSwgYW5kL29yIG1vcmUgdGhhbiBvbmUKPiArCSAqIHJl dHVybiBwcm9iZSB3YXMgcmVnaXN0ZXJlZCBmb3IgYSB0YXJnZXQgZnVuY3Rpb24uCj4gKwkgKgo+ ICsJICogV2UgY2FuIGhhbmRsZSB0aGlzIGJlY2F1c2U6Cj4gKwkgKiAgICAgLSBpbnN0YW5jZXMg YXJlIGFsd2F5cyBwdXNoZWQgaW50byB0aGUgaGVhZCBvZiB0aGUgbGlzdAo+ICsJICogICAgIC0g d2hlbiBtdWx0aXBsZSByZXR1cm4gcHJvYmVzIGFyZSByZWdpc3RlcmVkIGZvciB0aGUgc2FtZQo+ ICsJICoJIGZ1bmN0aW9uLCB0aGUgKGNocm9ub2xvZ2ljYWxseSkgZmlyc3QgaW5zdGFuY2UncyBy ZXRfYWRkcgo+ICsJICoJIHdpbGwgYmUgdGhlIHJlYWwgcmV0dXJuIGFkZHJlc3MsIGFuZCBhbGwg dGhlIHJlc3Qgd2lsbAo+ICsJICoJIHBvaW50IHRvIGtyZXRwcm9iZV90cmFtcG9saW5lLgo+ICsJ ICovCj4gKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpLCB0bXAsIGhlYWQsIGhsaXN0KSB7 Cj4gKwkJaWYgKHJpLT50YXNrICE9IGN1cnJlbnQpCj4gKwkJCS8qIGFub3RoZXIgdGFzayBpcyBz aGFyaW5nIG91ciBoYXNoIGJ1Y2tldCAqLwo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJb3JpZ19y ZXRfYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKXJpLT5yZXRfYWRkcjsKPiArCj4gKwkJaWYgKG9y aWdfcmV0X2FkZHJlc3MgIT0gdHJhbXBvbGluZV9hZGRyZXNzKQo+ICsJCQkvKgo+ICsJCQkgKiBU aGlzIGlzIHRoZSByZWFsIHJldHVybiBhZGRyZXNzLiBBbnkgb3RoZXIKPiArCQkJICogaW5zdGFu Y2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhc2sgYXJlIGZvcgo+ICsJCQkgKiBvdGhlciBjYWxs cyBkZWVwZXIgb24gdGhlIGNhbGwgc3RhY2sKPiArCQkJICovCj4gKwkJCWJyZWFrOwo+ICsJfQo+ ICsKPiArCWtyZXRwcm9iZV9hc3NlcnQocmksIG9yaWdfcmV0X2FkZHJlc3MsIHRyYW1wb2xpbmVf YWRkcmVzcyk7Cj4gKwo+ICsJY29ycmVjdF9yZXRfYWRkciA9IHJpLT5yZXRfYWRkcjsKPiArCWhs aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmksIHRtcCwgaGVhZCwgaGxpc3QpIHsKPiArCQlpZiAo cmktPnRhc2sgIT0gY3VycmVudCkKPiArCQkJLyogYW5vdGhlciB0YXNrIGlzIHNoYXJpbmcgb3Vy IGhhc2ggYnVja2V0ICovCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlvcmlnX3JldF9hZGRyZXNz ID0gKHVuc2lnbmVkIGxvbmcpcmktPnJldF9hZGRyOwo+ICsJCWlmIChyaS0+cnAgJiYgcmktPnJw LT5oYW5kbGVyKSB7Cj4gKwkJCV9fdGhpc19jcHVfd3JpdGUoY3VycmVudF9rcHJvYmUsICZyaS0+ cnAtPmtwKTsKPiArCQkJZ2V0X2twcm9iZV9jdGxibGsoKS0+a3Byb2JlX3N0YXR1cyA9IEtQUk9C RV9ISVRfQUNUSVZFOwo+ICsJCQlyaS0+cmV0X2FkZHIgPSBjb3JyZWN0X3JldF9hZGRyOwo+ICsJ CQlyaS0+cnAtPmhhbmRsZXIocmksIHJlZ3MpOwo+ICsJCQlfX3RoaXNfY3B1X3dyaXRlKGN1cnJl bnRfa3Byb2JlLCBOVUxMKTsKPiArCQl9Cj4gKwo+ICsJCXJlY3ljbGVfcnBfaW5zdChyaSwgJmVt cHR5X3JwKTsKPiArCj4gKwkJaWYgKG9yaWdfcmV0X2FkZHJlc3MgIT0gdHJhbXBvbGluZV9hZGRy ZXNzKQo+ICsJCQkvKgo+ICsJCQkgKiBUaGlzIGlzIHRoZSByZWFsIHJldHVybiBhZGRyZXNzLiBB bnkgb3RoZXIKPiArCQkJICogaW5zdGFuY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhc2sgYXJl IGZvcgo+ICsJCQkgKiBvdGhlciBjYWxscyBkZWVwZXIgb24gdGhlIGNhbGwgc3RhY2sKPiArCQkJ ICovCj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWtyZXRwcm9iZV9oYXNoX3VubG9jayhjdXJy ZW50LCAmZmxhZ3MpOwo+ICsKPiArCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmksIHRtcCwg JmVtcHR5X3JwLCBobGlzdCkgewo+ICsJCWhsaXN0X2RlbCgmcmktPmhsaXN0KTsKPiArCQlrZnJl ZShyaSk7Cj4gKwl9Cj4gKwlyZXR1cm4gKHZvaWQgKilvcmlnX3JldF9hZGRyZXNzOwo+ICt9Cj4g Kwo+ICt2b2lkIF9fa3Byb2JlcyBhcmNoX3ByZXBhcmVfa3JldHByb2JlKHN0cnVjdCBrcmV0cHJv YmVfaW5zdGFuY2UgKnJpLAo+ICsJCQkJICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gK3sK PiArCXJpLT5yZXRfYWRkciA9IChrcHJvYmVfb3Bjb2RlX3QgKilyZWdzLT5yYTsKPiArCXJlZ3Mt PnJhID0gKHVuc2lnbmVkIGxvbmcpICZrcmV0cHJvYmVfdHJhbXBvbGluZTsKPiArfQo+ICsKPiAr aW50IF9fa3Byb2JlcyBhcmNoX3RyYW1wb2xpbmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnApCj4g K3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgX19pbml0IGFyY2hfaW5pdF9rcHJvYmVz KHZvaWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv a2VybmVsL3Byb2Jlcy9rcHJvYmVzX3RyYW1wb2xpbmUuUyBiL2FyY2gvcmlzY3Yva2VybmVsL3By b2Jlcy9rcHJvYmVzX3RyYW1wb2xpbmUuUwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAuLjZlODVkMDIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9yaXNjdi9rZXJu ZWwvcHJvYmVzL2twcm9iZXNfdHJhbXBvbGluZS5TCj4gQEAgLTAsMCArMSw5MyBAQAo+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KPiArLyoKPiArICogQXV0aG9yOiBQ YXRyaWNrIFN0w6RobGluIDxtZUBwYWNraS5jaD4KPiArICovCj4gKyNpbmNsdWRlIDxsaW51eC9s aW5rYWdlLmg+Cj4gKwo+ICsjaW5jbHVkZSA8YXNtL2FzbS5oPgo+ICsjaW5jbHVkZSA8YXNtL2Fz bS1vZmZzZXRzLmg+Cj4gKwo+ICsJLnRleHQKPiArCS5hbHRtYWNybwo+ICsKPiArCS5tYWNybyBz YXZlX2FsbF9iYXNlX3JlZ3MKPiArCVJFR19TIHgxLCAgUFRfUkEoc3ApCj4gKwlSRUdfUyB4Mywg IFBUX0dQKHNwKQo+ICsJUkVHX1MgeDQsICBQVF9UUChzcCkKPiArCVJFR19TIHg1LCAgUFRfVDAo c3ApCj4gKwlSRUdfUyB4NiwgIFBUX1QxKHNwKQo+ICsJUkVHX1MgeDcsICBQVF9UMihzcCkKPiAr CVJFR19TIHg4LCAgUFRfUzAoc3ApCj4gKwlSRUdfUyB4OSwgIFBUX1MxKHNwKQo+ICsJUkVHX1Mg eDEwLCBQVF9BMChzcCkKPiArCVJFR19TIHgxMSwgUFRfQTEoc3ApCj4gKwlSRUdfUyB4MTIsIFBU X0EyKHNwKQo+ICsJUkVHX1MgeDEzLCBQVF9BMyhzcCkKPiArCVJFR19TIHgxNCwgUFRfQTQoc3Ap Cj4gKwlSRUdfUyB4MTUsIFBUX0E1KHNwKQo+ICsJUkVHX1MgeDE2LCBQVF9BNihzcCkKPiArCVJF R19TIHgxNywgUFRfQTcoc3ApCj4gKwlSRUdfUyB4MTgsIFBUX1MyKHNwKQo+ICsJUkVHX1MgeDE5 LCBQVF9TMyhzcCkKPiArCVJFR19TIHgyMCwgUFRfUzQoc3ApCj4gKwlSRUdfUyB4MjEsIFBUX1M1 KHNwKQo+ICsJUkVHX1MgeDIyLCBQVF9TNihzcCkKPiArCVJFR19TIHgyMywgUFRfUzcoc3ApCj4g KwlSRUdfUyB4MjQsIFBUX1M4KHNwKQo+ICsJUkVHX1MgeDI1LCBQVF9TOShzcCkKPiArCVJFR19T IHgyNiwgUFRfUzEwKHNwKQo+ICsJUkVHX1MgeDI3LCBQVF9TMTEoc3ApCj4gKwlSRUdfUyB4Mjgs IFBUX1QzKHNwKQo+ICsJUkVHX1MgeDI5LCBQVF9UNChzcCkKPiArCVJFR19TIHgzMCwgUFRfVDUo c3ApCj4gKwlSRUdfUyB4MzEsIFBUX1Q2KHNwKQo+ICsJLmVuZG0KPiArCj4gKwkubWFjcm8gcmVz dG9yZV9hbGxfYmFzZV9yZWdzCj4gKwlSRUdfTCB4MywgIFBUX0dQKHNwKQo+ICsJUkVHX0wgeDQs ICBQVF9UUChzcCkKPiArCVJFR19MIHg1LCAgUFRfVDAoc3ApCj4gKwlSRUdfTCB4NiwgIFBUX1Qx KHNwKQo+ICsJUkVHX0wgeDcsICBQVF9UMihzcCkKPiArCVJFR19MIHg4LCAgUFRfUzAoc3ApCj4g KwlSRUdfTCB4OSwgIFBUX1MxKHNwKQo+ICsJUkVHX0wgeDEwLCBQVF9BMChzcCkKPiArCVJFR19M IHgxMSwgUFRfQTEoc3ApCj4gKwlSRUdfTCB4MTIsIFBUX0EyKHNwKQo+ICsJUkVHX0wgeDEzLCBQ VF9BMyhzcCkKPiArCVJFR19MIHgxNCwgUFRfQTQoc3ApCj4gKwlSRUdfTCB4MTUsIFBUX0E1KHNw KQo+ICsJUkVHX0wgeDE2LCBQVF9BNihzcCkKPiArCVJFR19MIHgxNywgUFRfQTcoc3ApCj4gKwlS RUdfTCB4MTgsIFBUX1MyKHNwKQo+ICsJUkVHX0wgeDE5LCBQVF9TMyhzcCkKPiArCVJFR19MIHgy MCwgUFRfUzQoc3ApCj4gKwlSRUdfTCB4MjEsIFBUX1M1KHNwKQo+ICsJUkVHX0wgeDIyLCBQVF9T NihzcCkKPiArCVJFR19MIHgyMywgUFRfUzcoc3ApCj4gKwlSRUdfTCB4MjQsIFBUX1M4KHNwKQo+ ICsJUkVHX0wgeDI1LCBQVF9TOShzcCkKPiArCVJFR19MIHgyNiwgUFRfUzEwKHNwKQo+ICsJUkVH X0wgeDI3LCBQVF9TMTEoc3ApCj4gKwlSRUdfTCB4MjgsIFBUX1QzKHNwKQo+ICsJUkVHX0wgeDI5 LCBQVF9UNChzcCkKPiArCVJFR19MIHgzMCwgUFRfVDUoc3ApCj4gKwlSRUdfTCB4MzEsIFBUX1Q2 KHNwKQo+ICsJLmVuZG0KPiArCj4gK0VOVFJZKGtyZXRwcm9iZV90cmFtcG9saW5lKQo+ICsJYWRk aSBzcCwgc3AsIC0oUFRfU0laRV9PTl9TVEFDSykKPiArCXNhdmVfYWxsX2Jhc2VfcmVncwo+ICsK PiArCW1vdmUgYTAsIHNwIC8qIHB0X3JlZ3MgKi8KPiArCj4gKwljYWxsIHRyYW1wb2xpbmVfcHJv YmVfaGFuZGxlcgo+ICsKPiArCS8qIHVzZSB0aGUgcmVzdWx0IGFzIHRoZSByZXR1cm4tYWRkcmVz cyAqLwo+ICsJbW92ZSByYSwgYTAKPiArCj4gKwlyZXN0b3JlX2FsbF9iYXNlX3JlZ3MKPiArCWFk ZGkgc3AsIHNwLCBQVF9TSVpFX09OX1NUQUNLCj4gKwo+ICsJcmV0Cj4gK0VORFBST0Moa3JldHBy b2JlX3RyYW1wb2xpbmUpCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9z aW11bGF0ZS1pbnNuLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uMjUxOWNlMgo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5j Cj4gQEAgLTAsMCArMSw4NSBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCsKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgo+ICsKPiArI2luY2x1ZGUgImRl Y29kZS1pbnNuLmgiCj4gKyNpbmNsdWRlICJzaW11bGF0ZS1pbnNuLmgiCj4gKwo+ICtzdGF0aWMg aW5saW5lIGJvb2wgcnZfaW5zbl9yZWdfZ2V0X3ZhbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMy IGluZGV4LAo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgKnB0cikKPiArewo+ICsJaWYgKGlu ZGV4ID09IDApCj4gKwkJKnB0ciA9IDA7Cj4gKwllbHNlIGlmIChpbmRleCA8PSAzMSkKPiArCQkq cHRyID0gKigodW5zaWduZWQgbG9uZyAqKXJlZ3MgKyBpbmRleCk7Cj4gKwllbHNlCj4gKwkJcmV0 dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5l IGJvb2wgcnZfaW5zbl9yZWdfc2V0X3ZhbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluZGV4 LAo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsKQo+ICt7Cj4gKwlpZiAoaW5kZXggPT0g MCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwllbHNlIGlmIChpbmRleCA8PSAzMSkKPiArCQkqKCh1 bnNpZ25lZCBsb25nICopcmVncyArIGluZGV4KSA9IHZhbDsKPiArCWVsc2UKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK2Jvb2wgX19rcHJvYmVzIHNp bXVsYXRlX2phbCh1MzIgb3Bjb2RlLCB1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCBwdF9yZWdz ICpyZWdzKQo+ICt7Cj4gKwkvKgo+ICsJICogICAgIDMxICAgIDMwICAgICAgIDIxICAgIDIwICAg ICAxOSAgICAgICAgMTIgMTEgNyA2ICAgICAgMAo+ICsJICogaW1tIFsyMF0gfCBpbW1bMTA6MV0g fCBpbW1bMTFdIHwgaW1tWzE5OjEyXSB8IHJkIHwgb3Bjb2RlCj4gKwkgKiAgICAgMSAgICAgICAg IDEwICAgICAgICAgIDEgICAgICAgICAgIDggICAgICAgNSAgICBKQUwvSgo+ICsJICovCj4gKwli b29sIHJldDsKPiArCXUzMiBpbW07Cj4gKwl1MzIgaW5kZXggPSAob3Bjb2RlID4+IDcpICYgMHgx ZjsKPiArCj4gKwlyZXQgPSBydl9pbnNuX3JlZ19zZXRfdmFsKHJlZ3MsIGluZGV4LCBhZGRyICsg NCk7Cj4gKwlpZiAoIXJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWltbSAgPSAoKG9wY29k ZSA+PiAyMSkgJiAweDNmZikgPDwgMTsKPiArCWltbSB8PSAoKG9wY29kZSA+PiAyMCkgJiAweDEp ICAgPDwgMTE7Cj4gKwlpbW0gfD0gKChvcGNvZGUgPj4gMTIpICYgMHhmZikgIDw8IDEyOwo+ICsJ aW1tIHw9ICgob3Bjb2RlID4+IDMxKSAmIDB4MSkgICA8PCAyMDsKPiArCj4gKwlpbnN0cnVjdGlv bl9wb2ludGVyX3NldChyZWdzLCBhZGRyICsgc2lnbl9leHRlbmQzMigoaW1tKSwgMjApKTsKPiAr Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtib29sIF9fa3Byb2JlcyBzaW11bGF0ZV9qYWxy KHUzMiBvcGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4g K3sKPiArCS8qCj4gKwkgKiAzMSAgICAgICAgICAyMCAxOSAxNSAxNCAxMiAxMSA3IDYgICAgICAw Cj4gKwkgKiAgb2Zmc2V0WzExOjBdIHwgcnMxIHwgMDEwIHwgcmQgfCBvcGNvZGUKPiArCSAqICAg ICAgMTIgICAgICAgICA1ICAgICAgMyAgICA1ICAgIEpBTFIvSlIKPiArCSAqLwo+ICsJYm9vbCBy ZXQ7Cj4gKwl1bnNpZ25lZCBsb25nIGJhc2VfYWRkcjsKPiArCXUzMiBpbW0gPSAob3Bjb2RlID4+ IDIwKSAmIDB4ZmZmOwo+ICsJdTMyIHJkX2luZGV4ID0gKG9wY29kZSA+PiA3KSAmIDB4MWY7Cj4g Kwl1MzIgcnMxX2luZGV4ID0gKG9wY29kZSA+PiAxNSkgJiAweDFmOwo+ICsKPiArCXJldCA9IHJ2 X2luc25fcmVnX3NldF92YWwocmVncywgcmRfaW5kZXgsIGFkZHIgKyA0KTsKPiArCWlmICghcmV0 KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcnZfaW5zbl9yZWdfZ2V0X3ZhbChyZWdz LCByczFfaW5kZXgsICZiYXNlX2FkZHIpOwo+ICsJaWYgKCFyZXQpCj4gKwkJcmV0dXJuIHJldDsK PiArCj4gKwlpbnN0cnVjdGlvbl9wb2ludGVyX3NldChyZWdzLCAoYmFzZV9hZGRyICsgc2lnbl9l eHRlbmQzMigoaW1tKSwgMTEpKSZ+MSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+IGRpZmYg LS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5oIGIvYXJjaC9y aXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWluc24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAuLmE2MmQ3ODQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9y aXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWluc24uaAo+IEBAIC0wLDAgKzEsNDcgQEAKPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArICovCj4gKwo+ICsjaWZuZGVmIF9S SVNDVl9LRVJORUxfUFJPQkVTX1NJTVVMQVRFX0lOU05fSAo+ICsjZGVmaW5lIF9SSVNDVl9LRVJO RUxfUFJPQkVTX1NJTVVMQVRFX0lOU05fSAo+ICsKPiArI2RlZmluZSBfX1JJU0NWX0lOU05fRlVO Q1MobmFtZSwgbWFzaywgdmFsKQkJCQlcCj4gK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBy aXNjdl9pbnNuX2lzXyMjbmFtZShwcm9iZV9vcGNvZGVfdCBjb2RlKQlcCj4gK3sJCQkJCQkJCQlc Cj4gKwlCVUlMRF9CVUdfT04ofihtYXNrKSAmICh2YWwpKTsJCQkJCVwKPiArCXJldHVybiAoY29k ZSAmIChtYXNrKSkgPT0gKHZhbCk7CQkJCVwKPiArfQkJCQkJCQkJCVwKPiArYm9vbCBzaW11bGF0 ZV8jI25hbWUodTMyIG9wY29kZSwgdW5zaWduZWQgbG9uZyBhZGRyLAkJCVwKPiArCQkgICAgIHN0 cnVjdCBwdF9yZWdzICpyZWdzKTsKPiArCj4gKyNkZWZpbmUgUklTQ1ZfSU5TTl9SRUpFQ1RFRChu YW1lLCBjb2RlKQkJCQkJXAo+ICsJZG8gewkJCQkJCQkJXAo+ICsJCWlmIChyaXNjdl9pbnNuX2lz XyMjbmFtZShjb2RlKSkgewkJCVwKPiArCQkJcmV0dXJuIElOU05fUkVKRUNURUQ7CQkJCVwKPiAr CQl9CQkJCQkJCVwKPiArCX0gd2hpbGUgKDApCj4gKwo+ICtfX1JJU0NWX0lOU05fRlVOQ1Moc3lz dGVtLAkweDdmLCAweDczKQo+ICtfX1JJU0NWX0lOU05fRlVOQ1MoZmVuY2UsCTB4N2YsIDB4MGYp Cj4gKwo+ICsjZGVmaW5lIFJJU0NWX0lOU05fU0VUX1NJTVVMQVRFKG5hbWUsIGNvZGUpCQkJCVwK PiArCWRvIHsJCQkJCQkJCVwKPiArCQlpZiAocmlzY3ZfaW5zbl9pc18jI25hbWUoY29kZSkpIHsJ CQlcCj4gKwkJCWFwaS0+aGFuZGxlciA9IHNpbXVsYXRlXyMjbmFtZTsJCQlcCj4gKwkJCXJldHVy biBJTlNOX0dPT0RfTk9fU0xPVDsJCQlcCj4gKwkJfQkJCQkJCQlcCj4gKwl9IHdoaWxlICgwKQo+ ICsKPiArX19SSVNDVl9JTlNOX0ZVTkNTKGNfaiwJCTB4ZTAwMywgMHhhMDAxKQo+ICtfX1JJU0NW X0lOU05fRlVOQ1MoY19qciwJMHhmMDA3LCAweDgwMDIpCj4gK19fUklTQ1ZfSU5TTl9GVU5DUyhj X2phbCwJMHhlMDAzLCAweDIwMDEpCj4gK19fUklTQ1ZfSU5TTl9GVU5DUyhjX2phbHIsCTB4ZjAw NywgMHg5MDAyKQo+ICtfX1JJU0NWX0lOU05fRlVOQ1MoY19iZXF6LAkweGUwMDMsIDB4YzAwMSkK PiArX19SSVNDVl9JTlNOX0ZVTkNTKGNfYm5leiwJMHhlMDAzLCAweGUwMDEpCj4gK19fUklTQ1Zf SU5TTl9GVU5DUyhjX2VicmVhaywJMHhmZmZmLCAweDkwMDIpCj4gKwo+ICtfX1JJU0NWX0lOU05f RlVOQ1MoYXVpcGMsCTB4N2YsIDB4MTcpCj4gK19fUklTQ1ZfSU5TTl9GVU5DUyhicmFuY2gsCTB4 N2YsIDB4NjMpCj4gKwo+ICtfX1JJU0NWX0lOU05fRlVOQ1MoamFsLAkJMHg3ZiwgMHg2ZikKPiAr X19SSVNDVl9JTlNOX0ZVTkNTKGphbHIsCTB4NzA3ZiwgMHg2NykKPiArCj4gKyNlbmRpZiAvKiBf UklTQ1ZfS0VSTkVMX1BST0JFU19TSU1VTEFURV9JTlNOX0ggKi8KPiBkaWZmIC0tZ2l0IGEvYXJj aC9yaXNjdi9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMKPiBpbmRl eCBlY2VjMTc3Li5hYzJlNzg2IDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBz LmMKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jCj4gQEAgLTEyLDYgKzEyLDcgQEAK PiAgI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgo+ICAjaW5jbHVkZSA8bGludXgva2RlYnVnLmg+ Cj4gICNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rcHJvYmVz Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tbS5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9pcnEuaD4KPiBAQCAtMTQ1LDYgKzE0NiwxNCBAQCBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X2JyZWFrX2luc25fbGVuZ3RoKHVuc2lnbmVkIGxvbmcg cGMpCj4gIAo+ICBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIGRvX3RyYXBfYnJlYWsoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCj4gIHsKPiArI2lmZGVmIENPTkZJR19LUFJPQkVTCj4gKwlpZiAoa3By b2JlX3NpbmdsZV9zdGVwX2hhbmRsZXIocmVncykpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChr cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHJlZ3MpKQo+ICsJCXJldHVybjsKPiArI2VuZGlmCj4g Kwo+ICAJaWYgKHVzZXJfbW9kZShyZWdzKSkKPiAgCQlmb3JjZV9zaWdfZmF1bHQoU0lHVFJBUCwg VFJBUF9CUktQVCwgKHZvaWQgX191c2VyICopcmVncy0+ZXBjKTsKPiAgI2lmZGVmIENPTkZJR19L R0RCCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vZmF1bHQuYyBiL2FyY2gvcmlzY3YvbW0v ZmF1bHQuYwo+IGluZGV4IGFlN2I3ZmUuLmRhMGMwOGMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNj di9tbS9mYXVsdC5jCj4gKysrIGIvYXJjaC9yaXNjdi9tbS9mYXVsdC5jCj4gQEAgLTEzLDYgKzEz LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4 L3NpZ25hbC5oPgo+ICAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgo+ICsjaW5jbHVkZSA8bGlu dXgva3Byb2Jlcy5oPgo+ICAKPiAgI2luY2x1ZGUgPGFzbS9wZ2FsbG9jLmg+Cj4gICNpbmNsdWRl IDxhc20vcHRyYWNlLmg+Cj4gQEAgLTQwLDYgKzQxLDkgQEAgYXNtbGlua2FnZSB2b2lkIGRvX3Bh Z2VfZmF1bHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gIAl0c2sgPSBjdXJyZW50Owo+ICAJbW0g PSB0c2stPm1tOwo+ICAKPiArCWlmIChrcHJvYmVfcGFnZV9mYXVsdChyZWdzLCBjYXVzZSkpCj4g KwkJcmV0dXJuOwo+ICsKPiAgCS8qCj4gIAkgKiBGYXVsdC1pbiBrZXJuZWwtc3BhY2UgdmlydHVh bCBtZW1vcnkgb24tZGVtYW5kLgo+ICAJICogVGhlICdyZWZlcmVuY2UnIHBhZ2UgdGFibGUgaXMg aW5pdF9tbS5wZ2QuCj4gLS0gCj4gMi43LjQKPiAKCgotLSAKTWFzYW1pIEhpcmFtYXRzdSA8bWhp cmFtYXRAa2VybmVsLm9yZz4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtcmlzY3YK