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.3 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,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 AACBCC433E0 for ; Mon, 25 May 2020 04:12:26 +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 752A7204EC for ; Mon, 25 May 2020 04:12:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="jXPiyVBu"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=sholland.org header.i=@sholland.org header.b="JQknSTKO"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="zJ1fXNvn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 752A7204EC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sholland.org 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:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yEIkBcTm19Z4VOsLEzM615GXMttpxxOyu8smvsgWxcA=; b=jXPiyVBuVWwZwE suZh4DqlRDR8q+ldaAojaLcKbdtdJqwCKGg/ITC/atfKrYgtryPU/slhkhGf5mEQw75AB6Z+kd0sA g1pikO+G9RHvwTDVUAmf+PybJ40oMfW+u7iI8kCg3DzeyO/EKSXVTozwuLtzbeB2FaPO+hIlcW4vU gsuo4xA9OapA7M6vrp1ZHOIiUTS3NAsBm9LXNrPsuKp9lcpcfOybZBoD+ZFi+lABlvkjCZsOK7fvX raVgDrJMn9ueALWlKnTYSA/o8uTF7fMGIM/Dbn2Cx4hriIcMxf8b4L5Po0tEc1/cqz9v4BIJP54rA nGO501kOwthwFuQdfXQg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jd4TK-0008M2-7E; Mon, 25 May 2020 04:12:18 +0000 Received: from new1-smtp.messagingengine.com ([66.111.4.221]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jd4TG-0008L0-8S for linux-arm-kernel@lists.infradead.org; Mon, 25 May 2020 04:12:16 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailnew.nyi.internal (Postfix) with ESMTP id 71888580083; Mon, 25 May 2020 00:12:06 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Mon, 25 May 2020 00:12:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-type:content-transfer-encoding; s=fm2; bh=8 sfE3Rj57EXEb0jRYnEljRCSEHaUZbE+p8wZWGAhY6k=; b=JQknSTKOuNnJEf3Zo rCQkybtAbsW8Vofu18b+NlL7ni3R8OyOhkuUzsHDPXpUjFB5OQnf/wr9SXsA6Ojd K9y4jr9tIann9UxXb6cgxG7uUK27Uxc75tZaXfV+VJcXY/1KHJUhW/PbF0Tz+iDE MqYMlvRqIbqhGWehoQQvraekw+MfrjVEQMzUICkj88zWRf4LXNZ24p0vvn4rJ7A4 Wu79SFHwxHMJxAa61bAQUAOtsrjPobnwUEoQH1vIMrjmG2lZwdd8HX/zwfl4aRbp HaKGR1sPMj2TNMiUuS1l+HGFVQk0EXpUPvYZPNEQIZimmKukK22f/UVd4JRIsQLc yaY9w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; bh=8sfE3Rj57EXEb0jRYnEljRCSEHaUZbE+p8wZWGAhY 6k=; b=zJ1fXNvn4vtcrQFkf+F7reH6Go3EdR9vY7TRsCY5RPBfh/NF2WMiCZPJ8 eh43FpmHtJBhiKN8DRHkdw10pBiBzmKBKpXDYx3/umSPCG8JZ13vu+DsHALjjQZ0 nR/d7/ssrzm50rw++YuI5A/EgbCQ+y3Ed4yECZNN3hSvIZCxFedcssq98v/QfkKZ md7Cj0/5sZ706NH8MbkbrmAbV3nJtU6RgeJcFLLWDVhX0qTEJURUvNbS2yzNf7eE u4uxirjaEahSKg0m23ReY9kDucoM8tYQJvZGg4MErA97v5CiOVuVMT3p4VRmKtMY +BFerLfa2y+U9lmFT3AqFyd5nKMgA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrudduledgjeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhkffffgggjggtgfesthekredttdefjeenucfhrhhomhepufgrmhhu vghlucfjohhllhgrnhguuceoshgrmhhuvghlsehshhholhhlrghnugdrohhrgheqnecugg ftrfgrthhtvghrnhepvdehudeujeeileevjeekffdvjeeludfhfedukeeiffetuefgkeet heehkeffueetnecuffhomhgrihhnpehlihhnuhigqdhsuhhngihirdhorhhgpdhshhholh hlrghnugdrohhrghenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgv rhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholh hlrghnugdrohhrgh X-ME-Proxy: Received: from [192.168.50.169] (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) by mail.messagingengine.com (Postfix) with ESMTPA id 5EFC6306654D; Mon, 25 May 2020 00:12:02 -0400 (EDT) Subject: Re: [PATCH 1/9] irqchip/sun6i-r: Switch to a stacked irqchip driver To: Marc Zyngier References: <20200113044936.26038-1-samuel@sholland.org> <20200113044936.26038-2-samuel@sholland.org> <22bbdefdc0060e1eacb2c3a41dffebe4@kernel.org> From: Samuel Holland Message-ID: Date: Sun, 24 May 2020 23:12:01 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <22bbdefdc0060e1eacb2c3a41dffebe4@kernel.org> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200524_211214_439978_6C0B900A X-CRM114-Status: GOOD ( 31.32 ) 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 , devicetree@vger.kernel.org, Jason Cooper , Catalin Marinas , linux-sunxi@googlegroups.com, Russell King , Maxime Ripard , linux-kernel@vger.kernel.org, Chen-Yu Tsai , Rob Herring , Thomas Gleixner , Will Deacon , 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 SGVsbG8sIGFuZCB0aGFua3MgZm9yIHRoZSBmZWVkYmFjayEKCkkga25vdyB0aGlzIGlzIHF1aXRl IHRoZSBkZWxheSBpbiByZXNwb25kaW5nOyBJIHdhbnRlZCB0byBtYWtlIHN1cmUgbXkKdW5kZXJz dGFuZGluZyBvZiB0aGUgaGFyZHdhcmUgd2FzIGFzIGNsZWFyIGFzIHBvc3NpYmxlIGJlZm9yZSBz ZW5kaW5nIGEgdjIuCgpBZnRlciBleHBlcmltZW50YXRpb24sIEkgY2FtZSB1cCB3aXRoIGEgZGlh Z3JhbSBkZXNjcmliaW5nIHRoZSBoYXJkd2FyZQphcmNoaXRlY3R1cmUsIGF2YWlsYWJsZSBoZXJl OgpodHRwczovL2xpbnV4LXN1bnhpLm9yZy9pbWFnZXMvNS81Yy9SX0lOVEMucG5nIChQTkcpCmh0 dHBzOi8vc2hvbGxhbmQub3JnL2ZpbGVzL1JfSU5UQ192Mi5zdmcgKFNWRykKCkJhc2VkIG9uIHRo YXQsIHlvdXIgZmVlZGJhY2ssIGFuZCBzaW1pbGFyIGV4YW1wbGVzIGxpa2UgdGhlIGdyZWF0IGV4 cGxhbmF0aW9uIG9mCnRoZSByb2J1c3RuZXNzIHJlcXVpcmVtZW50cyBpbiA2ZGQ4NTk1MDgzMzYg KCJncGlvOiB6eW5xOiBGaXggSVJRIGhhbmRsZXJzIiksIEkKdGhpbmsgdjIgd2lsbCB3b3JrIHBy b3Blcmx5IGZvciBib3RoIGVkZ2UgYW5kIGxldmVsIGludGVycnVwdHMuIEkgdGVzdGVkIGJvdGgK dHJpZ2dlcnMsIGFsYmVpdCB3aXRoIHRoZSBzYW1lIHNvdXJjZSBvZiAobGV2ZWwpIGludGVycnVw dHMgY29ubmVjdGVkIHRvIHRoZSBOTUkKcGluLgoKT24gMS8yMC8yMCA0OjUyIEFNLCBNYXJjIFp5 bmdpZXIgd3JvdGU6Cj4gSGkgU2FtdWVsLAo+IAo+IE9uIDIwMjAtMDEtMTMgMDU6NDksIFNhbXVl bCBIb2xsYW5kIHdyb3RlOgo+PiBUaGUgUl9JTlRDIGluIHRoZSBBMzEgYW5kIG5ld2VyIHN1bjhp L3N1bjUwaSBTb0NzIGlzIG1vcmUgc2ltaWxhciB0byB0aGUKPj4gb3JpZ2luYWwgc3VuNGkgaW50 ZXJydXB0IGNvbnRyb2xsZXIgdGhhbiB0aGUgc3VuN2kvc3VuOWkgTk1JIGNvbnRyb2xsZXIuCj4+ IEl0IGlzIHVzZWQgZm9yIHR3byBkaXN0aW5jdCBwdXJwb3NlczoKPj4gwqAxKSBUbyBjb250cm9s IHRoZSB0cmlnZ2VyIGFuZCBtYXNrIGZvciB0aGUgTk1JIGlucHV0IHBpbgo+PiDCoDIpIFRvIHBy b3ZpZGUgdGhlIGludGVycnVwdCBpbnB1dCBmb3IgdGhlIEFSSVNDIGNvcHJvY2Vzc29yCj4+Cj4+ IEFzIHRoaXMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaXMgbm90IGRvY3VtZW50ZWQsIGluZm9ybWF0 aW9uIGFib3V0IGl0Cj4+IGNvbWVzIGZyb20gcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgQlNQLXBy b3ZpZGVkIEFSSVNDIGZpcm13YXJlLgo+Pgo+PiBMaWtlIHRoZSBvcmlnaW5hbCBzdW40aSBpbnRl cnJ1cHQgY29udHJvbGxlciwgaXQgaGFzOgo+PiDCoC0gQSBWRUNUT1JfUkVHIGF0IDB4MDAgKGNv bmZpZ3VyYWJsZSB2aWEgdGhlIEJBU0VfQUREUl9SRUcgYXQgMHgwNCkKPj4gwqAtIEEgTk1JX0NU UkxfUkVHLCBQRU5ESU5HX1JFRywgYW5kIEVOQUJMRV9SRUcgYXMgdXNlZCBieSBib3RoIHRoZQo+ PiDCoMKgIHN1bjRpIGFuZCBzdW54aS1ubWkgZHJpdmVycwo+PiDCoC0gQSBNQVNLX1JFRyBhdCAw eDUwCj4+Cj4+IERpZmZlcmVuY2VzIGZyb20gdGhlIHN1bjRpIGludGVycnVwdCBjb250cm9sbGVy IGFwcGVhciB0byBiZToKPj4gwqAtIEl0IGlzIG9ubHkga25vd24gdG8gaGF2ZSBvbmUgcmVnaXN0 ZXIgb2YgZWFjaCBraW5kIChtYXggMzIgaW5wdXRzKQo+PiDCoC0gVGhlcmUgaXMgbm8gRklRLXJl bGF0ZWQgbG9naWMKPj4gwqAtIFRoZXJlIGlzIG5vIGludGVycnVwdCBwcmlvcml0eSBsb2dpYwo+ Pgo+PiBJbiBvcmRlciB0byBmdWxmaWxsIGl0cyB0d28gcHVycG9zZXMsIHRoaXMgaGFyZHdhcmUg YmxvY2sgY29tYmluZXMgdHdvCj4+IHR5cGVzIG9mIElSUXMuIEZpcnN0LCB0aGUgTk1JIHBpbiBp cyByb3V0ZWQgdG8gdGhlICJJUlEgMCIgaW5wdXQgb24gdGhpcwo+PiBjaGlwLCB3aXRoIGEgdHJp Z2dlciB0eXBlIGNvbnRyb2xsZWQgYnkgdGhlIE5NSV9DVFJMX1JFRy4gVGhlIChtYXNrZWQpCj4+ ICJJUlEgMCBwZW5kaW5nIiBvdXRwdXQgZnJvbSB0aGlzIGNoaXAgaXMgdGhlbiByb3V0ZWQgdG8g YSBub24tbWFza2FibGUKPj4gU1BJIElSUSBpbnB1dCBvbiB0aGUgR0lDLCBhcyBJUlFfVFlQRV9M RVZFTF9ISUdILiBJbiBvdGhlciB3b3JkcywgYml0IDAKPiAKPiBJIG9iamVjdCB0byB0aGUgIm5v bi1tYXNrYWJsZSIgd29yZGluZyBoZXJlLiBJdCBtYXkgYmUgbm9uLW1hc2thYmxlCj4gYXQgdGhp cyBpcnFjaGlwIGxldmVsIChhbmQgeWV0IHlvdSBzZWVtIHRvIGhhdmUgY29kZSB0byB0aGF0IGVm ZmVjdCksCj4gYnV0IHRoZSBHSUMgZGVmaW5pdGVseSBzaG91bGQgYmUgYWJsZSB0byBtYXNrIHRo aW5ncy4KCllvdSdyZSAxMDAlIGNvcnJlY3QgaGVyZS4gSSBoYWQgdGhvdWdodCBJUlEgMCB3YXMg bm9uLW1hc2thYmxlIGJlY2F1c2UgdGhlIE1BU0sKcmVnaXN0ZXIgZGlkbid0IGFmZmVjdCB0aGUg SVJRIGJlaW5nIHNlbnQgdG8gdGhlIEdJQy4gRGlzYWJsaW5nIHRoZSBJUlEgdmlhCkdJQ0RfSUNF TkFCTEVSIGRvZXMgaW5kZWVkIHdvcmsuCgo+PiBvZiBFTkFCTEVfUkVHIGFuZCBNQVNLX1JFRyAq ZG8qIGFmZmVjdCB0aGUgSVJRcyBzZWVuIGF0IHRoZSBHSUMuCj4+Cj4+IFRoZSBOTUkgaXMgdGhl biBmb2xsb3dlZCBieSBhIGNvbnRpZ3VvdXMgYmxvY2sgb2YgKGF0IGxlYXN0KSAxNSBJUlEKPj4g aW5wdXRzIHRoYXQgYXJlIGNvbm5lY3RlZCAqaW4gcGFyYWxsZWwqIHRvIGJvdGggUl9JTlRDIGFu ZCB0aGUgR0lDLiBPcgo+PiBpbiBvdGhlciB3b3JkcywgdGhlIG90aGVyIGJpdHMgb2YgRU5BQkxF X1JFRyBhbmQgTUFTS19SRUcgKmRvIG5vdCoKPj4gYWZmZWN0IHRoZSBJUlFzIHNlZW4gYXQgdGhl IEdJQy4KPj4KPj4gRmluYWxseSwgdGhlIGdsb2JhbCAiSVJRIHBlbmRpbmciIG91dHB1dCBmcm9t IFJfSU5UQyBpcyBjb25uZWN0ZWQgdG8gdGhlCj4+ICJleHRlcm5hbCBpbnRlcnJ1cHQiIGlucHV0 IG9mIHRoZSBBUklTQyBDUFUgKGFuIE9SMTIwMCkuCj4+Cj4+IEJlY2F1c2Ugb2YgdGhlIDE6MSBj b3JyZXNwb25kZW5jZSBiZXR3ZWVuIFJfSU5UQyBhbmQgR0lDIGlucHV0cywgdGhpcyBpcwo+PiBh IHBlcmZlY3Qgc2NlbmFyaW8gZm9yIHVzaW5nIGEgc3RhY2tlZCBpcnFjaGlwIGRyaXZlci4gV2Ug d2FudCB0byBob29rCj4+IGludG8gZW5hYmxpbmcvZGlzYWJsaW5nL21hc2tpbmcgSVJRcyB0byBh ZGQgbW9yZSBmZWF0dXJlcyB0byB0aGUgR0lDCj4+IChzcGVjaWZpY2FsbHkgdG8gYWxsb3cgbWFz a2luZyB0aGUgTk1JIGFuZCBzZXR0aW5nIGl0cyB0cmlnZ2VyIHR5cGUpLAo+PiBidXQgd2UgZG9u J3QgbmVlZCB0byBhY3R1YWxseSAqaGFuZGxlKiB0aGUgSVJRLgo+Pgo+PiBBbmQgc2luY2UgUl9J TlRDIGlzIGluIHRoZSBhbHdheXMtb24gcG93ZXIgZG9tYWluLCBhbmQgaXRzIG91dHB1dCBpcwo+ PiBjb25uZWN0ZWQgZGlyZWN0bHkgaW4gdG8gdGhlIHBvd2VyIG1hbmFnZW1lbnQgY29wcm9jZXNz b3IsIGEgc3RhY2tlZAo+PiBpcnFjaGlwIGRyaXZlciBwcm92aWRlcyBhIHNpbXBsZSB3YXkgdG8g YWRkIHdha2V1cCBzdXBwb3J0IHRvIHRoaXMgc2V0Cj4+IG9mIElSUXMuIFRoYXQgaXMgYSBmdXR1 cmUgcGF0Y2g7IGZvciBub3csIGp1c3QgdGhlIE5NSSBpcyBtb3ZlZCBvdmVyLgo+Pgo+PiBUaGlz IGRyaXZlciBrZWVwcyB0aGUgc2FtZSBEVCBiaW5kaW5nIGFzIHRoZSBleGlzdGluZyBkcml2ZXIu IFRoZQo+PiAiaW50ZXJydXB0IiBwcm9wZXJ0eSBvZiB0aGUgUl9JTlRDIG5vZGUgaXMgdXNlZCB0 byBkZXRlcm1pbmUgMSkgdGhlCj4+IG9mZnNldCBiZXR3ZWVuIEdJQyBhbmQgUl9JTlRDIGh3aXJx IG51bWJlcnMgYW5kIDIpIHRoZSB0eXBlIG9mIHRyaWdnZXIKPj4gYmV0d2VlbiB0aGUgUl9JTlRD ICJJUlEgMCBwZW5kaW5nIiBvdXRwdXQgYW5kIHRoZSBHSUMgTk1JIGlucHV0Lgo+Pgo+PiBUaGlz IGNvbW1pdCBtb3N0bHkgcmV2ZXJ0cyBjb21taXQgMTczYmRhNTNiMzQwICgiaXJxY2hpcC9zdW54 aS1ubWk6Cj4+IFN1cHBvcnQgc3VuNmktYTMxLXItaW50YyBjb21wYXRpYmxlIikuCj4+Cj4+IFNp Z25lZC1vZmYtYnk6IFNhbXVlbCBIb2xsYW5kIDxzYW11ZWxAc2hvbGxhbmQub3JnPgo+PiAtLS0K Pj4gwqBhcmNoL2FybS9tYWNoLXN1bnhpL0tjb25maWfCoMKgwqDCoCB8wqDCoCAxICsKPj4gwqBh cmNoL2FybTY0L0tjb25maWcucGxhdGZvcm1zwqDCoMKgIHzCoMKgIDEgKwo+PiDCoGRyaXZlcnMv aXJxY2hpcC9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoGRyaXZlcnMvaXJx Y2hpcC9pcnEtc3VuNmktci5jwqDCoCB8IDIyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+PiDCoGRyaXZlcnMvaXJxY2hpcC9pcnEtc3VueGktbm1pLmMgfMKgIDI2ICstLS0KPj4g wqA1IGZpbGVzIGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPj4g wqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9pcnFjaGlwL2lycS1zdW42aS1yLmMKPj4KPj4g ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc3VueGkvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gt c3VueGkvS2NvbmZpZwo+PiBpbmRleCBlZWFkYjFhNGRjZmUuLmVmMWNjMjU5MDJiNSAxMDA2NDQK Pj4gLS0tIGEvYXJjaC9hcm0vbWFjaC1zdW54aS9LY29uZmlnCj4+ICsrKyBiL2FyY2gvYXJtL21h Y2gtc3VueGkvS2NvbmZpZwo+PiBAQCAtNiw2ICs2LDcgQEAgbWVudWNvbmZpZyBBUkNIX1NVTlhJ Cj4+IMKgwqDCoMKgIHNlbGVjdCBDTEtTUkNfTU1JTwo+PiDCoMKgwqDCoCBzZWxlY3QgR0VORVJJ Q19JUlFfQ0hJUAo+PiDCoMKgwqDCoCBzZWxlY3QgR1BJT0xJQgo+PiArwqDCoMKgIHNlbGVjdCBJ UlFfRE9NQUlOX0hJRVJBUkNIWQo+PiDCoMKgwqDCoCBzZWxlY3QgUElOQ1RSTAo+PiDCoMKgwqDC oCBzZWxlY3QgUE1fT1BQCj4+IMKgwqDCoMKgIHNlbGVjdCBTVU40SV9USU1FUgo+PiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9LY29uZmlnLnBsYXRmb3JtcyBiL2FyY2gvYXJtNjQvS2NvbmZpZy5w bGF0Zm9ybXMKPj4gaW5kZXggMTZkNzYxNDc1YTg2Li5kMjgyZDBhMWQxN2QgMTAwNjQ0Cj4+IC0t LSBhL2FyY2gvYXJtNjQvS2NvbmZpZy5wbGF0Zm9ybXMKPj4gKysrIGIvYXJjaC9hcm02NC9LY29u ZmlnLnBsYXRmb3Jtcwo+PiBAQCAtMTcsNiArMTcsNyBAQCBjb25maWcgQVJDSF9TVU5YSQo+PiDC oMKgwqDCoCBib29sICJBbGx3aW5uZXIgc3VueGkgNjQtYml0IFNvQyBGYW1pbHkiCj4+IMKgwqDC oMKgIHNlbGVjdCBBUkNIX0hBU19SRVNFVF9DT05UUk9MTEVSCj4+IMKgwqDCoMKgIHNlbGVjdCBH RU5FUklDX0lSUV9DSElQCj4+ICvCoMKgwqAgc2VsZWN0IElSUV9ET01BSU5fSElFUkFSQ0hZCj4+ IMKgwqDCoMKgIHNlbGVjdCBQSU5DVFJMCj4+IMKgwqDCoMKgIHNlbGVjdCBSRVNFVF9DT05UUk9M TEVSCj4+IMKgwqDCoMKgIGhlbHAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9NYWtl ZmlsZSBiL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZQo+PiBpbmRleCBjYzdjNDM5MzJmMTYuLjQx OTk2ZDk4YzMwYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlCj4+ICsr KyBiL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZQo+PiBAQCAtMjQsNiArMjQsNyBAQCBvYmotJChD T05GSUdfT1IxS19QSUMpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBpcnEtb3Ixay1waWMubwo+ PiDCoG9iai0kKENPTkZJR19PUklPTl9JUlFDSElQKcKgwqDCoMKgwqDCoMKgICs9IGlycS1vcmlv bi5vCj4+IMKgb2JqLSQoQ09ORklHX09NQVBfSVJRQ0hJUCnCoMKgwqDCoMKgwqDCoCArPSBpcnEt b21hcC1pbnRjLm8KPj4gwqBvYmotJChDT05GSUdfQVJDSF9TVU5YSSnCoMKgwqDCoMKgwqDCoCAr PSBpcnEtc3VuNGkubwo+PiArb2JqLSQoQ09ORklHX0FSQ0hfU1VOWEkpwqDCoMKgwqDCoMKgwqAg Kz0gaXJxLXN1bjZpLXIubwo+PiDCoG9iai0kKENPTkZJR19BUkNIX1NVTlhJKcKgwqDCoMKgwqDC oMKgICs9IGlycS1zdW54aS1ubWkubwo+PiDCoG9iai0kKENPTkZJR19BUkNIX1NQRUFSM1hYKcKg wqDCoMKgwqDCoMKgICs9IHNwZWFyLXNoaXJxLm8KPj4gwqBvYmotJChDT05GSUdfQVJNX0dJQynC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGlycS1naWMubyBpcnEtZ2ljLWNvbW1vbi5vCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLXN1bjZpLXIuYyBiL2RyaXZlcnMvaXJxY2hp cC9pcnEtc3VuNmktci5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uMzdiNmU5YzYwYmY4Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9pcnFj aGlwL2lycS1zdW42aS1yLmMKPj4gQEAgLTAsMCArMSwyMjAgQEAKPj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4gKy8vCj4+ICsvLyBBbGx3aW5uZXIgQTMxIGFu ZCBuZXdlciBTb0NzIFJfSU5UQyBkcml2ZXIKPj4gKy8vCj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51 eC9pcnEuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pcnFjaGlwLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvaXJxZG9tYWluLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPj4gKyNpbmNsdWRlIDxs aW51eC9vZl9hZGRyZXNzLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+Cj4+ICsKPj4g KyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmg+Cj4+ ICsKPj4gKyNkZWZpbmUgTk1JX0hXSVJRwqDCoMKgwqDCoMKgwqAgMAo+PiArCj4+ICsjZGVmaW5l IFNVTjZJX1JfSU5UQ19OUl9JUlFTwqDCoMKgIDE2Cj4+ICsKPj4gKyNkZWZpbmUgU1VONklfUl9J TlRDX0NUUkzCoMKgwqAgMHgwYwo+PiArI2RlZmluZSBTVU42SV9SX0lOVENfUEVORElOR8KgwqDC oCAweDEwCj4+ICsjZGVmaW5lIFNVTjZJX1JfSU5UQ19FTkFCTEXCoMKgwqAgMHg0MAo+PiArI2Rl ZmluZSBTVU42SV9SX0lOVENfTUFTS8KgwqDCoCAweDUwCj4+ICsKPj4gK2VudW0gewo+PiArwqDC oMKgIFNVTlhJX1NSQ19UWVBFX0xFVkVMX0xPVyA9IDAsCj4+ICvCoMKgwqAgU1VOWElfU1JDX1RZ UEVfRURHRV9GQUxMSU5HLAo+PiArwqDCoMKgIFNVTlhJX1NSQ19UWVBFX0xFVkVMX0hJR0gsCj4+ ICvCoMKgwqAgU1VOWElfU1JDX1RZUEVfRURHRV9SSVNJTkcsCj4+ICt9Owo+IAo+IEl0IGlzIHVu dXN1YWwgdG8gdXNlIGFuIGVudW0gZm9yIHZhbHVlcyB0aGF0IGdldCBkaXJlY3RseSBwcm9ncmFt bWVkCj4gaW50byB0aGUgSFcuCgpUaGVzZSBkZWZpbml0b25zIG1hdGNoIHRoZSBleGlzdGluZyBk cml2ZXIgdGhpcyB3YXMgc3BsaXQgZnJvbS4gSSB3aWxsIGlubGluZQp0aGVzZSBmb3IgdjIuCgo+ PiArCj4+ICtzdGF0aWMgdm9pZCBfX2lvbWVtICpiYXNlOwo+PiArc3RhdGljIGlycV9od19udW1i ZXJfdCBwYXJlbnRfb2Zmc2V0Owo+PiArc3RhdGljIHUzMiBwYXJlbnRfdHlwZTsKPj4gKwo+PiAr c3RhdGljIHZvaWQgc3VuNmlfcl9pbnRjX2lycV9lbmFibGUoc3RydWN0IGlycV9kYXRhICpkYXRh KQo+PiArewo+PiArwqDCoMKgIGlmIChkYXRhLT5od2lycSA9PSBOTUlfSFdJUlEpCj4+ICvCoMKg wqDCoMKgwqDCoCB3cml0ZWwoQklUKE5NSV9IV0lSUSksIGJhc2UgKyBTVU42SV9SX0lOVENfRU5B QkxFKTsKPiAKPiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgX3JlbGF4ZWQoKSBhY2Nlc3NvcnMuCgpJ J3ZlIGRvbmUgdGhpcyBmb3IgdjIuCgo+PiArCj4+ICvCoMKgwqAgaXJxX2NoaXBfZW5hYmxlX3Bh cmVudChkYXRhKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgc3VuNmlfcl9pbnRjX2lycV9k aXNhYmxlKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoZGF0YS0+ aHdpcnEgPT0gTk1JX0hXSVJRKQo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGVsKDAsIGJhc2UgKyBT VU42SV9SX0lOVENfRU5BQkxFKTsKPj4gKwo+PiArwqDCoMKgIGlycV9jaGlwX2Rpc2FibGVfcGFy ZW50KGRhdGEpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBzdW42aV9yX2ludGNfaXJxX21h c2soc3RydWN0IGlycV9kYXRhICpkYXRhKQo+PiArewo+PiArwqDCoMKgIGlmIChkYXRhLT5od2ly cSA9PSBOTUlfSFdJUlEpCj4+ICvCoMKgwqDCoMKgwqDCoCB3cml0ZWwoQklUKE5NSV9IV0lSUSks IGJhc2UgKyBTVU42SV9SX0lOVENfTUFTSyk7Cj4+ICsKPj4gK8KgwqDCoCBpcnFfY2hpcF9tYXNr X3BhcmVudChkYXRhKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgc3VuNmlfcl9pbnRjX2ly cV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkYXRhKQo+PiArewo+PiArwqDCoMKgIGlmIChkYXRh LT5od2lycSA9PSBOTUlfSFdJUlEpCj4+ICvCoMKgwqDCoMKgwqDCoCB3cml0ZWwoMCwgYmFzZSAr IFNVTjZJX1JfSU5UQ19NQVNLKTsKPj4gKwo+PiArwqDCoMKgIGlycV9jaGlwX3VubWFza19wYXJl bnQoZGF0YSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHN1bjZpX3JfaW50Y19pcnFfZW9p KHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoZGF0YS0+aHdpcnEg PT0gTk1JX0hXSVJRKQo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGVsKEJJVChOTUlfSFdJUlEpLCBi YXNlICsgU1VONklfUl9JTlRDX1BFTkRJTkcpOwo+IAo+IEFyZSB5b3Ugc3VyZSBhYm91dCB0aGlz PyBDbGVhcmluZyB0aGUgcGVuZGluZyBiaXQgaXMgbm90IHF1aXRlIGFuIEVPSS4KPiBJdCB3b24n dCBodXJ0IGEgbGV2ZWwgaW50ZXJydXB0LCBidXQgY291bGQgYmUgcHJldHR5IGRlYWRseSB3aXRo Cj4gZWRnZSBzaWduYWxpbmcgKHlvdSdkIGxvb3NlIHRoYXQgaW50ZXJydXB0KS4gQnV0IGRvZXMg dGhpcyByZWdpc3Rlcgo+IGFjdHVhbGx5IGxhdGNoIHRoZSBpbnB1dCB1bnRpbCB5b3UgY2xlYXIg aXQ/IE9yIGRvZXMgaXQgZm9sbG93IHRoZQo+IGxldmVsIG9mIGl0cyBpbnB1dD8KCkZvciBiaXQg MCAodGhlIG9ubHkgb25lIExpbnV4IGNhcmVzIGFib3V0KSwgdGhlcmUgaXMgYSBsYXRjaC4gVGhp cyBsYXRjaCBnZXRzCnNldCB3aGVuZXZlciB0aGUgSVJRIGlzIHRyaWdnZXJlZCAob25jZSBmb3Ig ZWRnZSwgY29udGludW91c2x5IGZvciBsZXZlbCksIGFuZAppdCBnZXRzIHJlc2V0IGJ5IHdyaXRp bmcgMSB0byBQRU5ESU5HLgoKV2hhdCBJJ3ZlIGRvbmUgZm9yIHYyIGlzIHNldCB0aGlzIGJpdCBp biAuaXJxX2FjayBmb3IgZWRnZSwgYW5kIC5pcnFfZW9pIGZvciBsZXZlbC4KCj4+ICsKPj4gK8Kg wqDCoCBpcnFfY2hpcF9lb2lfcGFyZW50KGRhdGEpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50 IHN1bjZpX3JfaW50Y19pcnFfc2V0X3R5cGUoc3RydWN0IGlycV9kYXRhICpkYXRhLCB1bnNpZ25l ZCBpbnQgdHlwZSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoZGF0YS0+aHdpcnEgPT0gTk1JX0hXSVJR KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgc3JjX3R5cGU7Cj4+ICsKPj4gK8KgwqDCoMKgwqDC oMKgIHN3aXRjaCAodHlwZSkgewo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBJUlFfVFlQRV9FREdF X0ZBTExJTkc6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyY190eXBlID0gU1VOWElfU1JD X1RZUEVfRURHRV9GQUxMSU5HOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4g K8KgwqDCoMKgwqDCoMKgIGNhc2UgSVJRX1RZUEVfRURHRV9SSVNJTkc6Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNyY190eXBlID0gU1VOWElfU1JDX1RZUEVfRURHRV9SSVNJTkc7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBJUlFf VFlQRV9MRVZFTF9ISUdIOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcmNfdHlwZSA9IFNV TlhJX1NSQ19UWVBFX0xFVkVMX0hJR0g7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBJUlFfVFlQRV9OT05FOgo+IAo+IFdoYXQgZG9lcyAi SVJRX1RZUEVfTk9ORSIgbWVhbiBoZXJlPwoKSXQgbWVhbnMgdGhhdCBJUlFfVFlQRV9OT05FIHdh cyBwdXQgaW4gdGhlIHNwZWNpZmllciBpbiB0aGUgZGV2aWNlIHRyZWUgKHRoaXMgaXMKY29waWVk IGZyb20gdGhlIG90aGVyIGRyaXZlcikuIFNpbmNlIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwg SSd2ZSByZW1vdmVkIHRoaXMKY2FzZSBpbiB2Mi4KCj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIElS UV9UWVBFX0xFVkVMX0xPVzoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX3R5cGUgPSBT VU5YSV9TUkNfVFlQRV9MRVZFTF9MT1c7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiArwqDCoMKgwqDCoMKgwqAgZGVmYXVsdDoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cHJfZXJyKCIlcE9GOiBpbnZhbGlkIHRyaWdnZXIgdHlwZSAlZCBmb3IgSVJRICVkXG4iLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlycV9kb21haW5fZ2V0X29mX25v ZGUoZGF0YS0+ZG9tYWluKSwgdHlwZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkYXRhLT5pcnEpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVC QURSOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGVsKHNyY190 eXBlLCBiYXNlICsgU1VONklfUl9JTlRDX0NUUkwpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBp cnFkX3NldF90cmlnZ2VyX3R5cGUoZGF0YSwgdHlwZSk7Cj4gCj4gSXQgaXMgb2RkIHRvIHVwZGF0 ZSB0aGlzIGZyb20gYSBkcml2ZXIuIFNwZWNpYWxseSB0aGF0IHlvdSBjaGFuZ2UgaXQKPiBiZWZv cmUgZmluZGluZyBvdXQgaWYgdGhlIHBhcmVudCBjYWxsIGhhcyBzdWNjZWVkZWQgb3Igbm90LgoK WWVzLCBJJ20gbm90IHN1cmUgd2hhdCBJIHdhcyBkb2luZyB0aGVyZS4gSSd2ZSByZW1vdmVkIHRo aXMuCgo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBTZW5kIHRoZSBSX0lOVEMgLT4gR0lDIHRy aWdnZXIgdHlwZSB0byB0aGUgR0lDIGRyaXZlci4gKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHR5cGUg PSBwYXJlbnRfdHlwZTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gaXJxX2No aXBfc2V0X3R5cGVfcGFyZW50KGRhdGEsIHR5cGUpOwo+IAo+IEhhbGYgb2YgdGhlIGFib3ZlIHNp Z25hbGluZyBtb2RlcyBhcmUgaW52YWxpZCBmb3IgdGhlIEdJQy4gRG9lcyB0aGlzCj4gd2lkZ2V0 IGFjdHVhbGx5IGludmVydCB0aGUgc2lnbmFsbGluZyB3aGVuIHRoZSBpbnB1dCBpcyBlaXRoZXIK PiBsZXZlbCBsb3cgb3IgZmFsbGluZyBlZGdlPwoKWWVzLiBUaGUgc2lnbmFsIHNlbnQgdG8gdGhl IEdJQyBpcyBlZmZlY3RpdmVseSBiaXQgMCBvZiB0aGUgUEVORElORyByZWdpc3Rlci4gU28KaXQn cyBhICIxIiB3aGVuIHRoZSBJUlEgaXMgdHJpZ2dlcmVkLCByZWdhcmRsZXNzIG9mIHRoZSBwaHlz aWNhbCBwaW4gdHJpZ2dlciB0eXBlLgoKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBpcnFf Y2hpcCBzdW42aV9yX2ludGNfY2hpcCA9IHsKPj4gK8KgwqDCoCAubmFtZcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPSAic3VuNmktci1pbnRjIiwKPj4gK8KgwqDCoCAuaXJxX2VuYWJsZcKgwqDCoMKg wqDCoMKgID0gc3VuNmlfcl9pbnRjX2lycV9lbmFibGUsCj4+ICvCoMKgwqAgLmlycV9kaXNhYmxl wqDCoMKgwqDCoMKgwqAgPSBzdW42aV9yX2ludGNfaXJxX2Rpc2FibGUsCj4+ICvCoMKgwqAgLmly cV9tYXNrwqDCoMKgwqDCoMKgwqAgPSBzdW42aV9yX2ludGNfaXJxX21hc2ssCj4+ICvCoMKgwqAg LmlycV91bm1hc2vCoMKgwqDCoMKgwqDCoCA9IHN1bjZpX3JfaW50Y19pcnFfdW5tYXNrLAo+IAo+ IFdoYXQgaXMgdGhlIHVwc2hvdCBvZiBoYXZpbmcgYm90aCBlbmFibGUvZGlzYWJsZSBhbmQgbWFz ay91bm1hc2s/Cj4gR2l2ZW4gdGhhdCB0aGUgR0lDIG9ubHkgc3VwcG9ydHMgdGhlIGxhdHRlciwg SSdkIGV4cGVjdCB0aGlzIGRyaXZlcgo+IHRvIGxlYXZlIGV2ZXJ5dGhpbmcgZW5hYmxlZCwgYW5k IG9ubHkgZGVhbCB3aXRoIG1hc2svdW5tYXNrLgoKVGhpcyBtYWtlcyBzZW5zZS4gSSd2ZSBkb25l IHRoaXMgZm9yIHYyLgoKPj4gK8KgwqDCoCAuaXJxX2VvacKgwqDCoMKgwqDCoMKgID0gc3VuNmlf cl9pbnRjX2lycV9lb2ksCj4+ICvCoMKgwqAgLmlycV9zZXRfYWZmaW5pdHnCoMKgwqAgPSBpcnFf Y2hpcF9zZXRfYWZmaW5pdHlfcGFyZW50LAo+PiArwqDCoMKgIC5pcnFfcmV0cmlnZ2VywqDCoMKg wqDCoMKgwqAgPSBpcnFfY2hpcF9yZXRyaWdnZXJfaGllcmFyY2h5LAo+PiArwqDCoMKgIC5pcnFf c2V0X3R5cGXCoMKgwqDCoMKgwqDCoCA9IHN1bjZpX3JfaW50Y19pcnFfc2V0X3R5cGUsCj4+ICvC oMKgwqAgLmlycV9zZXRfdmNwdV9hZmZpbml0ecKgwqDCoCA9IGlycV9jaGlwX3NldF92Y3B1X2Fm ZmluaXR5X3BhcmVudCwKPiAKPiBVbmRlciB3aGljaCBjaXJjdW1zdGFuY2VzIGRvIHlvdSBleHBl Y3QgdGhpcyB0byBiZSBjYWxsZWQ/CgpVbmRlciB0aGUgc2FtZSBjaXJjdW1zdGFuY2VzIGFzIHRo ZSB1bmRlcmx5aW5nIEdJQyBjYWxsYmFjay4gSXQncyBteQp1bmRlcnN0YW5kaW5nIHRoYXQgaXJx X2NoaXAgaG9va3MgYWx3YXlzIGdvIHRvIHRoZSBvdXRlcm1vc3QgaXJxZG9tYWluIGluIHRoZQpo aWVyYXJjaHkuIFNvIHRoZSBvbmx5IHdheSB0aGUgR0lDIGRyaXZlciBmdW5jdGlvbnMgZ2V0IGNh bGxlZCBpcyBpZiBJIGNhbGwgdGhlbQpoZXJlIHdpdGggaXJxX2NoaXBfKl9wYXJlbnQuIFByZXN1 bWFibHksIGFsbCBvZiB0aGUgR0lDIGZ1bmN0aW9ucyBhcmUgdGhlcmUgZm9yCmEgcmVhc29uLCBz byBJIHNob3VsZCBleHBvc2UgdGhlbS4KClRoZSBzYW1lIGFwcGVhcnMgdG8gYmUgdGhlIGNhc2Ug Zm9yIC5mbGFnczogZmxhZ3MgZnJvbSB0aGUgaW5uZXIgaXJxZG9tYWlucyBoYXZlCnRvIGJlIGR1 cGxpY2F0ZWQgaGVyZSwgYmVjYXVzZSB0aGUgY29yZSBpbnRlcnJ1cHQgaGFuZGxpbmcgY29kZSBv bmx5IGxvb2tzIGF0CnRoZSBmbGFncyBvZiBkZXNjLT5pcnFfZGF0YS5jaGlwLT5mbGFncywgd2hp Y2ggaXMgdGhlIG91dGVybW9zdCBpcnFkb21haW4gaW4gdGhlCmhpZXJhcmNoeS4KCj4+ICt9Owo+ PiArCj4+ICtzdGF0aWMgaW50IHN1bjZpX3JfaW50Y19kb21haW5fdHJhbnNsYXRlKHN0cnVjdCBp cnFfZG9tYWluICpkb21haW4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBpcnFfZndzcGVjICpmd3NwZWMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgKmh3aXJxLAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgKnR5cGUpCj4+ICt7 Cj4+ICvCoMKgwqAgaWYgKCFpc19vZl9ub2RlKGZ3c3BlYy0+Zndub2RlKSB8fCBmd3NwZWMtPnBh cmFtX2NvdW50ICE9IDIpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+ PiArwqDCoMKgICpod2lycSA9IGZ3c3BlYy0+cGFyYW1bMF07Cj4+ICvCoMKgwqAgKnR5cGXCoCA9 IGZ3c3BlYy0+cGFyYW1bMV0gJiBJUlFfVFlQRV9TRU5TRV9NQVNLOwo+PiArCj4+ICvCoMKgwqAg cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc3VuNmlfcl9pbnRjX2RvbWFpbl9h bGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgdmlycSwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IG5yX2lycXMsIHZvaWQgKmFy ZykKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgaXJxX2Z3c3BlYyAqZndzcGVjID0gYXJnOwo+PiAr wqDCoMKgIHN0cnVjdCBpcnFfZndzcGVjIGdpY19md3NwZWM7Cj4+ICvCoMKgwqAgaXJxX2h3X251 bWJlcl90IGh3aXJxOwo+PiArwqDCoMKgIHVuc2lnbmVkIGludCB0eXBlOwo+PiArwqDCoMKgIGlu dCBpLCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBzdW42aV9yX2ludGNfZG9tYWluX3RyYW5z bGF0ZShkb21haW4sIGZ3c3BlYywgJmh3aXJxLCAmdHlwZSk7Cj4+ICvCoMKgwqAgaWYgKHJldCkK Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvCoMKgwqAgaWYgKGh3aXJxICsgbnJf aXJxcyA+IFNVTjZJX1JfSU5UQ19OUl9JUlFTKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F SU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCAvKiBDb25zdHJ1Y3QgYSBHSUMtY29tcGF0aWJsZSBmd3Nw ZWMgZnJvbSB0aGlzIGZ3c3BlYy4gKi8KPj4gK8KgwqDCoCBnaWNfZndzcGVjID0gKHN0cnVjdCBp cnFfZndzcGVjKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAuZndub2RlwqDCoMKgwqDCoCA9IGRvbWFp bi0+cGFyZW50LT5md25vZGUsCj4+ICvCoMKgwqDCoMKgwqDCoCAucGFyYW1fY291bnQgPSAzLAo+ PiArwqDCoMKgwqDCoMKgwqAgLnBhcmFtwqDCoMKgwqDCoMKgID0geyBHSUNfU1BJLCBwYXJlbnRf b2Zmc2V0ICsgaHdpcnEsIHR5cGUgfSwKPiAKPiBTYW1lIHByb2JsZW0gaGVyZS4gVGhlIEdJQyBv bmx5IHN1cHBvcnRzIGxldmVsLWhpZ2ggYW5kIHJpc2luZy1lZGdlCj4gZm9yIFNQSXMuCgpUaGlz IGFjdHVhbGx5IGRvZXNuJ3QgY2F1c2UgYW55IGVycm9ycy4gVGhlIG9ubHkgY2hlY2sgdGhhdCB0 aGUgR0lDIGRvZXMgb24gdGhlCiJ0eXBlIiBwYXJhbWV0ZXIgZHVyaW5nIC50cmFuc2xhdGUgaXMg dmVyaWZ5aW5nIHRoYXQgaXQgaXMgbm90IElSUV9UWVBFX05PTkUsCmFuZCBubyBhZGRpdGlvbmFs IGNoZWNrcyBhcmUgZG9uZSBkdXJpbmcgLmFsbG9jLiBJbiBmYWN0LCBub3RoaW5nIHNlZW1zIHRv CnJlYWxseSBjYXJlIGFib3V0ICJ0eXBlIiBkdXJpbmcgLmFsbG9jLiBUaGV5IGp1c3Qgd2FudCAi aHdpcnEiLCBhbmQgaXQncwpjb252ZW5pZW50IHRvIHVzZSAudHJhbnNsYXRlIHRvIGdldCB0aGF0 LgoKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX2lycXM7 ICsraSkKPj4gK8KgwqDCoMKgwqDCoMKgIGlycV9kb21haW5fc2V0X2h3aXJxX2FuZF9jaGlwKGRv bWFpbiwgdmlycSArIGksIGh3aXJxICsgaSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzdW42aV9yX2ludGNfY2hpcCwgTlVMTCk7Cj4+ICsK Pj4gK8KgwqDCoCByZXR1cm4gaXJxX2RvbWFpbl9hbGxvY19pcnFzX3BhcmVudChkb21haW4sIHZp cnEsIG5yX2lycXMsICZnaWNfZndzcGVjKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpcnFfZG9tYWluX29wcyBzdW42aV9yX2ludGNfZG9tYWluX29wcyA9IHsKPj4gK8KgwqDC oCAudHJhbnNsYXRlwqDCoMKgID0gc3VuNmlfcl9pbnRjX2RvbWFpbl90cmFuc2xhdGUsCj4+ICvC oMKgwqAgLmFsbG9jwqDCoMKgwqDCoMKgwqAgPSBzdW42aV9yX2ludGNfZG9tYWluX2FsbG9jLAo+ PiArwqDCoMKgIC5mcmVlwqDCoMKgwqDCoMKgwqAgPSBpcnFfZG9tYWluX2ZyZWVfaXJxc19jb21t b24sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCBzdW42aV9yX2ludGNfaW5pdChz dHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBhcmVudCkKPj4gK3sKPj4gK8KgwqDCoCBz dHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCAqcGFyZW50X2RvbWFpbjsKPj4gK8KgwqDCoCBzdHJ1 Y3Qgb2ZfcGhhbmRsZV9hcmdzIHBhcmVudF9pcnE7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+ PiArwqDCoMKgIC8qIEV4dHJhY3QgdGhlIFJfSU5UQyAtPiBHSUMgbWFwcGluZyBmcm9tIHRoZSBP RiBub2RlLiAqLwo+PiArwqDCoMKgIHJldCA9IG9mX2lycV9wYXJzZV9vbmUobm9kZSwgMCwgJnBh cmVudF9pcnEpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g cmV0Owo+PiArwqDCoMKgIGlmIChwYXJlbnRfaXJxLmFyZ3NfY291bnQgIT0gMyB8fCBwYXJlbnRf aXJxLmFyZ3NbMF0gIT0gR0lDX1NQSSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFM Owo+PiArwqDCoMKgIHBhcmVudF9vZmZzZXQgPSBwYXJlbnRfaXJxLmFyZ3NbMV07Cj4+ICvCoMKg wqAgcGFyZW50X3R5cGXCoMKgID0gcGFyZW50X2lycS5hcmdzWzJdOwo+PiArCj4+ICvCoMKgwqAg cGFyZW50X2RvbWFpbiA9IGlycV9maW5kX2hvc3QocGFyZW50KTsKPj4gK8KgwqDCoCBpZiAoIXBh cmVudF9kb21haW4pIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByX2VycigiJXBPRjogRmFpbGVkIHRv IG9idGFpbiBwYXJlbnQgZG9tYWluXG4iLCBub2RlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAtRU5YSU87Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgYmFzZSA9IG9mX2lvX3JlcXVl c3RfYW5kX21hcChub2RlLCAwLCBOVUxMKTsKPj4gK8KgwqDCoCBpZiAoSVNfRVJSKGJhc2UpKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIiVwT0Y6IEZhaWxlZCB0byBtYXAgTU1JTyByZWdp b25cbiIsIG5vZGUpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIoYmFzZSk7Cj4+ ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfaGllcmFy Y2h5KHBhcmVudF9kb21haW4sIDAsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgU1VONklfUl9JTlRDX05SX0lSUVMsIG5vZGUsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnN1bjZpX3JfaW50Y19kb21haW5fb3BzLCBO VUxMKTsKPj4gK8KgwqDCoCBpZiAoIWRvbWFpbikgewo+PiArwqDCoMKgwqDCoMKgwqAgcHJfZXJy KCIlcE9GOiBGYWlsZWQgdG8gYWxsb2NhdGUgZG9tYWluXG4iLCBub2RlKTsKPj4gK8KgwqDCoMKg wqDCoMKgIGlvdW5tYXAoYmFzZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsK Pj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCAvKiBEaXNhYmxlIGFuZCB1bm1hc2sgYWxsIGlu dGVycnVwdHMuICovCj4+ICvCoMKgwqAgd3JpdGVsKDAsIGJhc2UgKyBTVU42SV9SX0lOVENfRU5B QkxFKTsKPj4gK8KgwqDCoCB3cml0ZWwoMCwgYmFzZSArIFNVTjZJX1JfSU5UQ19NQVNLKTsKPj4g Kwo+PiArwqDCoMKgIC8qIENsZWFyIGFueSBwZW5kaW5nIGludGVycnVwdHMuICovCj4+ICvCoMKg wqAgd3JpdGVsKH4wLCBiYXNlICsgU1VONklfUl9JTlRDX1BFTkRJTkcpOwo+PiArCj4+ICvCoMKg wqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICtJUlFDSElQX0RFQ0xBUkUoc3VuNmlfcl9pbnRjLCAiYWxs d2lubmVyLHN1bjZpLWEzMS1yLWludGMiLCBzdW42aV9yX2ludGNfaW5pdCk7Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLXN1bnhpLW5taS5jIGIvZHJpdmVycy9pcnFjaGlwL2ly cS1zdW54aS1ubWkuYwo+PiBpbmRleCBhNDEyYjVkNWQwZmEuLjlmMmJkMGM1ZDI4OSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1zdW54aS1ubWkuYwo+PiArKysgYi9kcml2ZXJz L2lycWNoaXAvaXJxLXN1bnhpLW5taS5jCj4+IEBAIC0yNywxOCArMjcsMTIgQEAKPj4KPj4gwqAj ZGVmaW5lIFNVTlhJX05NSV9JUlFfQklUwqDCoMKgIEJJVCgwKQo+Pgo+PiAtI2RlZmluZSBTVU42 SV9SX0lOVENfQ1RSTMKgwqDCoCAweDBjCj4+IC0jZGVmaW5lIFNVTjZJX1JfSU5UQ19QRU5ESU5H wqDCoMKgIDB4MTAKPj4gLSNkZWZpbmUgU1VONklfUl9JTlRDX0VOQUJMRcKgwqDCoCAweDQwCj4+ IC0KPj4gwqAvKgo+PiDCoCAqIEZvciBkZXByZWNhdGVkIHN1bjZpLWEzMS1zYy1ubWkgY29tcGF0 aWJsZS4KPj4gLSAqIFJlZ2lzdGVycyBhcmUgb2Zmc2V0IGJ5IDB4MGMuCj4+IMKgICovCj4+IC0j ZGVmaW5lIFNVTjZJX1JfSU5UQ19OTUlfT0ZGU0VUwqDCoMKgIDB4MGMKPj4gLSNkZWZpbmUgU1VO NklfTk1JX0NUUkzCoMKgwqDCoMKgwqDCoCAoU1VONklfUl9JTlRDX0NUUkwgLSBTVU42SV9SX0lO VENfTk1JX09GRlNFVCkKPj4gLSNkZWZpbmUgU1VONklfTk1JX1BFTkRJTkfCoMKgwqAgKFNVTjZJ X1JfSU5UQ19QRU5ESU5HIC0gU1VONklfUl9JTlRDX05NSV9PRkZTRVQpCj4+IC0jZGVmaW5lIFNV TjZJX05NSV9FTkFCTEXCoMKgwqAgKFNVTjZJX1JfSU5UQ19FTkFCTEUgLSBTVU42SV9SX0lOVENf Tk1JX09GRlNFVCkKPj4gKyNkZWZpbmUgU1VONklfTk1JX0NUUkzCoMKgwqDCoMKgwqDCoCAweDAw Cj4+ICsjZGVmaW5lIFNVTjZJX05NSV9QRU5ESU5HwqDCoMKgIDB4MDQKPj4gKyNkZWZpbmUgU1VO NklfTk1JX0VOQUJMRcKgwqDCoCAweDM0Cj4+Cj4+IMKgI2RlZmluZSBTVU43SV9OTUlfQ1RSTMKg wqDCoMKgwqDCoMKgIDB4MDAKPj4gwqAjZGVmaW5lIFNVTjdJX05NSV9QRU5ESU5HwqDCoMKgIDB4 MDQKPj4gQEAgLTYxLDEyICs1NSw2IEBAIHN0cnVjdCBzdW54aV9zY19ubWlfcmVnX29mZnMgewo+ PiDCoMKgwqDCoCB1MzIgZW5hYmxlOwo+PiDCoH07Cj4+Cj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IHN1bnhpX3NjX25taV9yZWdfb2ZmcyBzdW42aV9yX2ludGNfcmVnX29mZnMgX19pbml0Y29uc3Qg PSB7Cj4+IC3CoMKgwqAgLmN0cmzCoMKgwqAgPSBTVU42SV9SX0lOVENfQ1RSTCwKPj4gLcKgwqDC oCAucGVuZMKgwqDCoCA9IFNVTjZJX1JfSU5UQ19QRU5ESU5HLAo+PiAtwqDCoMKgIC5lbmFibGXC oMKgwqAgPSBTVU42SV9SX0lOVENfRU5BQkxFLAo+PiAtfTsKPj4gLQo+PiDCoHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3VueGlfc2Nfbm1pX3JlZ19vZmZzIHN1bjZpX3JlZ19vZmZzIF9faW5pdGNvbnN0 ID0gewo+PiDCoMKgwqDCoCAuY3RybMKgwqDCoCA9IFNVTjZJX05NSV9DVFJMLAo+PiDCoMKgwqDC oCAucGVuZMKgwqDCoCA9IFNVTjZJX05NSV9QRU5ESU5HLAo+PiBAQCAtMjMyLDE0ICsyMjAsNiBA QCBzdGF0aWMgaW50IF9faW5pdCBzdW54aV9zY19ubWlfaXJxX2luaXQoc3RydWN0Cj4+IGRldmlj ZV9ub2RlICpub2RlLAo+PiDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoH0KPj4KPj4gLXN0YXRp YyBpbnQgX19pbml0IHN1bjZpX3JfaW50Y19pcnFfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5v ZGUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2 aWNlX25vZGUgKnBhcmVudCkKPj4gLXsKPj4gLcKgwqDCoCByZXR1cm4gc3VueGlfc2Nfbm1pX2ly cV9pbml0KG5vZGUsICZzdW42aV9yX2ludGNfcmVnX29mZnMpOwo+PiAtfQo+PiAtSVJRQ0hJUF9E RUNMQVJFKHN1bjZpX3JfaW50YywgImFsbHdpbm5lcixzdW42aS1hMzEtci1pbnRjIiwKPj4gLcKg wqDCoMKgwqDCoMKgIHN1bjZpX3JfaW50Y19pcnFfaW5pdCk7Cj4+IC0KPj4gwqBzdGF0aWMgaW50 IF9faW5pdCBzdW42aV9zY19ubWlfaXJxX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkZXZpY2Vf bm9kZSAqcGFyZW50KQo+PiDCoHsKPiAKPiBUaGFua3MsCj4gCj4gwqDCoMKgwqDCoMKgwqAgTS4K ClRoYW5rcyBhZ2FpbiBmb3IgeW91ciByZXZpZXcsClNhbXVlbAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=