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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id EBD51CCF2E3 for ; Mon, 19 Oct 2026 13:54:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+oZ2GNG3wDdNEVMgJfBmVlw5U1nsanQh1xp9GbOzT6w=; b=B1BayiAEqrvGgj iA7ZBh2mmQD2eU9nf2SXfl2S27MXxgUN2VCc3z5iyWRDICLMp0H6JVLqC65BIx2/nCObsuezkPXVx v15ikaOvn0HmkKD9RpxiDhAHu09xGzmiogolfDFl1OeZEjvyuags6unGyp9tJKqlip6eVLfiamOhD u1/JZ6XL3b76Iyx+wh9wNsU+YPfpxgiRHNCZ6vlGQ5Fz2hYbhAsroSjv4L/VAU7x7QZIogJZaVO2z T5IjJr3uSxQsPKb07x6wzx+ZkIDFFZ3CZrXkEVuaeHw3Yn1JEldUmCaEVnbBISLaz2UN+pfoiNqPK rcTeUggTpI0vyRYlKPNQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xInpD-00000007ZdK-216q; Mon, 19 Oct 2026 13:54:51 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xInp8-00000007Zab-1Kzm; Mon, 19 Oct 2026 13:54:46 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 04A4543E45; Mon, 19 Oct 2026 13:54:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC7211F000C6; Mon, 19 Oct 2026 13:54:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792418085; bh=8MyCnyVjuDkCWTOXbthwEjWPs5nnvJurQGBkZhq41Es=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=JtNuvU1NhYBWSPhnBiEPSYR0S8U8E8YBpUwWS0ruyLRDrfkAWp4b53mGXDpaP6xxZ /l2ZvVrnwFUcdCKu3LfYzORQ717YdHXz8TuNvnBW3ewcX7RcoJoC9WPiOu5FZWrfqk UVoLq1hE4wNYTA5PUmMt4o9ENnnbna7kjIcV2E1jtjGpUgRM6ESQM/vrPK72wHfdlF ZBKJZZ5MNaqalmmeiVJKVbW3t7DdDmLJ+sDaPWyHXLmJGbFDlzgZdjQzsrbdxWylmP A72WaoXaLY5XmdqRNGx+4bBY/0TQb3fLLlIJMaQbhyWgLJx01gdl9OjJtP/ymfYo3i +o1j/VncrdXRg== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Jiaxing Hu , Will Deacon , Sasha Levin , joro@8bytes.org, heiko@sntech.de, iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18-5.10] iommu/rockchip: Clear stale page faults before enabling stall Date: Mon, 19 Oct 2026 09:44:53 -0400 Message-ID: <20261019135441.1420968-2-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261019135441.1420968-1-sashal@kernel.org> References: <20261019135441.1420968-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.57 X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org RnJvbTogSmlheGluZyBIdSA8Z2FoaW5nQGdhaGluZ3dvby5jb20+CgpbIFVwc3RyZWFtIGNvbW1p dCBiMTBkNTkyMGNhZmEyOTJlZTNjYWI5YzIwZjgxM2RhNGZlNGYwMGI4IF0KCkJvb3QgZmlybXdh cmUgY2FuIGxlYXZlIGFuIElPTU1VIGJhbmsgaW4gUEFHRV9GQVVMVF9BQ1RJVkUgYmVmb3JlIHRo ZQpkcml2ZXIgaGFzIGNvbmZpZ3VyZWQgcGFnaW5nOgoKICBQQUdFX0ZBVUxUX0FDVElWRT0xICBT VEFMTF9BQ1RJVkU9MCAgSURMRT0xCgpTdWNoIGEgYmFuayBpZ25vcmVzIENNRF9FTkFCTEVfU1RB TEwgYW5kIG5ldmVyIHJlYWNoZXMgU1RBTExfQUNUSVZFLCBzbwpya19pb21tdV9lbmFibGVfc3Rh bGwoKSdzIHJlYWR4X3BvbGxfdGltZW91dCgpIHNwaW5zIHVudGlsIGl0IHRpbWVzIG91dAooc2Vl biBvbiB0aGUgUkszNTc2IE5QVSwgd2hvc2UgTU1VcyBzaGFyZSB0aGlzIHBvbGwgYWNyb3NzIGJh bmtzKS4KClJhdGhlciB0aGFuIHNwZWNpYWwtY2FzaW5nIHRoZXNlIGJhbmtzIGluIHRoZSBzdGFs bCBwYXRoLCBhY2tub3dsZWRnZSB0aGUKc3RhbGUgZmF1bHQgd2l0aCBDTURfUEFHRV9GQVVMVF9E T05FIGJlZm9yZSBlbmFibGluZyBzdGFsbCwgc28gZXZlcnkgYmFuawpzdGFydHMgZnJvbSBhIGNs ZWFuIHN0YXRlIGFuZCB0aGUgbm9ybWFsIHN0YWxsIHNlcXVlbmNlIGFwcGxpZXMgdG8gYWxsIG9m CnRoZW0uICBCYW5rcyB3aXRob3V0IGEgcGVuZGluZyBmYXVsdCBhcmUgdW50b3VjaGVkLgoKU2ln bmVkLW9mZi1ieTogSmlheGluZyBIdSA8Z2FoaW5nQGdhaGluZ3dvby5jb20+ClNpZ25lZC1vZmYt Ynk6IFdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExl dmluIDxzYXNoYWxAa2VybmVsLm9yZz4KLS0tCgpMTE0gR2VuZXJhdGVkIGV4cGxhbmF0aW9ucywg bWF5IGJlIGNvbXBsZXRlbHkgYm9ndXM6CgpUaGUgbG9jYWwgY2hlY2tvdXQgaXMgbWFpbmxpbmUg Kio3LjMtcmM0KiouIFRoZSBzdGFsbC10aW1lb3V0IHBhdGggaXMgaW4KdGhpcyB0cmVlLCBhbmQg dGhlIDEzLWxpbmUgZmlybXdhcmUgbGVmdG92ZXIgd29ya2Fyb3VuZCBpcyBhIHJlYWwgSU9NTVUK ZW5hYmxlIGZhaWx1cmUsIG5vdCBhIG5ldyBBUEkuCgo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhBU0UgMTogQ09NTUlUIE1F U1NBR0UgRk9SRU5TSUNTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQoKKipTdGVwIDEuMTogUEFSU0UgVEhFIFNVQkpFQ1QgTElO RSoqClJlY29yZDogKipbaW9tbXUvcm9ja2NoaXBdIFtDbGVhcl0gW2Fja25vd2xlZGdlIGxlZnRv dmVyClBBR0VfRkFVTFRfQUNUSVZFIHNvIHN0YWxsIGVuYWJsZSBkb2VzIG5vdCBwb2xsLXRpbWVv dXRdKioKCioqU3RlcCAxLjI6IFBBUlNFIEFMTCBDT01NSVQgTUVTU0FHRSBUQUdTKioKUmVjb3Jk OgotIFNpZ25lZC1vZmYtYnk6IEppYXhpbmcgSHUgXDxnYWhpbmdAZ2FoaW5nd29vLmNvbVw+IChh dXRob3IpCi0gU2lnbmVkLW9mZi1ieTogV2lsbCBEZWFjb24gXDx3aWxsQGtlcm5lbC5vcmdcPiAo SU9NTVUgbWFpbnRhaW5lcjsKICBhcHBsaWVkIHRoZSBwYXRjaCkKLSBObyBGaXhlczosIFJlcG9y dGVkLWJ5OiwgVGVzdGVkLWJ5OiwgUmV2aWV3ZWQtYnk6LCBBY2tlZC1ieTosIExpbms6LAogIG9y IENjOiBzdGFibGUgKGFic2VuY2Ugb2YgRml4ZXMvQ2M6c3RhYmxlIGlzIGV4cGVjdGVkIGZvciB0 aGlzIHJldmlldykKCioqU3RlcCAxLjM6IEFOQUxZWkUgVEhFIENPTU1JVCBCT0RZIFRFWFQqKgpS ZWNvcmQ6Ci0gKipCdWc6KiogQm9vdCBmaXJtd2FyZSBjYW4gbGVhdmUgYW4gSU9NTVUgYmFuayBp bgogIGBQQUdFX0ZBVUxUX0FDVElWRT0xYCwgYFNUQUxMX0FDVElWRT0wYCwgYElETEU9MWAgYmVm b3JlIHRoZSBkcml2ZXIKICBjb25maWd1cmVzIHBhZ2luZy4KLSAqKlN5bXB0b206KiogVGhhdCBi YW5rIGlnbm9yZXMgYENNRF9FTkFCTEVfU1RBTExgIGFuZCBuZXZlciByZWFjaGVzCiAgYFNUQUxM X0FDVElWRWAuIGBya19pb21tdV9lbmFibGVfc3RhbGwoKWDigJlzIGByZWFkeF9wb2xsX3RpbWVv dXQoKWAKICBmYWlscy4gT2JzZXJ2ZWQgb24gdGhlIFJLMzU3NiBOUFUsIHdob3NlIE1NVXMgc2hh cmUgdGhlIHN0YWxsIHBvbGwKICBhY3Jvc3MgYmFua3MgKGBya19pb21tdV9pc19zdGFsbF9hY3Rp dmUoKWAgQU5EcyBldmVyeSBiYW5rKS4KLSAqKlJvb3QgY2F1c2U6KiogU3RhbGUgZmlybXdhcmUg cGFnZS1mYXVsdCBzdGF0ZSBibG9ja3MgdGhlIHN0YWxsCiAgY29tbWFuZC4KLSAqKkZpeDoqKiBJ c3N1ZSBgQ01EX1BBR0VfRkFVTFRfRE9ORWAgb24gYW55IGJhbmsgdGhhdCBzdGlsbCBoYXMKICBg UEFHRV9GQVVMVF9BQ1RJVkVgLCB0aGVuIHVzZSB0aGUgbm9ybWFsIHN0YWxsIHNlcXVlbmNlLiBC YW5rcyB3aXRob3V0CiAgYSBwZW5kaW5nIGZhdWx0IGFyZSB1bnRvdWNoZWQuCi0gKipWZXJzaW9u IGluZm8gaW4gbWVzc2FnZToqKiBub25lIGJleW9uZCBSSzM1NzYgTlBVLgoKKipTdGVwIDEuNDog REVURUNUIEhJRERFTiBCVUcgRklYRVMqKgpSZWNvcmQ6IE5vdCBkaXNndWlzZWQuIFRoaXMgaXMg YW4gZXhwbGljaXQgaGFyZHdhcmUvZmlybXdhcmUgbGVmdG92ZXIKd29ya2Fyb3VuZCB0aGF0IHBy ZXZlbnRzIGEgc3RhbGwtZW5hYmxlIHRpbWVvdXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhBU0UgMjogRElGRiBBTkFM WVNJUyAtIExJTkUgQlkgTElORQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCAyLjE6IElOVkVOVE9SWSBUSEUgQ0hB TkdFUyoqClJlY29yZDoKLSBGaWxlOiBgZHJpdmVycy9pb21tdS9yb2NrY2hpcC1pb21tdS5jYCDi gJQgKiorMTMgLyAtMCoqCi0gRnVuY3Rpb246IGBya19pb21tdV9lbmFibGVfc3RhbGwoKWAKLSBT Y29wZTogc2luZ2xlLWZpbGUgc3VyZ2ljYWwgZml4CgoqKlN0ZXAgMi4yOiBVTkRFUlNUQU5EIFRI RSBDT0RFIEZMT1cgQ0hBTkdFKioKUmVjb3JkOgotICoqQmVmb3JlOioqIElmIHN0YWxsIGlzIG5v dCBhbHJlYWR5IGFjdGl2ZSBhbmQgcGFnaW5nIGlzIGVuYWJsZWQsCiAgYnJvYWRjYXN0IGBDTURf RU5BQkxFX1NUQUxMYCBhbmQgcG9sbCB1bnRpbCBldmVyeSBiYW5rIHJlcG9ydHMKICBgU1RBTExf QUNUSVZFYCAoMSBtcyB0aW1lb3V0LCBgUktfTU1VX1BPTExfVElNRU9VVF9VUz0xMDAwYCkuIE9u ZQogIHN0dWNrIGJhbmsgZmFpbHMgdGhlIHdob2xlIHBvbGwuCi0gKipBZnRlcjoqKiBTYW1lIHBh dGgsIGJ1dCBmaXJzdCB3YWxrIGVhY2ggYmFuazsgaWYKICBgUktfTU1VX1NUQVRVU19QQUdFX0ZB VUxUX0FDVElWRWAgaXMgc2V0LCB3cml0ZQogIGBSS19NTVVfQ01EX1BBR0VfRkFVTFRfRE9ORWAg dG8gdGhhdCBiYW5r4oCZcyBjb21tYW5kIHJlZ2lzdGVyLCB0aGVuCiAgZW5hYmxlIHN0YWxsIGFz IGJlZm9yZS4KLSBQYXRoOiBpbml0aWFsaXphdGlvbiAvIGF0dGFjaCAvIHJlc3VtZSAoYHJrX2lv bW11X2VuYWJsZWAg4oaSCiAgYHJrX2lvbW11X2VuYWJsZV9zdGFsbGApLCBhbmQgYWxzbyBkaXNh YmxlL3N1c3BlbmQgKHJldHVybiB2YWx1ZQogIGlnbm9yZWQgdGhlcmUpLgoKKipTdGVwIDIuMzog SURFTlRJRlkgVEhFIEJVRyBNRUNIQU5JU00qKgpSZWNvcmQ6ICoqW0hhcmR3YXJlIHdvcmthcm91 bmQgLyBsb2dpYyBjb3JyZWN0bmVzc10qKiBGaXJtd2FyZSBsZWF2ZXMKYFBBR0VfRkFVTFRfQUNU SVZFYC4gSGFyZHdhcmUgaWdub3JlcyBgQ01EX0VOQUJMRV9TVEFMTGAgaW4gdGhhdCBzdGF0ZS4K YHJrX2lvbW11X2VuYWJsZSgpYCB0cmVhdHMgc3RhbGwgdGltZW91dCBhcyBmYXRhbCAoYGlmIChy ZXQpIGdvdG8Kb3V0X2Rpc2FibGVfY2xvY2tzYCksIHNvIHRoZSBJT01NVSBuZXZlciByZWFjaGVz CmBya19pb21tdV9mb3JjZV9yZXNldCgpYCAvIHBhZ2luZyBzZXR1cCBhbmQgKipkZXZpY2UgYXR0 YWNoIGZhaWxzKiouIFRoZQpmaXggYWNrcyB0aGUgbGVmdG92ZXIgZmF1bHQgd2l0aCB0aGUgc2Ft ZSBjb21tYW5kIHRoZSBJUlEgaGFuZGxlcgphbHJlYWR5IHVzZXMgKGBSS19NTVVfQ01EX1BBR0Vf RkFVTFRfRE9ORWApLgoKKipTdGVwIDIuNDogQVNTRVNTIFRIRSBGSVggUVVBTElUWSoqClJlY29y ZDogTWluaW1hbCBhbmQgcmVhZGFibGUuIEdhdGVkIG9uIGBQQUdFX0ZBVUxUX0FDVElWRWAsIHNv IGlkbGUKYmFua3MgYXJlIHVuY2hhbmdlZC4gVXNlcyB0aGUgZXhpc3RpbmcgY29tbWFuZCBlbmNv ZGluZy4gUmVncmVzc2lvbiByaXNrCmlzIGxvdzsgdGhlIG9ubHkgZmxhZ2dlZCBjb25jZXJuIGlz IG5vdCBhbHNvIHdyaXRpbmcgYFJLX01NVV9JTlRfQ0xFQVJgCihzZWUgUGhhc2UgNCksIHdoaWNo IGlzIGluY29tcGxldGUtYWNrLCBub3QgYSBuZXcgZGVhZGxvY2sgb3IgQVBJCmNoYW5nZS4KCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpQSEFTRSAzOiBHSVQgSElTVE9SWSBJTlZFU1RJR0FUSU9OCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKipTdGVwIDMu MTogQkxBTUUgVEhFIENIQU5HRUQgTElORVMqKgpSZWNvcmQ6Ci0gYHJrX2lvbW11X2VuYWJsZV9z dGFsbCgpYCBpbnRyb2R1Y2VkIGluICoqYzY4YTI5MjE1MmQzMioqCiAgKGBpb21tdS9yb2NrY2hp cDogcmszMjg4IGlvbW11IGRyaXZlcmAsIDIwMTQpIOKAlCBjb250YWluZWQgaW4KICAqKnYzLjE5 LXJjMSoqLgotIE11bHRpLWJhbmsgYG51bV9tbXVgIGxvb3A6ICoqY2Q2NDM4YzVmODQ0NioqLCBj b250YWluZWQgaW4KICAqKnY0LjYtcmMxKiouCi0gYHJlYWR4X3BvbGxfdGltZW91dGA6ICoqMDQx NmJmNjQ3OWFjZWYqKiwgY29udGFpbmVkIGluICoqdjQuMTctcmMxKiouCi0gVGhlIDEzLWxpbmUg YWNrIGxvb3AgaXMgdGhpcyBjb21taXQgKCoqYjEwZDU5MjBjYWZhMioqKS4KCioqU3RlcCAzLjI6 IEZPTExPVyBUSEUgRklYRVM6IFRBRyoqClJlY29yZDogTm8gRml4ZXM6IHRhZy4gTm90IGFwcGxp Y2FibGUuIEJ1Z2d5IGludGVyYWN0aW9uIGlzIGZpcm13YXJlCmxlZnRvdmVyIHZzIHN0YWxsIHBh dGggdGhhdCBoYXMgZXhpc3RlZCBmb3IgeWVhcnMuCgoqKlN0ZXAgMy4zOiBDSEVDSyBGSUxFIEhJ U1RPUlkgRk9SIFJFTEFURUQgQ0hBTkdFUyoqClJlY29yZDoKLSBJbW1lZGlhdGUgcGFyZW50IG9u IHRoZSBmaWxlOiAqKjg0MTM2M2ViYjUwODIqKiBgaW9tbXUvcm9ja2NoaXA6IFRha2UKICBhbGwg RFQgY2xvY2tzYCDigJQgc2FtZSBhdXRob3IsIHNhbWUgUkZDIHNlcmllcyAocGF0Y2ggNC84KS4g RGlmZmVyZW50CiAgcHJvYmxlbSAoZXh0cmEgY2xvY2tzIHNvIERURV9BRERSIHdyaXRlcyBsYW5k KS4gKipOb3QgYSBjb2RlCiAgZGVwZW5kZW5jeSoqIG9mIHRoZSBzdGFsbCBhY2suCi0gTm8gbGF0 ZXIgY29tbWl0cyBvbiB0aGlzIGZpbGUgYWZ0ZXIgYjEwZDU5MjBjYWZhMiBpbiB0aGlzIHRyZWUu Ci0gU3RhbmRhbG9uZSBJT01NVSBjaGFuZ2U7IFdpbGwgYXBwbGllZCA0LzggYW5kIDUvOCB3aXRo b3V0IHRoZSByZXN0IG9mCiAgdGhlIE5QVSBzZXJpZXMuCgoqKlN0ZXAgMy40OiBDSEVDSyBUSEUg QVVUSE9SJ1MgT1RIRVIgQ09NTUlUUyoqClJlY29yZDogSmlheGluZyBIdSBpcyBub3QgdGhlIElP TU1VIG1haW50YWluZXIuIEluIHRoaXMgdHJlZSwgdHdvCnJvY2tjaGlwLWlvbW11IGNvbW1pdHMg KGNsb2NrcyArIHRoaXMpLiBXaWxsIERlYWNvbiBhcHBsaWVkIGJvdGguCgoqKlN0ZXAgMy41OiBD SEVDSyBGT1IgREVQRU5ERU5UL1BSRVJFUVVJU0lURSBDT01NSVRTKioKUmVjb3JkOiBEaWZmIG9u bHkgbmVlZHMgYHJrX2lvbW11X2VuYWJsZV9zdGFsbGAsIGBudW1fbW11YCwKYFJLX01NVV9TVEFU VVNfUEFHRV9GQVVMVF9BQ1RJVkVgLCBgUktfTU1VX0NNRF9QQUdFX0ZBVUxUX0RPTkVgIOKAlCBh bGwKcHJlc2VudCBsb25nIGJlZm9yZSA3LjMuICoqQ2FuIGFwcGx5IHN0YW5kYWxvbmUuKioKCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpQSEFTRSA0OiBNQUlMSU5HIExJU1QgQU5EIEVYVEVSTkFMIFJFU0VBUkNICj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoK KipTdGVwIDQuMTogRklORCBUSEUgT1JJR0lOQUwgUEFUQ0ggRElTQ1VTU0lPTioqClJlY29yZDoK LSBMb3JlICh2aWEgYjQpOgogIGh0dHBzOi8vcGF0Y2gubXNnaWQubGluay8yMDI2MDcxODAzMTE0 Ni4zMzY4ODExLTYtZ2FoaW5nQGdhaGluZ3dvby5jb20KLSBTZXJpZXM6ICoqW1JGQyBQQVRDSCB2 MiAwLzhdIGFjY2VsL3JvY2tldDogUkszNTc2IE5QVSAoUktOTikKICBlbmFibGVtZW50KioKLSBU aGlzIHBhdGNoIGlzICoqdjIgNS84KiouIHYxIGhhZCB0d28g4oCcc2tpcCBvcnBoYW5lZC1mYXVs dCBiYW5rc+KAnQogIHBhdGNoZXM7IHYyIHJlcGxhY2VkIHRoZW0gd2l0aCB0aGlzIGZhdWx0LWFj ayBhZnRlciBDaGFveWkgQ2hlbiBhc2tlZAogIHdoZXRoZXIgY2xlYXJpbmcgdGhlIGZhdWx0IGF2 b2lkcyBza2lwcGluZyBiYW5rcy4KLSBXaWxsIERlYWNvbiAoMjAyNi0wNy0yNik6IOKAnEFwcGxp ZWQgZHJpdmVyIGNoYW5nZXMgdG8gaW9tbXUgKHJvY2tjaGlwKeKAnQogIGZvciA0LzggYW5kIDUv OC4gTm8gTkFLIG9uIHRoaXMgcGF0Y2guCi0gQ292ZXIgbGV0dGVyOiBOUFUgYnJpbmctdXAgaXMg c3RpbGwgaW5jb21wbGV0ZSAo4oCcZnVsbCBpbmZlcmVuY2UgaXMgbm90CiAgY29ycmVjdCB5ZXTi gJ0pLiBUaGlzIElPTU1VIGZpeCB3YXMgc3RpbGwgdGFrZW4gb24gaXRzIG93bi4KLSB2MyBvZiB0 aGUgd2lkZXIgc2VyaWVzIHdhcyBub3Qgb3V0IHdoZW4gV2lsbCBhcHBsaWVkIHRoaXM7IGFwcGxp ZWQKICB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgZm9yIHRoaXMgaHVuay4KCioqU3RlcCA0LjI6IENI RUNLIFdITyBSRVZJRVdFRCBUSEUgUEFUQ0gqKgpSZWNvcmQ6IFJlY2lwaWVudHMgaW5jbHVkZWQg V2lsbCBEZWFjb24sIEpvZXJnIFJvZWRlbCwgUm9iaW4gTXVycGh5LApIZWlrbyBTdHVlYm5lciwg aW9tbXVAbGlzdHMubGludXguZGV2LCBsaW51eC1yb2NrY2hpcC4gTm8gaHVtYW4KUmV2aWV3ZWQt Ynkgb24gNS84IGluIHRoZSB0aHJlYWQuIFdpbGwgYXBwbGllZCBpdC4gU2FzaGlrbyBib3QKKGF1 dG9tYXRlZCkgY29tbWVudGVkLgoKKipTdGVwIDQuMzogU0VBUkNIIEZPUiBUSEUgQlVHIFJFUE9S VCoqClJlY29yZDogTm8gc3l6Ym90L2J1Z3ppbGxhLiBBdXRob3IgaGl0IGl0IG9uIGEgUmFkeGEg Uk9DSyA0RCB3aGlsZQpicmluZ2luZyB1cCB0aGUgUkszNTc2IE5QVSBJT01NVXMuIENvdmVyIGxl dHRlciBsaXN0cyDigJxjbGVhcmluZyBhIHN0YWxlCmZpcm13YXJlIHBhZ2UgZmF1bHTigJ0gYXMg cmVxdWlyZWQgZm9yIHRob3NlIElPTU1VcyB0byBjb21lIHVwLgoKKipTdGVwIDQuNDogQ0hFQ0sg Rk9SIFJFTEFURUQgUEFUQ0hFUyBBTkQgU0VSSUVTKioKUmVjb3JkOiBSRkMgOC1wYXRjaCBOUFUg ZW5hYmxlbWVudC4gT25seSB0aGUgdHdvIElPTU1VIGRyaXZlciBwYXRjaGVzCndlcmUgbWVyZ2Vk LiBOUFUgRFQvZHJpdmVyIHBhdGNoZXMgYXJlICoqbm90KiogaW4gdGhpcyB0cmVlIChubyBOUFUK SU9NTVUgbm9kZXMgaW4gYHJrMzU3Ni5kdHNpYCkuIFRoaXMgc3RhbGwgcGF0Y2ggZG9lcyBub3Qg ZGVwZW5kIG9uIHRoZW0uCgoqKlN0ZXAgNC41OiBDSEVDSyBTVEFCTEUgTUFJTElORyBMSVNUIEhJ U1RPUlkqKgpSZWNvcmQ6IGxvcmUua2VybmVsLm9yZy9zdGFibGUgc2VhcmNoIHJldHVybmVkIEhU VFAgNDAzLiAqKlVOVkVSSUZJRUQqKgp3aGV0aGVyIHN0YWJsZUAgZGlzY3Vzc2VkIHRoaXMuIE5v IGluLXRyZWUgZ3JlcCBoaXQgZXhjZXB0IHRoaXMgY29tbWl0LgoKU2FzaGlrbyBib3QgY29uY2Vy biAodmVyaWZpZWQgZnJvbSBtYm94KTogYENNRF9QQUdFX0ZBVUxUX0RPTkVgIHdpdGhvdXQKYFJL X01NVV9JTlRfQ0xFQVJgIG1pZ2h0IGxlYXZlIGEgcmF3IElSUSBwZW5kaW5nLiBPbiBgcm9ja2No aXAsZGlzYWJsZS0KbW11LXJlc2V0YCBpbnN0YW5jZXMgKGluLXRyZWU6IHB4MzAsIHJrMzI4OCwg cmszMzY4LCByazMzOTksIHJrMzU2eCwKcmszNTc2IHZkZWMpLCBgcmtfaW9tbXVfZm9yY2VfcmVz ZXQoKWAgaXMgc2tpcHBlZCwgdGhlbgpgUktfTU1VX0lOVF9NQVNLYCBpcyBwcm9ncmFtbWVkIGlu IGBya19pb21tdV9lbmFibGUoKWAuIEEgbGVmdG92ZXIgcmF3CmJpdCBjb3VsZCBmaXJlIGEgcGFn ZS1mYXVsdCBJUlEuIFRoZSBleGlzdGluZyBJUlEgaGFuZGxlciBhbHJlYWR5IGxvZ3MsCm9wdGlv bmFsbHkgYHJlcG9ydF9pb21tdV9mYXVsdCgpYCwgemFwcyBjYWNoZSwgaXNzdWVzIGBQQUdFX0ZB VUxUX0RPTkVgLAphbmQgY2xlYXJzIElOVF9TVEFUVVMuIFRoYXQgaXMgYSBwb3NzaWJsZSBzcHVy aW91cyBJUlEvbG9nLCBub3QgYQp2ZXJpZmllZCBwYW5pYy4gTm8gZm9sbG93LXVwIGNvbW1pdCBh ZGRyZXNzZWQgaXQ7IFdpbGwgc3RpbGwgYXBwbGllZCB0aGUKcGF0Y2guCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhBU0Ug NTogQ09ERSBTRU1BTlRJQyBBTkFMWVNJUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCA1LjE6IElERU5USUZZIEtF WSBGVU5DVElPTlMqKgpSZWNvcmQ6IGBya19pb21tdV9lbmFibGVfc3RhbGwoKWAgKG1vZGlmaWVk KS4gSGVscGVycyB1c2VkOgpgcmtfaW9tbXVfcmVhZGAsIGBya19pb21tdV9pc19zdGFsbF9hY3Rp dmVgLApgcmtfaW9tbXVfaXNfcGFnaW5nX2VuYWJsZWRgLCBgcmtfaW9tbXVfY29tbWFuZGAuCgoq KlN0ZXAgNS4yOiBUUkFDRSBDQUxMRVJTKioKUmVjb3JkOgotIGBya19pb21tdV9kaXNhYmxlKClg IGxpbmUgOTI4IOKAlCBkZXRhY2ggLyBydW50aW1lIHN1c3BlbmQuIFJldHVybgogIGlnbm9yZWQu Ci0gYHJrX2lvbW11X2VuYWJsZSgpYCBsaW5lIDk1MCDigJQgYXR0YWNoIC8gcnVudGltZSByZXN1 bWUuICoqRmFpbHVyZQogIGFib3J0cyBlbmFibGUuKioKLSBgcmtfaW9tbXVfZW5hYmxlKClgIGNh bGxlZCBmcm9tIGBya19pb21tdV9hdHRhY2hfZGV2aWNlKClgIChsaW5lIDEwNjQpCiAgYW5kIGBy a19pb21tdV9yZXN1bWUoKWAgKGxpbmUgMTM0OSkuCgoqKlN0ZXAgNS4zOiBUUkFDRSBDQUxMRUVT KioKUmVjb3JkOiBNTUlPIHN0YXR1cy9jb21tYW5kLiBObyBhbGxvY2F0aW9uLCBubyBuZXcgbG9j a3MuCmB3cml0ZWwoUktfTU1VX0NNRF9QQUdFX0ZBVUxUX0RPTkUsIGJhc2UgKyBSS19NTVVfQ09N TUFORClgIG1hdGNoZXMKYHJrX2lvbW11X2Jhc2VfY29tbWFuZCgpYC4KCioqU3RlcCA1LjQ6IEZP TExPVyBUSEUgQ0FMTCBDSEFJTioqClJlY29yZDogVXNlcnNwYWNlL0RNQSBhdHRhY2ggb3IgcnVu dGltZSBQTSByZXN1bWUg4oaSCmBya19pb21tdV9hdHRhY2hfZGV2aWNlYCAvIGBya19pb21tdV9y ZXN1bWVgIOKGkiBgcmtfaW9tbXVfZW5hYmxlYCDihpIKYHJrX2lvbW11X2VuYWJsZV9zdGFsbGAu IFJlYWNoYWJsZSBvbiBSb2NrY2hpcCBTb0NzIHdpdGgKYENPTkZJR19ST0NLQ0hJUF9JT01NVWAu IFRyaWdnZXIgaXMgZmlybXdhcmUgbGVmdG92ZXIgKyBwYWdpbmcgYWxyZWFkeQplbmFibGVkLiBO b3QgYSBzeXNjYWxsIGZ1enogcGF0aDsgaXQgaXMgZGV2aWNlIGJyaW5nLXVwLgoKKipTdGVwIDUu NTogU0VBUkNIIEZPUiBTSU1JTEFSIFBBVFRFUk5TKioKUmVjb3JkOiBJUlEgcGF0aCBhbHJlYWR5 IGRvZXMgYFJLX01NVV9DTURfUEFHRV9GQVVMVF9ET05FYCAobGluZSA2NDIpCnBsdXMgYFJLX01N VV9JTlRfQ0xFQVJgLiBObyBvdGhlciBzdGFsbC1wYXRoIGZhdWx0IGFjay4gSW4tdHJlZSBSSzM1 NzYKYHZkZWNfbW11YCBpcyB0d28tYmFuayAoYHJlZ2AgdHdvIHJlZ2lvbnMpLCBzbyB0aGUgQU5E LXBvbGwgaXNzdWUgaXMgbm90Ck5QVS1vbmx5IGluIHByaW5jaXBsZS4KCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQSEFTRSA2 OiBDUk9TUy1SRUZFUkVOQ0lORyBBR0FJTlNUIFRIRSBMT0NBTCBUUkVFCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKipTdGVw IDYuMTogRE9FUyBUSEUgQlVHR1kgQ09ERSBFWElTVCBJTiBUSElTIFRSRUU/KioKUmVjb3JkOiAq Klllcy4qKiBMb2NhbCB0cmVlOiBgZ2l0IGRlc2NyaWJlIEhFQURgID0KKip2Ny4zLXJjNC0yNy1n ZjAxMDAzNjNkOGMzNyoqLCBgbWFrZSBrZXJuZWx2ZXJzaW9uYCA9ICoqNy4zLjAtcmM0KiouCmBy a19pb21tdV9lbmFibGVfc3RhbGwoKWAgaXMgcHJlc2VudDsgdGhpcyBjb21taXQgaXMgYWxyZWFk eSBhbiBhbmNlc3RvcgpvZiBIRUFEIChgZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciBiMTBk NTkyMGNhZmEyIEhFQURgIHN1Y2NlZWRlZCkuCkxhbmRlZCB2aWEgYGlvbW11LXVwZGF0ZXMtdjcu M2AgKG5vdCBpbiB2Ny4yKS4gU3RhbGwgcGF0aCBpdHNlbGYgZGF0ZXMKdG8gdjMuMTkuCgoqKlN0 ZXAgNi4yOiBDSEVDSyBGT1IgQkFDS1BPUlQgQ09NUExJQ0FUSU9OUyoqClJlY29yZDogSHVuayBp cyBhIGNvbnRpZ3VvdXMgaW5zZXJ0IGFmdGVyIHRoZSBwYWdpbmctZW5hYmxlZCBjaGVjay4KRXhw ZWN0ZWQgYXBwbHk6ICoqY2xlYW4qKiBvbiB0cmVlcyB0aGF0IGhhdmUgdGhlIDIwMTYgbXVsdGkt YmFuawpgbnVtX21tdWAgbG9vcCAodjQuNispLiBObyBjb25mbGljdGluZyBsYXRlciBlZGl0cyBv biB0aGlzIGZ1bmN0aW9uIGluCnRoaXMgY2hlY2tvdXQuCgoqKlN0ZXAgNi4zOiBDSEVDSyBJRiBS RUxBVEVEIEZJWEVTIEFSRSBBTFJFQURZIEhFUkUqKgpSZWNvcmQ6IFRoaXMgaXMgdGhlIG9ubHkg 4oCcc3RhbGUgcGFnZSBmYXVsdOKAnSBjb21taXQuIE5vIGFsdGVybmF0ZSBmaXguClNpYmxpbmcg Y2xvY2tzIGNoYW5nZSBpcyBpbmRlcGVuZGVudC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQSEFTRSA3OiBTVUJTWVNURU0g QU5EIE1BSU5UQUlORVIgQ09OVEVYVAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCA3LjE6IElERU5USUZZIFRIRSBT VUJTWVNURU0gQU5EIElUUyBDUklUSUNBTElUWSoqClJlY29yZDogKipkcml2ZXJzL2lvbW11L3Jv Y2tjaGlwLWlvbW11LmMqKiDigJQgUm9ja2NoaXAgSU9NTVUuCkNyaXRpY2FsaXR5OiAqKklNUE9S VEFOVCoqIChwbGF0Zm9ybSBJT01NVSBmb3IgbXVsdGltZWRpYS9OUFUgRE1BOyBub3QKY29yZSBt bS9WRlMsIGJ1dCBhdHRhY2ggZmFpbHVyZSB0YWtlcyBkb3duIHRoZSBjb25zdW1lciBkZXZpY2Up LgoKKipTdGVwIDcuMjogQVNTRVNTIFNVQlNZU1RFTSBBQ1RJVklUWSoqClJlY29yZDogTWF0dXJl IGRyaXZlciAoMjAxNCksIHN0aWxsIHJlY2VpdmluZyBSb2NrY2hpcCBicmluZy11cCBmaXhlcy4K Sm9lcmfigJlzIHY3LjMgcHVsbDog4oCcUmV3b3JrIFJvY2tjaGlwIHN0YXRlIGhhbmRsaW5nIGFu ZCBmaXggY2xvY2ssIHByb2JlCmFuZCBzdGFsZS1mYXVsdCBoYW5kbGluZy7igJ0KCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQ SEFTRSA4OiBJTVBBQ1QgQU5EIFJJU0sgQVNTRVNTTUVOVAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCA4LjE6IERF VEVSTUlORSBXSE8gSVMgQUZGRUNURUQqKgpSZWNvcmQ6ICoqZHJpdmVyLXNwZWNpZmljIC8gcGxh dGZvcm0tc3BlY2lmaWMqKiDigJQKYENPTkZJR19ST0NLQ0hJUF9JT01NVWAgb24gUm9ja2NoaXAu IFByYWN0aWNhbCB0cmlnZ2VyIHJlcG9ydGVkIG9uClJLMzU3NiBOUFUgTU1VcyAodGhvc2UgRFQg bm9kZXMgYXJlICoqbm90KiogaW4gdGhpcyB0cmVlKS4gQW55IG11bHRpLQpiYW5rIGluc3RhbmNl IHdob3NlIGZpcm13YXJlIGxlYXZlcyBgUEFHRV9GQVVMVF9BQ1RJVkVgIGNhbiBoaXQgdGhlIHNh bWUKcG9sbCAoZS5nLiBpbi10cmVlIFJLMzU3NiBgdmRlY19tbXVgIGhhcyB0d28gYmFua3MpLgoK KipTdGVwIDguMjogREVURVJNSU5FIFRIRSBUUklHR0VSIENPTkRJVElPTlMqKgpSZWNvcmQ6IEJv b3QgZmlybXdhcmUgbGVmdG92ZXIgZmF1bHQsIHRoZW4gZmlyc3Qgc3RhbGwgZW5hYmxlIHdoaWxl CnBhZ2luZyBpcyBzdGlsbCBlbmFibGVkLiBUaW1pbmc6IHByb2JlL2F0dGFjaCBvciByZXN1bWUs IG5vdCBhIGhvdCBwYXRoLgpVbnByaXZpbGVnZWQgdXNlcnMgZG8gbm90IHRyaWdnZXIgaXQgZGly ZWN0bHk7IGl0IGlzIGZpcm13YXJlIMOXIGRyaXZlcgppbml0LiBObyBwdWJsaWMgcmVwcm9kdWNl ciBiZXlvbmQgdGhlIGF1dGhvcuKAmXMgUk9DSyA0RCBicmluZy11cC4KCioqU3RlcCA4LjM6IERF VEVSTUlORSBUSEUgRkFJTFVSRSBNT0RFIFNFVkVSSVRZKioKUmVjb3JkOiAqKklPTU1VIGVuYWJs ZSBmYWlscyBhZnRlciBhIDEgbXMgcG9sbCoqCihgUktfTU1VX1BPTExfVElNRU9VVF9VUz0xMDAw YCkuIEF0dGFjaCByZXR1cm5zIGVycm9yOyB0aGUgRE1BIGRldmljZQpkb2VzIG5vdCBnZXQgYSB3 b3JraW5nIElPTU1VLiAqKk5vdCoqIGEgcGFuaWMsIGhhbmcsIFVBRiwgb3IgY29ycnVwdGlvbi4K U2V2ZXJpdHk6ICoqSElHSCoqIGZvciB0aGUgYWZmZWN0ZWQgZGV2aWNlIChub24tZnVuY3Rpb25h bCksICoqTUVESVVNKioKc3lzdGVtLXdpZGUgKDEgbXMgdGltZW91dCArIGVycm9yLCByZXN0IG9m IHRoZSBtYWNoaW5lIGNvbnRpbnVlcykuCgoqKlN0ZXAgOC40OiBDQUxDVUxBVEUgUklTSy1CRU5F RklUIFJBVElPKioKUmVjb3JkOgotICoqQmVuZWZpdDoqKiBIYXJkd2FyZS9maXJtd2FyZSB3b3Jr YXJvdW5kIHNvIHN0YWxsIGVuYWJsZSBzdWNjZWVkczsKICBJT01NVSBhdHRhY2ggY2FuIHByb2Nl ZWQuIEhpZ2ggZm9yIFJLMzU3NiBOUFUgdXNlcnM7IG1vZGVzdCBmb3Igb3RoZXIKICBSb2NrY2hp cCBib2FyZHMgdW5sZXNzIGZpcm13YXJlIGxlYXZlcyB0aGUgc2FtZSBiaXQuCi0gKipSaXNrOioq IDEzIGxpbmVzLCBzdGF0dXMtZ2F0ZWQuIFRoZW9yZXRpY2FsIHNwdXJpb3VzIElSUSBpZgogIElO VF9TVEFUVVMgaXMgbm90IGNsZWFyZWQgb24gYGRpc2FibGUtbW11LXJlc2V0YCBkZXZpY2VzLiBO byBuZXcKICBsb2Nrcy9BUElzLgotICoqUmF0aW86KiogQmVuZWZpdCBvdXR3ZWlnaHMgcmlzay4g U2FtZSBjbGFzcyBhcyBvdGhlciBoYXJkd2FyZQogIGxlZnRvdmVyL3F1aXJrIGZpeGVzLgoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClBIQVNFIDk6IEZJTkFMIFNZTlRIRVNJUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCA5LjE6IENPTVBJTEUg VEhFIEVWSURFTkNFKioKCkZPUjoKLSBSZWFsLCBleHBsYWluZWQgZmFpbHVyZTogc3RhbGwgcG9s bCB0aW1lcyBvdXQsIGBya19pb21tdV9lbmFibGUoKWAKICBhYm9ydHMsIGRldmljZSBhdHRhY2gg ZmFpbHMuCi0gU21hbGwgKCsxMyksIGNvbnRhaW5lZCwgc3RhdHVzLWdhdGVkLgotIFNhbWUgY29t bWFuZCB0aGUgSVJRIGhhbmRsZXIgYWxyZWFkeSB1c2VzLgotIFdpbGwgRGVhY29uIGFwcGxpZWQg aXQgaW5kZXBlbmRlbnRseSBvZiB0aGUgdW5maW5pc2hlZCBOUFUgUkZDLgotIHY3LjMgSU9NTVUg cHVsbCBsaXN0ZWQgc3RhbGUtZmF1bHQgaGFuZGxpbmcgYXMgYSBmaXguCi0gRHJpdmVyIGFuZCBz dGFsbCBwYXRoIGV4aXN0IGluIHRoaXMgdHJlZSBzaW5jZSB2My4xOSAvIHY0LjYuCi0gSGFyZHdh cmUvZmlybXdhcmUgd29ya2Fyb3VuZCAoc3RhYmxlIGV4Y2VwdGlvbiBjYXRlZ29yeSkuCi0gTm8g bmV3IEFQSXMgb3IgZmVhdHVyZXMuCgpBR0FJTlNUOgotIE9yaWdpbmF0ZWQgaW4gYW4gUkZDIHNl cmllcyB0byBlbmFibGUgUkszNTc2IE5QVTsgTlBVIElPTU1VIERUIGlzCiAgc3RpbGwgbm90IGlu IHRoaXMgdHJlZS4KLSBPYnNlcnZlZCBvbiB0aGF0IE5QVSwgbm90IHJlcG9ydGVkIG9uIGxvbmct c2hpcHBlZCBWT1AvVkRFQy4KLSBOb3QgY3Jhc2gvc2VjdXJpdHkvY29ycnVwdGlvbjsgMSBtcyB0 aW1lb3V0IHRoZW4gZW5hYmxlIGZhaWx1cmUuCi0gU2FzaGlrbyBub3RlZCBtaXNzaW5nIGBJTlRf Q0xFQVJgOyB1bmFkZHJlc3NlZC4KLSBObyBGaXhlczovQ2M6c3RhYmxlIChub3QgYSBuZWdhdGl2 ZSBieSBpdHNlbGYpLgoKVU5SRVNPTFZFRDoKLSBsb3JlLmtlcm5lbC5vcmcvc3RhYmxlIHNlYXJj aCBIVFRQIDQwMy4KLSBXaGV0aGVyIGluLXRyZWUgdmRlYy92b3AgZmlybXdhcmUgYWxzbyBsZWF2 ZXMgYFBBR0VfRkFVTFRfQUNUSVZFYAogIChhdXRob3Igb25seSBjaXRlZCBOUFUpLgotIFdoZXRo ZXIgYSBsZWZ0b3ZlciBJTlRfU1RBVFVTIGFmdGVyIGBQQUdFX0ZBVUxUX0RPTkVgIGFjdHVhbGx5 IGZpcmVzCiAgb24gYGRpc2FibGUtbW11LXJlc2V0YCBoYXJkd2FyZS4KCioqU3RlcCA5LjI6IEFQ UExZIFRIRSBTVEFCTEUgUlVMRVMgQ0hFQ0tMSVNUKioKMS4gT2J2aW91c2x5IGNvcnJlY3QgYW5k IHRlc3RlZD8gKipQQVNTKiog4oCUIGxvZ2ljIG1hdGNoZXMgdGhlIGRlc2NyaWJlZAogICBoYXJk d2FyZSBzdGF0ZTsgYXV0aG9yIHRlc3RlZCBvbiBST0NLIDREOyBJT01NVSBtYWludGFpbmVyIGFw cGxpZWQKICAgaXQuCjIuIEZpeGVzIGEgcmVhbCBidWcgdGhhdCBhZmZlY3RzIHVzZXJzPyAqKlBB U1MqKiDigJQgc3RhbGwgdGltZW91dAogICBwcmV2ZW50cyBJT01NVSBlbmFibGUvYXR0YWNoLgoz LiBJbXBvcnRhbnQgaXNzdWU/ICoqUEFTUyoqIOKAlCBkZXZpY2UgSU9NTVUgbmV2ZXIgY29tZXMg dXAgKG5vdCBhIHBhbmljLAogICBidXQgaGFyZHdhcmUgbm9uLWZ1bmN0aW9uYWwpLiBTZXZlcml0 eSBISUdIIGZvciB0aGF0IGRldmljZS4KNC4gU21hbGwgYW5kIGNvbnRhaW5lZD8gKipQQVNTKiog 4oCUIDEzIGxpbmVzLCBvbmUgZnVuY3Rpb24uCjUuIE5vIG5ldyBmZWF0dXJlcyBvciBBUElzPyAq KlBBU1MqKgo2LiBDYW4gYXBwbHkgdG8gdGhlIGxvY2FsIHRyZWU/ICoqUEFTUyoqIOKAlCBzdGFs bCBwYXRoIGFuZCBzeW1ib2xzIGFyZQogICBoZXJlOyBodW5rIGlzIGEgY2xlYW4gaW5zZXJ0LgoK KipTdGVwIDkuMzogQ0hFQ0sgRk9SIEVYQ0VQVElPTiBDQVRFR09SSUVTKioKUmVjb3JkOiAqKkhh cmR3YXJlIHF1aXJrL3dvcmthcm91bmQqKiDigJQgZmlybXdhcmUgbGVmdG92ZXIKYFBBR0VfRkFV TFRfQUNUSVZFYCBzbyBzdGFsbCBjb21tYW5kcyB3b3JrLiBOb3QgYSBuZXcgZHJpdmVyLCBub3Qg YSBuZXcKdXNlcnNwYWNlIEFQSS4KCioqU3RlcCA5LjQ6IE1BS0UgWU9VUiBERUNJU0lPTioqCgpU aGlzIHRyZWUgaXMgNy4zLXJjNDsgdGhlIHN0YWxsIHBhdGggaXMgb2xkIGFuZCB0aGUgYnVnIGlz IGEgZmlybXdhcmUKbGVmdG92ZXIgdnMgdGhhdCBwYXRoLCBub3QgYSA3LjMtb25seSBmZWF0dXJl LiBUaGUgcGF0Y2ggaXMgYSBzbWFsbCwKbWFpbnRhaW5lci1hY2tlZCB3b3JrYXJvdW5kIHRoYXQg c3RvcHMgSU9NTVUgYXR0YWNoIGZyb20gZmFpbGluZy4gT3JpZ2luCmluIGFuIHVuZmluaXNoZWQg TlBVIFJGQyBkb2VzIG5vdCBtYWtlIGl0IGEgbmV3IEFQSTsgV2lsbCBtZXJnZWQgaXQgYXMgYQpz dGFuZGFsb25lIElPTU1VIGZpeC4gTWlzc2luZyBgSU5UX0NMRUFSYCBpcyBhIHJlc2lkdWFsIElS US1hY2sgY29uY2VybiwKbm90IGEgcmVhc29uIHRvIGRyb3AgYSBzdGFsbC10aW1lb3V0IGZpeCB0 aGF0IGFscmVhZHkgdXNlcyB0aGUKZG9jdW1lbnRlZCBmYXVsdC1kb25lIGNvbW1hbmQuCgpWZXJp ZmljYXRpb246Ci0gW1BoYXNlIDFdIFBhcnNlZCB0YWdzOiBvbmx5IGF1dGhvciBTT0IgKyBXaWxs IERlYWNvbiBTT0I7IG5vCiAgRml4ZXMvUmVwb3J0ZWQtYnkvQ2M6c3RhYmxlCi0gW1BoYXNlIDFd IEJvZHk6IFBBR0VfRkFVTFRfQUNUSVZFIGxlZnRvdmVyIOKGkiBFTkFCTEVfU1RBTEwgaWdub3Jl ZCDihpIKICBwb2xsIHRpbWVvdXQgb24gUkszNTc2IE5QVSBtdWx0aS1iYW5rIHBvbGwKLSBbUGhh c2UgMl0gRGlmZjogKzEzIGluIGBya19pb21tdV9lbmFibGVfc3RhbGwoKWA7IGxvb3AgYWNrcwog IGBQQUdFX0ZBVUxUX0FDVElWRWAgd2l0aCBgQ01EX1BBR0VfRkFVTFRfRE9ORWAKLSBbUGhhc2Ug Ml0gYHJrX2lvbW11X2VuYWJsZSgpYCByZXR1cm5zIG9uIHN0YWxsIHRpbWVvdXQgYmVmb3JlCiAg YGZvcmNlX3Jlc2V0YCAobGluZSA5NTAtOTUyKSDigJQgYXR0YWNoIGZhaWxzCi0gW1BoYXNlIDNd IGdpdCBibGFtZTogZnVuY3Rpb24gZnJvbSBjNjhhMjkyMTUyZDMyICh2My4xOSk7IHBvbGwgZnJv bQogIDA0MTZiZjY0NzlhY2VmICh2NC4xNyk7IG11bHRpLW1tdSBjZDY0MzhjNWY4NDQ2ICh2NC42 KQotIFtQaGFzZSAzXSBnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIGIxMGQ1OTIwY2FmYTIg SEVBRDogeWVzOyBub3QgaW4KICB2Ny4yOyBpbiB2Ny4zLXJjMQotIFtQaGFzZSAzXSBTaWJsaW5n IDg0MTM2M2ViYjUwODIgaXMgY2xvY2tzLW9ubHk7IG5vdCByZXF1aXJlZCBmb3IgdGhpcwogIGh1 bmsKLSBbUGhhc2UgNF0gYjQgZGlnIC1jIGIxMGQ1OTIwY2FmYTI6CiAgaHR0cHM6Ly9wYXRjaC5t c2dpZC5saW5rLzIwMjYwNzE4MDMxMTQ2LjMzNjg4MTEtNi1nYWhpbmdAZ2FoaW5nd29vLmNvbQot IFtQaGFzZSA0XSBiNCBkaWcgLWE6IFJGQyB2MSAoc2tpcCBiYW5rcykg4oaSIHYyICh0aGlzIGFj ayk7IFdpbGwgYXBwbGllZAogIHYyIDQvOCBhbmQgNS84Ci0gW1BoYXNlIDRdIGI0IGRpZyAtdzog aW9tbXUgbWFpbnRhaW5lcnMgKyByb2NrY2hpcCBsaXN0IG9uIENDCi0gW1BoYXNlIDRdIG1ib3g6 IFdpbGwg4oCcQXBwbGllZCBkcml2ZXIgY2hhbmdlcyB0byBpb21tdSAocm9ja2NoaXAp4oCdOwog IFNhc2hpa28gSU5UX0NMRUFSIHdhcm5pbmc7IG5vIGh1bWFuIE5BSwotIFtQaGFzZSA0XSBsb3Jl Lmtlcm5lbC5vcmcgV2ViRmV0Y2gvY3VybDogSFRUUCA0MDMg4oCUIHN0YWJsZS1saXN0CiAgZGlz Y3Vzc2lvbiBVTlZFUklGSUVECi0gW1BoYXNlIDVdIENhbGxlcnM6IGRpc2FibGUgKHVuY2hlY2tl ZCkgYW5kIGVuYWJsZSAoZmF0YWwpOyBlbmFibGUgZnJvbQogIGF0dGFjaF9kZXZpY2UgYW5kIHJl c3VtZQotIFtQaGFzZSA1XSBJUlEgaGFuZGxlciBhbHJlYWR5IGlzc3VlcyBQQUdFX0ZBVUxUX0RP TkUgYXQgbGluZSA2NDIKLSBbUGhhc2UgNl0gZ2l0IGRlc2NyaWJlIEhFQUQ6IHY3LjMtcmM0LTI3 LWdmMDEwMDM2M2Q4YzM3OyBNYWtlZmlsZQogIDcuMy4wLXJjNDsgZmlsZSBwcmVzZW50Ci0gW1Bo YXNlIDZdIE5vIE5QVSBJT01NVSBub2RlcyBpbgogIGFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2No aXAvcmszNTc2LmR0c2k7IHZkZWNfbW11IGlzIHR3by1iYW5rICsKICBkaXNhYmxlLW1tdS1yZXNl dAotIFtQaGFzZSA3XSBpb21tdS11cGRhdGVzLXY3LjMgbWVyZ2UgdGV4dDog4oCcZml4IGNsb2Nr LCBwcm9iZSBhbmQgc3RhbGUtCiAgZmF1bHQgaGFuZGxpbmfigJ0KLSBbUGhhc2UgOF0gRmFpbHVy ZTogMSBtcyBwb2xsIHRoZW4gSU9NTVUgZW5hYmxlL2F0dGFjaCBmYWlsdXJlOyBub3QKICBvb3Bz L1VBRgotIFVOVkVSSUZJRUQ6IHdoZXRoZXIgZmlybXdhcmUgbGVhdmVzIHRoaXMgYml0IG9uIGlu LXRyZWUgdmRlYy92b3A7CiAgd2hldGhlciBJTlRfU1RBVFVTIHNwdXJpb3VzIElSUSByZXByb2R1 Y2VzOyBzdGFibGVAIHRocmVhZAoKVGhlIGZpeCBpcyBzbWFsbCwgc3VyZ2ljYWwsIGFuZCBtZWV0 cyB0aGUgc3RhYmxlIGNyaXRlcmlhIGFzIGEgaGFyZHdhcmUKbGVmdG92ZXIgd29ya2Fyb3VuZCBp biBhIGxvbmctbGl2ZWQgZHJpdmVyLgoKKipZRVMqKgoKIGRyaXZlcnMvaW9tbXUvcm9ja2NoaXAt aW9tbXUuYyB8IDEzICsrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9yb2NrY2hpcC1pb21tdS5jIGIvZHJpdmVy cy9pb21tdS9yb2NrY2hpcC1pb21tdS5jCmluZGV4IDMwOWJhNzhlMjdkNGYuLjk4MmVhOWNhZmVl MWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvcm9ja2NoaXAtaW9tbXUuYworKysgYi9kcml2 ZXJzL2lvbW11L3JvY2tjaGlwLWlvbW11LmMKQEAgLTQyMiw2ICs0MjIsMTkgQEAgc3RhdGljIGlu dCBya19pb21tdV9lbmFibGVfc3RhbGwoc3RydWN0IHJrX2lvbW11ICppb21tdSkKIAlpZiAoIXJr X2lvbW11X2lzX3BhZ2luZ19lbmFibGVkKGlvbW11KSkKIAkJcmV0dXJuIDA7CiAKKwkvKgorCSAq IEJvb3QgZmlybXdhcmUgY2FuIGxlYXZlIGEgYmFuayBpbiBQQUdFX0ZBVUxUX0FDVElWRSB3aXRo IG5vIGhhbmRsZXIKKwkgKiAoUEFHRV9GQVVMVF9BQ1RJVkUgJiAhU1RBTExfQUNUSVZFICYgSURM RSkuICBTdWNoIGEgYmFuayBpZ25vcmVzCisJICogQ01EX0VOQUJMRV9TVEFMTCBhbmQgbmV2ZXIg cmVhY2hlcyBTVEFMTF9BQ1RJVkUsIHRpbWluZyBvdXQgdGhlIHBvbGwKKwkgKiBiZWxvdy4gIEFj a25vd2xlZGdlIGFueSBzdGFsZSBmYXVsdCBmaXJzdCBzbyBldmVyeSBiYW5rIHN0YXJ0cyBjbGVh bi4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgaW9tbXUtPm51bV9tbXU7IGkrKykgeworCQlpZiAo cmtfaW9tbXVfcmVhZChpb21tdS0+YmFzZXNbaV0sIFJLX01NVV9TVEFUVVMpICYKKwkJICAgIFJL X01NVV9TVEFUVVNfUEFHRV9GQVVMVF9BQ1RJVkUpCisJCQl3cml0ZWwoUktfTU1VX0NNRF9QQUdF X0ZBVUxUX0RPTkUsCisJCQkgICAgICAgaW9tbXUtPmJhc2VzW2ldICsgUktfTU1VX0NPTU1BTkQp OworCX0KKwogCXJrX2lvbW11X2NvbW1hbmQoaW9tbXUsIFJLX01NVV9DTURfRU5BQkxFX1NUQUxM KTsKIAogCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChya19pb21tdV9pc19zdGFsbF9hY3RpdmUs IGlvbW11LCB2YWwsCi0tIAoyLjUzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2No aXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==