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=-9.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 17ED0C43612 for ; Wed, 2 Jan 2019 11:48:04 +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 DA9F1218D3 for ; Wed, 2 Jan 2019 11:48:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="QpEcI9PD"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="fCnRcwR+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DA9F1218D3 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version: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=YVGpm3UJPd7kGROQ5ijSUFMdaZVEdUgYKs8qHCDm97M=; b=QpEcI9PDYOwrTy XzCowYpBPQFXhko3Kgkzy9sN/0N1kIoG9yZtsithyIQtFcP5L2inrCTLXmKqjZDJLiNk78nuiwJIg U56rVtNmQQscT3jRqidMnhzQLy6LxOzzfBAdAgqO4A/zHkPmMFuMJRCiEJHDf/iToxWrqMEn/NkZj U+66ekmaUVw/0GyRqVtEFvgeqpiNX1QvMsFLL6PMw0Ln3Z4qSUP1SwBGf1BVzk/TG0rvyfyyDBLBT I5Qta8Rw8uv1waVgOhYgPdLuiS5gNzLG5vmcgaEvMTnie/PY4nF+dWOZFw17t9VRJLIGlnwdnfLu7 sfQgv5EAYf6dmx6yrhkA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gef0D-0002n5-SJ; Wed, 02 Jan 2019 11:48:01 +0000 Received: from fllv0015.ext.ti.com ([198.47.19.141]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gef09-0002mV-0V for linux-arm-kernel@lists.infradead.org; Wed, 02 Jan 2019 11:47:59 +0000 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id x02BlTOY036515; Wed, 2 Jan 2019 05:47:29 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1546429649; bh=g4AWYdi5E6w4MMzotq7AXCMkvN0wfDRJ7yOvOZT9zm0=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=fCnRcwR+SK3hKlDvkrzdSFwSbzya1Rw2x6KkpSKPNIN2rNbo8rwpLMvCVLv9Eje4k xAcPc7cJngj7WjRfRWN7bVe9NSg9BMFUEsAXMCB4rQOZgYvpUavSUj2EYLX389fhpX E74aHrzTnQw2pOY9IKwrFzj8geu5i/EKbeZBYO5s= Received: from DFLE100.ent.ti.com (dfle100.ent.ti.com [10.64.6.21]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x02BlT0s120625 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 2 Jan 2019 05:47:29 -0600 Received: from DFLE103.ent.ti.com (10.64.6.24) by DFLE100.ent.ti.com (10.64.6.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Wed, 2 Jan 2019 05:47:27 -0600 Received: from dlep32.itg.ti.com (157.170.170.100) by DFLE103.ent.ti.com (10.64.6.24) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1591.10 via Frontend Transport; Wed, 2 Jan 2019 05:47:27 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by dlep32.itg.ti.com (8.14.3/8.13.8) with ESMTP id x02BlOo6028290; Wed, 2 Jan 2019 05:47:25 -0600 Subject: Re: [RFC PATCH v4 12/13] irqchip: ti-sci-inta: Add support for Interrupt Aggregator driver To: Lokesh Vutla , , Nishanth Menon , Santosh Shilimkar , Rob Herring , , References: <20181227060829.5080-1-lokeshvutla@ti.com> <20181227061313.5451-1-lokeshvutla@ti.com> <20181227061313.5451-12-lokeshvutla@ti.com> From: Peter Ujfalusi Message-ID: <9efbb01b-2ef9-13e7-f871-8db2c92844ee@ti.com> Date: Wed, 2 Jan 2019 13:49:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <20181227061313.5451-12-lokeshvutla@ti.com> Content-Language: en-US X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190102_034757_239904_F3909BAD X-CRM114-Status: GOOD ( 34.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tero Kristo , Device Tree Mailing List , Sekhar Nori , linux-kernel@vger.kernel.org, Linux ARM Mailing List 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 CgoKT24gMjcvMTIvMjAxOCA4LjEzLCBMb2tlc2ggVnV0bGEgd3JvdGU6Cj4gVGV4YXMgSW5zdHJ1 bWVudHMnIEszIGdlbmVyYXRpb24gU29DcyBoYXMgYW4gSVAgSW50ZXJydXB0IEFnZ3JlZ2F0b3IK PiB3aGljaCBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0IGRvZXMgdGhlIGZvbGxvd2lu ZzoKPiAtIENvbnZlcnRzIGV2ZW50cyB0byBpbnRlcnJ1cHRzIHRoYXQgY2FuIGJlIHVuZGVyc3Rv b2QgYnkKPiAgIGFuIGludGVycnVwdCByb3V0ZXIuCj4gLSBBbGxvd3MgZm9yIG11bHRpcGxleGlu ZyBvZiBldmVudHMgdG8gaW50ZXJydXB0cy4KPiAKPiBDb25maWd1cmF0aW9uIG9mIHRoZSBpbnRl cnJ1cHQgYWdncmVnYXRvciByZWdpc3RlcnMgY2FuIG9ubHkgYmUgZG9uZSBieQo+IGEgc3lzdGVt IGNvLXByb2Nlc3NvciBhbmQgdGhlIGRyaXZlciBuZWVkcyB0byBzZW5kIGEgbWVzc2FnZSB0byB0 aGlzCj4gY28gcHJvY2Vzc29yIG92ZXIgVElTQ0kgcHJvdG9jb2wuCj4gCj4gQWRkIHN1cHBvcnQg Zm9yIEludGVycnVwdCBBZ2dyZWdhdG9yIGRyaXZlciBvdmVyIFRJU0NJIHByb3RvY29sLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IExva2VzaCBWdXRsYSA8bG9rZXNodnV0bGFAdGkuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IFBldGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVzaUB0aS5jb20+Cj4gLS0tCj4g IE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvaXJx Y2hpcC9LY29uZmlnICAgICAgICAgICB8ICAxMiArCj4gIGRyaXZlcnMvaXJxY2hpcC9NYWtlZmls ZSAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvaXJxY2hpcC9pcnEtdGktc2NpLWludGEuYyB8 IDU2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCA1 NzUgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9pcnFjaGlwL2ly cS10aS1zY2ktaW50YS5jCj4gCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5F UlMKPiBpbmRleCBhZWJjZTYxNTE1MWUuLjdkMTI3ODhjODQ0YSAxMDA2NDQKPiAtLS0gYS9NQUlO VEFJTkVSUwo+ICsrKyBiL01BSU5UQUlORVJTCj4gQEAgLTE1MDI2LDYgKzE1MDI2LDcgQEAgRjoJ ZHJpdmVycy9yZXNldC9yZXNldC10aS1zY2kuYwo+ICBGOglEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksc2NpLWludHIudHh0Cj4gIEY6CURv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci90aSxz Y2ktaW50YS50eHQKPiAgRjoJZHJpdmVycy9pcnFjaGlwL2lycS10aS1zY2ktaW50ci5jCj4gK0Y6 CWRyaXZlcnMvaXJxY2hpcC9pcnEtdGktc2NpLWludGEuYwo+ICAKPiAgVGV4YXMgSW5zdHJ1bWVu dHMgQVNvQyBkcml2ZXJzCj4gIE06CVBldGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVzaUB0aS5j b20+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnIGIvZHJpdmVycy9pcnFj aGlwL0tjb25maWcKPiBpbmRleCBhOGQ5YmVkMDI1NGIuLmQxNmZkMzk0MDhhZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvaXJxY2hpcC9LY29u ZmlnCj4gQEAgLTQxNyw2ICs0MTcsMTggQEAgY29uZmlnIFRJX1NDSV9JTlRSX0lSUUNISVAKPiAg CSAgSWYgeW91IHdpc2ggdG8gdXNlIGludGVycnVwdCByb3V0ZXIgaXJxIHJlc291cmNlcyBtYW5h Z2VkIGJ5IHRoZQo+ICAJICBUSSBTeXN0ZW0gQ29udHJvbGxlciwgc2F5IFkgaGVyZS4gT3RoZXJ3 aXNlLCBzYXkgTi4KPiAgCj4gK2NvbmZpZyBUSV9TQ0lfSU5UQV9JUlFDSElQCj4gKwlib29sCj4g KwlkZXBlbmRzIG9uIFRJX1NDSV9QUk9UT0NPTCAmJiBBUkNIX0szCj4gKwlzZWxlY3QgSVJRX0RP TUFJTgo+ICsJc2VsZWN0IElSUV9ET01BSU5fSElFUkFSQ0hZCj4gKwlzZWxlY3QgSzNfSU5UQV9N U0lfRE9NQUlOCj4gKwloZWxwCj4gKwkgIFRoaXMgZW5hYmxlcyB0aGUgaXJxY2hpcCBkcml2ZXIg c3VwcG9ydCBmb3IgSzMgSW50ZXJydXB0IGFnZ3JlZ2F0b3IKPiArCSAgb3ZlciBUSSBTeXN0ZW0g Q29udHJvbCBJbnRlcmZhY2UgYXZhaWxhYmxlIG9uIHNvbWUgbmV3IFRJJ3MgU29Dcy4KPiArCSAg SWYgeW91IHdpc2ggdG8gdXNlIGludGVycnVwdCBhZ2dyZWdhdG9yIGlycSByZXNvdXJjZXMgbWFu YWdlZCBieSB0aGUKPiArCSAgVEkgU3lzdGVtIENvbnRyb2xsZXIsIHNheSBZIGhlcmUuIE90aGVy d2lzZSwgc2F5IE4uCj4gKwo+ICBlbmRtZW51Cj4gIAo+ICBjb25maWcgU0lGSVZFX1BMSUMKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlIGIvZHJpdmVycy9pcnFjaGlwL01h a2VmaWxlCj4gaW5kZXggYjRmZjM3NmEwOGVmLi5hNjc5NDkwYTcwNTkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxl Cj4gQEAgLTk1LDMgKzk1LDQgQEAgb2JqLSQoQ09ORklHX1NJRklWRV9QTElDKQkJKz0gaXJxLXNp Zml2ZS1wbGljLm8KPiAgb2JqLSQoQ09ORklHX0lNWF9JUlFTVEVFUikJCSs9IGlycS1pbXgtaXJx c3RlZXIubwo+ICBvYmotJChDT05GSUdfTUFERVJBX0lSUSkJCSs9IGlycS1tYWRlcmEubwo+ICBv YmotJChDT05GSUdfVElfU0NJX0lOVFJfSVJRQ0hJUCkJKz0gaXJxLXRpLXNjaS1pbnRyLm8KPiAr b2JqLSQoQ09ORklHX1RJX1NDSV9JTlRBX0lSUUNISVApCSs9IGlycS10aS1zY2ktaW50YS5vCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtdGktc2NpLWludGEuYyBiL2RyaXZlcnMv aXJxY2hpcC9pcnEtdGktc2NpLWludGEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi43OGJmYzgzYTA3OWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9pcnFjaGlwL2lycS10aS1zY2ktaW50YS5jCj4gQEAgLTAsMCArMSw1NjEgQEAKPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogVGV4YXMgSW5zdHJ1bWVu dHMnIEszIEludGVycnVwdCBBZ2dyZWdhdG9yIGlycWNoaXAgZHJpdmVyCj4gKyAqCj4gKyAqIENv cHlyaWdodCAoQykgMjAxOCBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8v d3d3LnRpLmNvbS8KPiArICoJTG9rZXNoIFZ1dGxhIDxsb2tlc2h2dXRsYUB0aS5jb20+Cj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4K PiArI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaXJxY2hpcC5oPgo+ ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2Fk ZHJlc3MuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPgo+ICsjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvaXJxZG9tYWluLmg+CgpUbyBmaXggdGhpczoKCmRyaXZlcnMvaXJxY2hpcC9pcnEtdGkt c2NpLWludGEuYzogSW4gZnVuY3Rpb24g4oCYaW50YV9tc2lfaXJxX2hhbmRsZXLigJk6CmRyaXZl cnMvaXJxY2hpcC9pcnEtdGktc2NpLWludGEuYzozMDg6ODogZXJyb3I6IOKAmElSUUZfVFJJR0dF Ul9ISUdI4oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlv dSBtZWFuIOKAmElSUURfVFJJR0dFUl9NQVNL4oCZPwogICAgICAgIElSUUZfVFJJR0dFUl9ISUdI KQogICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+CiAgICAgICAgSVJRRF9UUklHR0VSX01BU0sKZHJp dmVycy9pcnFjaGlwL2lycS10aS1zY2ktaW50YS5jOjMwODo4OiBub3RlOiBlYWNoIHVuZGVjbGFy ZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQg YXBwZWFycyBpbgpkcml2ZXJzL2lycWNoaXAvaXJxLXRpLXNjaS1pbnRhLmM6IEluIGZ1bmN0aW9u IOKAmHRpX3NjaV9pbnRhX2FsbG9jX3BhcmVudF9pcnHigJk6CmRyaXZlcnMvaXJxY2hpcC9pcnEt dGktc2NpLWludGEuYzozNjA6Mjc6IGVycm9yOiDigJhJUlFGX1RSSUdHRVJfSElHSOKAmSB1bmRl Y2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiDigJhJUlFE X1RSSUdHRVJfTUFTS+KAmT8KICBwYXJlbnRfZndzcGVjLnBhcmFtWzJdID0gSVJRRl9UUklHR0VS X0hJR0g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgIElSUURfVFJJR0dFUl9NQVNLCm1ha2VbM106ICoqKiBbc2Ny aXB0cy9NYWtlZmlsZS5idWlsZDoyNzY6IGRyaXZlcnMvaXJxY2hpcC9pcnEtdGktc2NpLWludGEu b10gRXJyb3IgMQoKQWRkIHRoaXM6CiNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3NvYy90aS90aV9zY2lfcHJvdG9jb2wuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3NvYy90aS9rM19pbnRhX21zaS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaXJxY2hpcC9jaGFpbmVk X2lycS5oPgo+ICsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbXNpLmg+Cj4gKwo+ICsjZGVmaW5lIE1B WF9FVkVOVFNfUEVSX1ZJTlQJNjQKPiArCj4gKyNkZWZpbmUgVklOVF9FTkFCTEVfU0VUX09GRlNF VAkweDAKPiArI2RlZmluZSBWSU5UX0VOQUJMRV9DTFJfT0ZGU0VUCTB4OAo+ICsjZGVmaW5lIFZJ TlRfU1RBVFVTX09GRlNFVAkweDE4Cj4gKwo+ICsjZGVmaW5lIFRJX1NDSV9ERVZfSURfTUFTSwkw eGZmZmYKPiArI2RlZmluZSBUSV9TQ0lfREVWX0lEX1NISUZUCTE2Cj4gKyNkZWZpbmUgVElfU0NJ X0lSUV9JRF9NQVNLCTB4ZmZmZgo+ICsjZGVmaW5lIFRJX1NDSV9JUlFfSURfU0hJRlQJMAo+ICsK PiArI2RlZmluZSBIV0lSUV9UT19ERVZJRChod2lycSkJKCgoaHdpcnEpID4+IChUSV9TQ0lfREVW X0lEX1NISUZUKSkgJiBcCj4gKwkJCQkgKFRJX1NDSV9ERVZfSURfTUFTSykpCj4gKyNkZWZpbmUg SFdJUlFfVE9fSVJRSUQoaHdpcnEpCSgoaHdpcnEpICYgKFRJX1NDSV9JUlFfSURfTUFTSykpCj4g Kwo+ICsvKioKPiArICogc3RydWN0IHRpX3NjaV9pbnRhX2lycV9kb21haW4gLSBTdHJ1Y3R1cmUg cmVwcmVzZW50aW5nIGEgVElTQ0kgYmFzZWQKPiArICoJCQkJICAgSW50ZXJydXB0IEFnZ3JlZ2F0 b3IgSVJRIGRvbWFpbi4KPiArICogQHNjaToJUG9pbnRlciB0byBUSVNDSSBoYW5kbGUKPiArICog QHZpbnQ6CVRJU0NJIHJlc291cmNlIHBvaW50ZXIgcmVwcmVzZW50aW5nIElBIGluZXJydXB0cy4K PiArICogQGdsb2JhbF9ldmVudDpUSVNDSSByZXNvdXJjZSBwb2ludGVyIHJlcHJlc2VudGluZyBn bG9iYWwgZXZlbnRzLgo+ICsgKiBAYmFzZToJQmFzZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbWFw cGVkIElPIHJlZ2lzdGVycwo+ICsgKiBAaWFfaWQ6CVRJU0NJIGRldmljZSBJRCBvZiB0aGlzIElu dGVycnVwdCBBZ2dyZWdhdG9yLgo+ICsgKiBAZHN0X2lkOglUSVNDSSBkZXZpY2UgSUQgb2YgdGhl IGRlc3RpbmF0aW9uIGlycSBjb250cm9sbGVyLgo+ICsgKi8KPiArc3RydWN0IHRpX3NjaV9pbnRh X2lycV9kb21haW4gewo+ICsJY29uc3Qgc3RydWN0IHRpX3NjaV9oYW5kbGUgKnNjaTsKPiArCXN0 cnVjdCB0aV9zY2lfcmVzb3VyY2UgKnZpbnQ7Cj4gKwlzdHJ1Y3QgdGlfc2NpX3Jlc291cmNlICpn bG9iYWxfZXZlbnQ7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gKwl1MTYgaWFfaWQ7Cj4gKwl1 MTYgZHN0X2lkOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB0aV9zY2lfaW50YV9ldmVu dF9kZXNjIC0gRGVzY3JpcHRpb24gb2YgYW4gZXZlbnQgY29taW5nIHRvCj4gKyAqCQkJCSAgIElu dGVycnVwdCBBZ2dyZWdhdG9yLgo+ICsgKiBAZ2xvYmFsX2V2ZW50OglHbG9iYWwgZXZlbnQgbnVt YmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBldmVudAo+ICsgKiBAc3JjX2lkOgkJVElTQ0kgZGV2 aWNlIElEIG9mIHRoZSBldmVudCBzb3VyY2UKPiArICogQHNyY19pbmRleDoJCUV2ZW50IHNvdXJj ZSBpbmRleCB3aXRoaW4gdGhlIGRldmljZS4KPiArICovCj4gK3N0cnVjdCB0aV9zY2lfaW50YV9l dmVudF9kZXNjIHsKPiArCXUxNiBnbG9iYWxfZXZlbnQ7Cj4gKwl1MTYgc3JjX2lkOwo+ICsJdTE2 IHNyY19pbmRleDsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdGlfc2NpX2ludGFfdmlu dF9kZXNjIC0gRGVzY3JpcHRpb24gb2YgYSB2aXJ0dWFsIGludGVycnVwdCBjb21pbmcgb3V0Cj4g KyAqCQkJCSAgb2YgSW50ZXJydXB0IEFnZ3JlZ2F0b3IuCj4gKyAqIEBkb21haW46CQlQb2ludGVy IHRvIElSUSBkb21haW4gdG8gd2hpY2ggdGhpcyB2aW50IGJlbG9uZ3MuCj4gKyAqIEBldmVudF9s b2NrOgkJbG9jayB0byBndWFyZCB0aGUgZXZlbnQgbWFwCj4gKyAqIEBldmVudF9tYXA6CQlCaXRt YXAgdG8gbWFuYWdlIHRoZSBhbGxvY2F0aW9uIG9mIGV2ZW50cyB0byB2aW50Lgo+ICsgKiBAZXZl bnRzOgkJQXJyYXkgb2YgZXZlbnQgZGVzY3JpcHRvcnMgYXNzaWduZWQgdG8gdGhpcyB2aW50Lgo+ ICsgKiBAcGFyZW50X3ZpcnE6CUxpbnV4IElSUSBudW1iZXIgdGhhdCBnZXRzIGF0dGFjaGVkIHRv IHBhcmVudAo+ICsgKiBAdmludF9pZDoJCVRJU0NJIHZpbnQgSUQKPiArICovCj4gK3N0cnVjdCB0 aV9zY2lfaW50YV92aW50X2Rlc2Mgewo+ICsJc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsKPiAr CXN0cnVjdCBtdXRleCBldmVudF9sb2NrOwo+ICsJdW5zaWduZWQgbG9uZyAqZXZlbnRfbWFwOwo+ ICsJc3RydWN0IHRpX3NjaV9pbnRhX2V2ZW50X2Rlc2MgZXZlbnRzW01BWF9FVkVOVFNfUEVSX1ZJ TlRdOwo+ICsJdW5zaWduZWQgaW50IHBhcmVudF92aXJxOwo+ICsJdTE2IHZpbnRfaWQ7Cj4gK307 Cj4gKwo+ICtzdGF0aWMgaW50IF9fZ2V0X2V2ZW50X2luZGV4KHN0cnVjdCB0aV9zY2lfaW50YV92 aW50X2Rlc2MgKnZpbnRfZGVzYywKPiArCQkJICAgICBpbnQgZ2xvYmFsX2V2ZW50KQo+ICt7Cj4g KwlpbnQgZXZlbnRfaW5kZXggPSAtRU5PREVWLCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBN QVhfRVZFTlRTX1BFUl9WSU5UOyBpKyspIHsKPiArCQlpZiAodmludF9kZXNjLT5ldmVudHNbaV0u Z2xvYmFsX2V2ZW50ID09IGdsb2JhbF9ldmVudCkKPiArCQkJZXZlbnRfaW5kZXggPSBpOwo+ICsJ fQo+ICsKPiArCXJldHVybiBldmVudF9pbmRleDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX190 aV9zY2lfaW50YV9tYW5hZ2VfZXZlbnQoc3RydWN0IGlycV9kYXRhICpkYXRhLCB1MzIgb2Zmc2V0 KQo+ICt7Cj4gKwlzdHJ1Y3QgdGlfc2NpX2ludGFfdmludF9kZXNjICp2aW50X2Rlc2M7Cj4gKwlz dHJ1Y3QgdGlfc2NpX2ludGFfaXJxX2RvbWFpbiAqaW50YTsKPiArCWludCBnbG9iYWxfZXZlbnQs IGV2ZW50X2luZGV4Owo+ICsKPiArCXZpbnRfZGVzYyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9k YXRhKGRhdGEpOwo+ICsJZ2xvYmFsX2V2ZW50ID0gZGF0YS0+aHdpcnE7Cj4gKwlldmVudF9pbmRl eCA9IF9fZ2V0X2V2ZW50X2luZGV4KHZpbnRfZGVzYywgZ2xvYmFsX2V2ZW50KTsKPiArCWludGEg PSB2aW50X2Rlc2MtPmRvbWFpbi0+aG9zdF9kYXRhOwo+ICsKPiArCWlmIChldmVudF9pbmRleCA8 IDApCj4gKwkJcmV0dXJuOwo+ICsKPiArCXdyaXRlcV9yZWxheGVkKEJJVChldmVudF9pbmRleCks IGludGEtPmJhc2UgKwo+ICsJCSAgICAgICB2aW50X2Rlc2MtPnZpbnRfaWQgKiAweDEwMDAgKyBv ZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0aV9zY2lfaW50YV9tYXNrX2lycShzdHJ1 Y3QgaXJxX2RhdGEgKmRhdGEpCj4gK3sKPiArCV9fdGlfc2NpX2ludGFfbWFuYWdlX2V2ZW50KGRh dGEsIFZJTlRfRU5BQkxFX0NMUl9PRkZTRVQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0aV9z Y2lfaW50YV91bm1hc2tfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKPiArewo+ICsJX190aV9z Y2lfaW50YV9tYW5hZ2VfZXZlbnQoZGF0YSwgVklOVF9FTkFCTEVfU0VUX09GRlNFVCk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdGlfc2NpX2ludGFfc2V0X2FmZmluaXR5KHN0cnVjdCBpcnFfZGF0 YSAqZCwKPiArCQkJCSAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFza192YWwsIGJvb2wgZm9y Y2UpCj4gK3sKPiArCXN0cnVjdCB0aV9zY2lfaW50YV92aW50X2Rlc2MgKnZpbnRfZGVzYyA9IGly cV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOwo+ICsJc3RydWN0IGlycV9jaGlwICpjaGlwID0g aXJxX2dldF9jaGlwKHZpbnRfZGVzYy0+cGFyZW50X3ZpcnEpOwo+ICsJc3RydWN0IGlycV9kYXRh ICpkYXRhID0gaXJxX2dldF9pcnFfZGF0YSh2aW50X2Rlc2MtPnBhcmVudF92aXJxKTsKPiArCj4g KwlpZiAoY2hpcCAmJiBjaGlwLT5pcnFfc2V0X2FmZmluaXR5KQo+ICsJCXJldHVybiBjaGlwLT5p cnFfc2V0X2FmZmluaXR5KGRhdGEsIG1hc2tfdmFsLCBmb3JjZSk7Cj4gKwllbHNlCj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgdGlfc2NpX2lu dGFfaXJxX2NoaXAgPSB7Cj4gKwkubmFtZQkJCT0gIklOVEEiLAo+ICsJLmlycV9tYXNrCQk9IHRp X3NjaV9pbnRhX21hc2tfaXJxLAo+ICsJLmlycV91bm1hc2sJCT0gdGlfc2NpX2ludGFfdW5tYXNr X2lycSwKPiArCS5pcnFfc2V0X2FmZmluaXR5CT0gdGlfc2NpX2ludGFfc2V0X2FmZmluaXR5LAo+ ICt9Owo+ICsKPiArLyoqCj4gKyAqIHRpX3NjaV9mcmVlX2V2ZW50X2lycSgpIC0gRnJlZSBhbiBl dmVudCBmcm9tIHZpbnQKPiArICogQGRvbWFpbjoJUG9pbnRlciB0byBJbnRlcnJ1cHQgQWdncmVn YXRvciBJUlEgZG9tYWluCj4gKyAqIEB2aW50X2Rlc2M6CVZpcnR1YWwgaW50ZXJydXB0IGRlc2Ny aXB0b3IgY29udGFpbmluZyB0aGUgZXZlbnQuCj4gKyAqIEBnbG9iYWxfZXZlbnQ6IEdsb2JhbCBl dmVudCBpZCB0byBiZSBmcmVlZC4KPiArICovCj4gK3N0YXRpYyB2b2lkIHRpX3NjaV9mcmVlX2V2 ZW50X2lycShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLAo+ICsJCQkJICBzdHJ1Y3QgdGlfc2Np X2ludGFfdmludF9kZXNjICp2aW50X2Rlc2MsCj4gKwkJCQkgIHUxNiBnbG9iYWxfZXZlbnQpCj4g K3sKPiArCXN0cnVjdCB0aV9zY2lfaW50YV9pcnFfZG9tYWluICppbnRhID0gZG9tYWluLT5ob3N0 X2RhdGE7Cj4gKwlzdHJ1Y3QgdGlfc2NpX2ludGFfZXZlbnRfZGVzYyAqZXZlbnRfZGVzYzsKPiAr CXN0cnVjdCBpcnFfZGF0YSAqZ2ljX2RhdGE7Cj4gKwlpbnQgZXZlbnRfaW5kZXggPSAwOwo+ICsK PiArCWV2ZW50X2luZGV4ID0gX19nZXRfZXZlbnRfaW5kZXgodmludF9kZXNjLCBnbG9iYWxfZXZl bnQpOwo+ICsJZ2ljX2RhdGEgPSBpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4tPnBhcmVu dC0+cGFyZW50LAo+ICsJCQkJCSAgIHZpbnRfZGVzYy0+cGFyZW50X3ZpcnEpOwo+ICsJZXZlbnRf ZGVzYyA9ICZ2aW50X2Rlc2MtPmV2ZW50c1tldmVudF9pbmRleF07Cj4gKwlpbnRhLT5zY2ktPm9w cy5ybV9pcnFfb3BzLmZyZWVfZXZlbnRfaXJxKGludGEtPnNjaSwKPiArCQkJCQkJIGV2ZW50X2Rl c2MtPnNyY19pZCwKPiArCQkJCQkJIGV2ZW50X2Rlc2MtPnNyY19pbmRleCwKPiArCQkJCQkJIGlu dGEtPmRzdF9pZCwKPiArCQkJCQkJIGdpY19kYXRhLT5od2lycSwKPiArCQkJCQkJIGludGEtPmlh X2lkLAo+ICsJCQkJCQkgdmludF9kZXNjLT52aW50X2lkLAo+ICsJCQkJCQkgZXZlbnRfZGVzYy0+ Z2xvYmFsX2V2ZW50LAo+ICsJCQkJCQkgZXZlbnRfaW5kZXgpOwo+ICsKPiArCWNsZWFyX2JpdChl dmVudF9pbmRleCwgdmludF9kZXNjLT5ldmVudF9tYXApOwo+ICsKPiArCXRpX3NjaV9yZWxlYXNl X3Jlc291cmNlKGludGEtPmdsb2JhbF9ldmVudCwgZXZlbnRfZGVzYy0+Z2xvYmFsX2V2ZW50KTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgdGlfc2NpX2ludGFfZnJlZV92aW50KHN0cnVjdCB0aV9z Y2lfaW50YV9pcnFfZG9tYWluICppbnRhLAo+ICsJCQkJICBzdHJ1Y3QgdGlfc2NpX2ludGFfdmlu dF9kZXNjICp2aW50X2Rlc2MpCj4gK3sKPiArCS8qIElmIGFsbCBldmVudHMgYXJlIGNsZWFyZWQs IGRlbGV0ZSBwYXJlbnQgaXJxICovCj4gKwlpZiAoZmluZF9maXJzdF9iaXQodmludF9kZXNjLT5l dmVudF9tYXAsIE1BWF9FVkVOVFNfUEVSX1ZJTlQpID09Cj4gKwkgICAgTUFYX0VWRU5UU19QRVJf VklOVCkgewo+ICsJCWlycV9kaXNwb3NlX21hcHBpbmcodmludF9kZXNjLT5wYXJlbnRfdmlycSk7 Cj4gKwkJdGlfc2NpX3JlbGVhc2VfcmVzb3VyY2UoaW50YS0+dmludCwgdmludF9kZXNjLT52aW50 X2lkKTsKPiArCQlrZnJlZSh2aW50X2Rlc2MtPmV2ZW50X21hcCk7Cj4gKwkJa2ZyZWUodmludF9k ZXNjKTsKPiArCX0KPiArfQo+ICsKPiArLyoqCj4gKyAqIHRpX3NjaV9pbnRhX2lycV9kb21haW5f ZnJlZSgpIC0gRnJlZSBhbiBJUlEgZnJvbSB0aGUgSVJRIGRvbWFpbgo+ICsgKiBAZG9tYWluOglE b21haW4gdG8gd2hpY2ggdGhlIGlycXMgYmVsb25nCj4gKyAqIEB2aXJxOgliYXNlIGxpbnV4IHZp cnR1YWwgSVJRIHRvIGJlIGZyZWVkLgo+ICsgKiBAbnJfaXJxczoJTnVtYmVyIG9mIGNvbnRpbnVv dXMgaXJxcyB0byBiZSBmcmVlZAo+ICsgKi8KPiArc3RhdGljIHZvaWQgdGlfc2NpX2ludGFfaXJx X2RvbWFpbl9mcmVlKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sCj4gKwkJCQkJdW5zaWduZWQg aW50IHZpcnEsIHVuc2lnbmVkIGludCBucl9pcnFzKQo+ICt7Cj4gKwlzdHJ1Y3QgaXJxX2Rlc2Mg KmRlc2MgPSBpcnFfdG9fZGVzYyh2aXJxKTsKPiArCXN0cnVjdCB0aV9zY2lfaW50YV92aW50X2Rl c2MgKnZpbnRfZGVzYzsKPiArCXN0cnVjdCBtc2lfZGVzYyAqbWRlc2M7Cj4gKwlzdHJ1Y3QgaXJx X2RhdGEgKmRhdGE7Cj4gKwo+ICsJbWRlc2MgPSBkZXNjLT5pcnFfY29tbW9uX2RhdGEubXNpX2Rl c2M7Cj4gKwlkYXRhID0gaXJxX2RvbWFpbl9nZXRfaXJxX2RhdGEoZG9tYWluLCB2aXJxKTsKPiAr CXZpbnRfZGVzYyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOwo+ICsKPiArCW1k ZXNjLT5tc2cuZGF0YSA9IHZpbnRfZGVzYy0+cGFyZW50X3ZpcnE7Cj4gKwl0aV9zY2lfZnJlZV9l dmVudF9pcnEoZG9tYWluLCB2aW50X2Rlc2MsIGRhdGEtPmh3aXJxKTsKPiArCWlycV9kb21haW5f cmVzZXRfaXJxX2RhdGEoZGF0YSk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiB0aV9zY2lfYWxsb2Nh dGVfZXZlbnRfaXJxKCkgLSBBbGxvY2F0ZSBhbiBldmVudCB0byBhIElBIHZpbnQuCj4gKyAqCj4g KyAqIFJldHVybiAwIGlmIGFsbCB3ZW50IG9rIGVsc2UgYXBwcm9wcmlhdGUgZXJyb3IgdmFsdWUu Cj4gKyAqLwo+ICtzdGF0aWMgc3RydWN0IHRpX3NjaV9pbnRhX2V2ZW50X2Rlc2MgKgo+ICt0aV9z Y2lfYWxsb2NhdGVfZXZlbnRfaXJxKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIG1zaV9hbGxv Y19pbmZvX3QgKmFyZykKPiArewo+ICsJc3RydWN0IHRpX3NjaV9pbnRhX2lycV9kb21haW4gKmlu dGEgPSBkb21haW4tPmhvc3RfZGF0YTsKPiArCXN0cnVjdCB0aV9zY2lfaW50YV9ldmVudF9kZXNj ICpldmVudF9kZXNjOwo+ICsJdTE2IGZyZWVfYml0LCBzcmNfaWQsIHNyY19pbmRleCwgZHN0X2ly cTsKPiArCXN0cnVjdCB0aV9zY2lfaW50YV92aW50X2Rlc2MgKnZpbnRfZGVzYzsKPiArCXN0cnVj dCBpcnFfZGF0YSAqZ2ljX2RhdGE7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCXNyY19pZCA9IEhXSVJR X1RPX0RFVklEKGFyZy0+aHdpcnEpOwo+ICsJc3JjX2luZGV4ID0gSFdJUlFfVE9fSVJRSUQoYXJn LT5od2lycSk7Cj4gKwl2aW50X2Rlc2MgPSBhcmctPnNjcmF0Y2hwYWRbMF0ucHRyOwo+ICsJZ2lj X2RhdGEgPSBpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4tPnBhcmVudC0+cGFyZW50LAo+ ICsJCQkJCSAgIHZpbnRfZGVzYy0+cGFyZW50X3ZpcnEpOwo+ICsJZHN0X2lycSA9IGdpY19kYXRh LT5od2lycTsKPiArCj4gKwltdXRleF9sb2NrKCZ2aW50X2Rlc2MtPmV2ZW50X2xvY2spOwo+ICsJ ZnJlZV9iaXQgPSBmaW5kX2ZpcnN0X3plcm9fYml0KHZpbnRfZGVzYy0+ZXZlbnRfbWFwLAo+ICsJ CQkJICAgICAgIE1BWF9FVkVOVFNfUEVSX1ZJTlQpOwo+ICsJaWYgKGZyZWVfYml0ICE9IE1BWF9F VkVOVFNfUEVSX1ZJTlQpCj4gKwkJc2V0X2JpdChmcmVlX2JpdCwgdmludF9kZXNjLT5ldmVudF9t YXApOwo+ICsJbXV0ZXhfdW5sb2NrKCZ2aW50X2Rlc2MtPmV2ZW50X2xvY2spOwo+ICsKPiArCWV2 ZW50X2Rlc2MgPSAmdmludF9kZXNjLT5ldmVudHNbZnJlZV9iaXRdOwo+ICsKPiArCWV2ZW50X2Rl c2MtPnNyY19pZCA9IHNyY19pZDsKPiArCWV2ZW50X2Rlc2MtPnNyY19pbmRleCA9IHNyY19pbmRl eDsKPiArCWV2ZW50X2Rlc2MtPmdsb2JhbF9ldmVudCA9IHRpX3NjaV9nZXRfZnJlZV9yZXNvdXJj ZShpbnRhLT5nbG9iYWxfZXZlbnQpOwo+ICsJaWYgKGV2ZW50X2Rlc2MtPmdsb2JhbF9ldmVudCA9 PSBUSV9TQ0lfUkVTT1VSQ0VfTlVMTCkgewo+ICsJCWVyciA9IC1FSU5WQUw7Cj4gKwkJZ290byBm cmVlX2V2ZW50Owo+ICsJfQo+ICsKPiArCWVyciA9IGludGEtPnNjaS0+b3BzLnJtX2lycV9vcHMu c2V0X2V2ZW50X2lycShpbnRhLT5zY2ksCj4gKwkJCQkJCSAgICAgIHNyY19pZCwgc3JjX2luZGV4 LAo+ICsJCQkJCQkgICAgICBpbnRhLT5kc3RfaWQsCj4gKwkJCQkJCSAgICAgIGRzdF9pcnEsCj4g KwkJCQkJCSAgICAgIGludGEtPmlhX2lkLAo+ICsJCQkJCQkgICAgICB2aW50X2Rlc2MtPnZpbnRf aWQsCj4gKwkJCQkJCSAgICAgIGV2ZW50X2Rlc2MtPmdsb2JhbF9ldmVudCwKPiArCQkJCQkJICAg ICAgZnJlZV9iaXQpOwo+ICsJaWYgKGVycikgewo+ICsJCXByX2VycigiJXM6IEV2ZW50IGFsbG9j YXRpb24gZmFpbGVkIGZyb20gc3JjID0gJWQsIGluZGV4ID0gJWQsIHRvIGRzdCA9ICVkLGlycSA9 ICVkLHZpYSBpYV9pZCA9ICVkLCB2aW50ID0gJWQsZ2xvYmFsIGV2ZW50ID0gJWQsIHN0YXR1c19i aXQgPSAlZFxuIiwKPiArCQkgICAgICAgX19mdW5jX18sIHNyY19pZCwgc3JjX2luZGV4LCBpbnRh LT5kc3RfaWQsIGRzdF9pcnEsCj4gKwkJICAgICAgIGludGEtPmlhX2lkLCB2aW50X2Rlc2MtPnZp bnRfaWQsCj4gKwkJICAgICAgIGV2ZW50X2Rlc2MtPmdsb2JhbF9ldmVudCwgZnJlZV9iaXQpOwo+ ICsJCWdvdG8gZnJlZV9nbG9iYWxfZXZlbnQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGV2ZW50X2Rl c2M7Cj4gK2ZyZWVfZ2xvYmFsX2V2ZW50Ogo+ICsJdGlfc2NpX3JlbGVhc2VfcmVzb3VyY2UoaW50 YS0+Z2xvYmFsX2V2ZW50LCBldmVudF9kZXNjLT5nbG9iYWxfZXZlbnQpOwo+ICtmcmVlX2V2ZW50 Ogo+ICsJY2xlYXJfYml0KGZyZWVfYml0LCB2aW50X2Rlc2MtPmV2ZW50X21hcCk7Cj4gKwlyZXR1 cm4gRVJSX1BUUihlcnIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRhX21zaV9pcnFfaGFu ZGxlcihzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCj4gK3sKPiArCXN0cnVjdCB0aV9zY2lfaW50YV92 aW50X2Rlc2MgKnZpbnRfZGVzYzsKPiArCXN0cnVjdCB0aV9zY2lfaW50YV9pcnFfZG9tYWluICpp bnRhOwo+ICsJc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsKPiArCXN0cnVjdCBpcnFfZGF0YSAq aXJxX2RhdGE7Cj4gKwl1MzIgaHdpcnEsIGJpdCwgdmlycTsKPiArCXU2NCB2YWw7Cj4gKwo+ICsJ dmludF9kZXNjID0gaXJxX2Rlc2NfZ2V0X2hhbmRsZXJfZGF0YShkZXNjKTsKPiArCWRvbWFpbiA9 IHZpbnRfZGVzYy0+ZG9tYWluOwo+ICsJaW50YSA9IGRvbWFpbi0+aG9zdF9kYXRhOwo+ICsKPiAr CWNoYWluZWRfaXJxX2VudGVyKGlycV9kZXNjX2dldF9jaGlwKGRlc2MpLCBkZXNjKTsKPiArCj4g Kwl2YWwgPSByZWFkcV9yZWxheGVkKGludGEtPmJhc2UgKyB2aW50X2Rlc2MtPnZpbnRfaWQgKiAw eDEwMDAgKwo+ICsJCQkgICAgVklOVF9TVEFUVVNfT0ZGU0VUKTsKPiArCj4gKwlmb3IgKGJpdCA9 IDA7IGJpdCA8IE1BWF9FVkVOVFNfUEVSX1ZJTlQ7IGJpdCsrKSB7Cj4gKwkJaWYgKEJJVChiaXQp ICYgdmFsKSB7Cj4gKwkJCWh3aXJxID0gdmludF9kZXNjLT5ldmVudHNbYml0XS5nbG9iYWxfZXZl bnQ7Cj4gKwkJCXZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKGRvbWFpbiwgaHdpcnEpOwo+ICsJCQlp cnFfZGF0YSA9IGlycV9nZXRfaXJxX2RhdGEodmlycSk7Cj4gKwkJCWlmIChpcnFkX2dldF90cmln Z2VyX3R5cGUoaXJxX2RhdGEpID09Cj4gKwkJCSAgICBJUlFGX1RSSUdHRVJfSElHSCkKPiArCQkJ CXdyaXRlcV9yZWxheGVkKEJJVChiaXQpLAo+ICsJCQkJCSAgICAgICBpbnRhLT5iYXNlICsgdmlu dF9kZXNjLT52aW50X2lkICoKPiArCQkJCQkgICAgICAgMHgxMDAwICsgVklOVF9TVEFUVVNfT0ZG U0VUKTsKPiArCj4gKwkJCWlmICh2aXJxKQo+ICsJCQkJZ2VuZXJpY19oYW5kbGVfaXJxKHZpcnEp Owo+ICsJCX0KPiArCX0KPiArCj4gKwljaGFpbmVkX2lycV9leGl0KGlycV9kZXNjX2dldF9jaGlw KGRlc2MpLCBkZXNjKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHRpX3NjaV9pbnRhX2FsbG9jX3Bh cmVudF9pcnEoKSAtIEFsbG9jYXRlIHBhcmVudCBpcnEgdG8gSW50ZXJydXB0IGFnZ3JlZ2F0b3IK PiArICogQGRvbWFpbjoJSVJRIGRvbWFpbiBjb3JyZXNwb25kaW5nIHRvIEludGVycnVwdCBBZ2dy ZWdhdG9yCj4gKyAqIEB2aXJxOglMaW51eCB2aXJ0dWFsIElSUSBudW1iZXIKPiArICoKPiArICog UmV0dXJuIHBvaW50ZXIgdG8gdmludCBkZXNjcmlwdG9yIGlmIGFsbCB3ZW50IHdlbGwgZWxzZSBj b3JyZXNwb25kaW5nCj4gKyAqIGVycm9yIHBvaW50ZXIuCj4gKyAqLwo+ICtzdGF0aWMgc3RydWN0 IHRpX3NjaV9pbnRhX3ZpbnRfZGVzYyAqCj4gK3RpX3NjaV9pbnRhX2FsbG9jX3BhcmVudF9pcnEo c3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgbXNpX2FsbG9jX2luZm9fdCAqYXJnKQo+ICt7Cj4g KwlzdHJ1Y3QgdGlfc2NpX2ludGFfaXJxX2RvbWFpbiAqaW50YSA9IGRvbWFpbi0+aG9zdF9kYXRh Owo+ICsJc3RydWN0IHRpX3NjaV9pbnRhX3ZpbnRfZGVzYyAqdmludF9kZXNjOwo+ICsJc3RydWN0 IGlycV9md3NwZWMgcGFyZW50X2Z3c3BlYzsKPiArCXVuc2lnbmVkIGludCB2aXJxOwo+ICsKPiAr CWlmICghaXJxX2RvbWFpbl9nZXRfb2Zfbm9kZShkb21haW4tPnBhcmVudCkpCj4gKwkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICsJdmludF9kZXNjID0ga3phbGxvYyhzaXplb2YoKnZp bnRfZGVzYyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCF2aW50X2Rlc2MpCj4gKwkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJdmludF9kZXNjLT5ldmVudF9tYXAgPSBrY2FsbG9jKEJJ VFNfVE9fTE9OR1MoTUFYX0VWRU5UU19QRVJfVklOVCksCj4gKwkJCQkgICAgICAgc2l6ZW9mKCp2 aW50X2Rlc2MtPmV2ZW50X21hcCksCj4gKwkJCQkgICAgICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IXZpbnRfZGVzYy0+ZXZlbnRfbWFwKSB7Cj4gKwkJa2ZyZWUodmludF9kZXNjKTsKPiArCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCX0KPiArCj4gKwl2aW50X2Rlc2MtPmRvbWFpbiA9IGRv bWFpbjsKPiArCXZpbnRfZGVzYy0+dmludF9pZCA9IHRpX3NjaV9nZXRfZnJlZV9yZXNvdXJjZShp bnRhLT52aW50KTsKPiArCj4gKwlwYXJlbnRfZndzcGVjLmZ3bm9kZSA9IGRvbWFpbi0+cGFyZW50 LT5md25vZGU7Cj4gKwlwYXJlbnRfZndzcGVjLnBhcmFtX2NvdW50ID0gNDsKPiArCS8qIEludGVy cnVwdCBwYXJlbnQgaXMgSW50ZXJydXB0IFJvdXRlciAqLwo+ICsJcGFyZW50X2Z3c3BlYy5wYXJh bVswXSA9IGludGEtPmlhX2lkOwo+ICsJcGFyZW50X2Z3c3BlYy5wYXJhbVsxXSA9IHZpbnRfZGVz Yy0+dmludF9pZDsKPiArCXBhcmVudF9md3NwZWMucGFyYW1bMl0gPSBJUlFGX1RSSUdHRVJfSElH SDsKPiArCXBhcmVudF9md3NwZWMucGFyYW1bM10gPSAxOwo+ICsKPiArCXZpcnEgPSBpcnFfY3Jl YXRlX2Z3c3BlY19tYXBwaW5nKCZwYXJlbnRfZndzcGVjKTsKPiArCWlmICh2aXJxIDw9IDApCj4g KwkJZ290byBlcnJfaXJxczsKPiArCj4gKwlpcnFfc2V0X2NoYWluZWRfaGFuZGxlcl9hbmRfZGF0 YSh2aXJxLCBpbnRhX21zaV9pcnFfaGFuZGxlciwgdmludF9kZXNjKTsKPiArCXZpbnRfZGVzYy0+ cGFyZW50X3ZpcnEgPSB2aXJxOwo+ICsKPiArCW11dGV4X2luaXQoJnZpbnRfZGVzYy0+ZXZlbnRf bG9jayk7Cj4gKwo+ICsJcmV0dXJuIHZpbnRfZGVzYzsKPiArCj4gK2Vycl9pcnFzOgo+ICsJdGlf c2NpX3JlbGVhc2VfcmVzb3VyY2UoaW50YS0+dmludCwgdmludF9kZXNjLT52aW50X2lkKTsKPiAr CWtmcmVlKHZpbnRfZGVzYyk7Cj4gKwlyZXR1cm4gRVJSX1BUUih2aXJxKTsKPiArfQo+ICsKPiAr LyoqCj4gKyAqIHRpX3NjaV9pbnRhX2lycV9kb21haW5fYWxsb2MoKSAtIEFsbG9jYXRlIEludGVy cnVwdCBhZ2dyZWdhdG9yIElSUXMKPiArICogQGRvbWFpbjoJUG9pbnQgdG8gdGhlIGludGVycnVw dCBhZ2dyZWdhdG9yIElSUSBkb21haW4KPiArICogQHZpcnE6CUNvcnJlc3BvbmRpbmcgTGludXgg dmlydHVhbCBJUlEgbnVtYmVyCj4gKyAqIEBucl9pcnFzOglDb250aW51b3VzIGlycXMgdG8gYmUg YWxsb2NhdGVkCj4gKyAqIEBkYXRhOglQb2ludGVyIHRvIGZpcm13YXJlIHNwZWNpZmllcgo+ICsg Kgo+ICsgKiBSZXR1cm4gMCBpZiBhbGwgd2VudCB3ZWxsIGVsc2UgYXBwcm9wcmlhdGUgZXJyb3Ig dmFsdWUuCj4gKyAqLwo+ICtzdGF0aWMgaW50IHRpX3NjaV9pbnRhX2lycV9kb21haW5fYWxsb2Mo c3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwKPiArCQkJCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5z aWduZWQgaW50IG5yX2lycXMsCj4gKwkJCQkJdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IHRp X3NjaV9pbnRhX2V2ZW50X2Rlc2MgKmV2ZW50X2Rlc2M7Cj4gKwltc2lfYWxsb2NfaW5mb190ICph cmcgPSBkYXRhOwo+ICsKPiArCWV2ZW50X2Rlc2MgPSB0aV9zY2lfYWxsb2NhdGVfZXZlbnRfaXJx KGRvbWFpbiwgYXJnKTsKPiArCWlmIChJU19FUlIoZXZlbnRfZGVzYykpIHsKPiArCQl0aV9zY2lf aW50YV9mcmVlX3ZpbnQoZG9tYWluLT5ob3N0X2RhdGEsCj4gKwkJCQkgICAgICBhcmctPnNjcmF0 Y2hwYWRbMF0ucHRyKTsKPiArCQlyZXR1cm4gUFRSX0VSUihldmVudF9kZXNjKTsKPiArCX0KPiAr Cj4gKwlpcnFfZG9tYWluX3NldF9pbmZvKGRvbWFpbiwgdmlycSwgZXZlbnRfZGVzYy0+Z2xvYmFs X2V2ZW50LAo+ICsJCQkgICAgJnRpX3NjaV9pbnRhX2lycV9jaGlwLCBhcmctPnNjcmF0Y2hwYWRb MF0ucHRyLAo+ICsJCQkgICAgaGFuZGxlX3NpbXBsZV9pcnEsIE5VTEwsIE5VTEwpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3Bz IHRpX3NjaV9pbnRhX2lycV9kb21haW5fb3BzID0gewo+ICsJLmFsbG9jCQk9IHRpX3NjaV9pbnRh X2lycV9kb21haW5fYWxsb2MsCj4gKwkuZnJlZQkJPSB0aV9zY2lfaW50YV9pcnFfZG9tYWluX2Zy ZWUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGludGFfbXNpX2RvbWFpbl9vcHNfcHJlcGFyZShz dHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLAo+ICsJCQkJICAgICAgIHN0cnVjdCBkZXZpY2UgKmRl diwgaW50IG52ZWMsCj4gKwkJCQkgICAgICAgbXNpX2FsbG9jX2luZm9fdCAqYXJnKQo+ICt7Cj4g KwlzdHJ1Y3QgdGlfc2NpX2ludGFfdmludF9kZXNjICp2aW50X2Rlc2M7Cj4gKwo+ICsJbWVtc2V0 KGFyZywgMCwgc2l6ZW9mKCphcmcpKTsKPiArCj4gKwl2aW50X2Rlc2MgPSB0aV9zY2lfaW50YV9h bGxvY19wYXJlbnRfaXJxKGRvbWFpbi0+cGFyZW50LCBhcmcpOwo+ICsJaWYgKElTX0VSUih2aW50 X2Rlc2MpKQo+ICsJCXJldHVybiBQVFJfRVJSKHZpbnRfZGVzYyk7Cj4gKwlhcmctPnNjcmF0Y2hw YWRbMF0ucHRyID0gdmludF9kZXNjOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lk IGludGFfbXNpX2RvbWFpbl9vcHNfdW5wcmVwYXJlKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4s IGludCBudmVjLAo+ICsJCQkJICAgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IHRpX3NjaV9p bnRhX2lycV9kb21haW4gKmludGEgPSBkb21haW4tPnBhcmVudC0+aG9zdF9kYXRhOwo+ICsJc3Ry dWN0IHRpX3NjaV9pbnRhX3ZpbnRfZGVzYyAqdmludF9kZXNjOwo+ICsJc3RydWN0IGlycV9kZXNj ICpkZXNjOwo+ICsJdW5zaWduZWQgaW50IHZpcnE7Cj4gKwo+ICsJdmlycSA9ICoodW5zaWduZWQg aW50ICopZGF0YTsKPiArCWRlc2MgPSBpcnFfdG9fZGVzYyh2aXJxKTsKPiArCXZpbnRfZGVzYyA9 IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7Cj4gKwl0aV9zY2lfaW50YV9mcmVlX3Zp bnQoaW50YSwgdmludF9kZXNjKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBp bnRhX21zaV9pcnFfY2hpcCA9IHsKPiArCS5uYW1lCQk9ICJNU0ktSU5UQSIsCj4gK307Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IG1zaV9kb21haW5fb3BzIGludGFfbXNpX29wcyA9IHsKPiArCS5tc2lf cHJlcGFyZQk9IGludGFfbXNpX2RvbWFpbl9vcHNfcHJlcGFyZSwKPiArCS5tc2lfdW5wcmVwYXJl CT0gaW50YV9tc2lfZG9tYWluX29wc191bnByZXBhcmUsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3Ry dWN0IG1zaV9kb21haW5faW5mbyBpbnRhX21zaV9kb21haW5faW5mbyA9IHsKPiArCS5mbGFncwk9 IChNU0lfRkxBR19VU0VfREVGX0RPTV9PUFMgfCBNU0lfRkxBR19VU0VfREVGX0NISVBfT1BTKSwK PiArCS5vcHMJPSAmaW50YV9tc2lfb3BzLAo+ICsJLmNoaXAJPSAmaW50YV9tc2lfaXJxX2NoaXAs Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHRpX3NjaV9pbnRhX2lycV9kb21haW5fcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGlycV9kb21haW4gKnBh cmVudF9kb21haW4sICpkb21haW4sICptc2lfZG9tYWluOwo+ICsJc3RydWN0IGRldmljZV9ub2Rl ICpwYXJlbnRfbm9kZSwgKm5vZGU7Cj4gKwlzdHJ1Y3QgdGlfc2NpX2ludGFfaXJxX2RvbWFpbiAq aW50YTsKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgcmVz b3VyY2UgKnJlczsKPiArCWludCByZXQ7Cj4gKwo+ICsJbm9kZSA9IGRldl9vZl9ub2RlKGRldik7 Cj4gKwlwYXJlbnRfbm9kZSA9IG9mX2lycV9maW5kX3BhcmVudChub2RlKTsKPiArCWlmICghcGFy ZW50X25vZGUpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgSVJRIHBhcmVudCBu b2RlXG4iKTsKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlwYXJlbnRfZG9tYWlu ID0gaXJxX2ZpbmRfaG9zdChwYXJlbnRfbm9kZSk7Cj4gKwlpZiAoIXBhcmVudF9kb21haW4pCj4g KwkJcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gKwo+ICsJaW50YSA9IGRldm1fa3phbGxvYyhkZXYs IHNpemVvZigqaW50YSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFpbnRhKQo+ICsJCXJldHVybiAt RU5PTUVNOwo+ICsKPiArCWludGEtPnNjaSA9IGRldm1fdGlfc2NpX2dldF9ieV9waGFuZGxlKGRl diwgInRpLHNjaSIpOwo+ICsJaWYgKElTX0VSUihpbnRhLT5zY2kpKSB7Cj4gKwkJcmV0ID0gUFRS X0VSUihpbnRhLT5zY2kpOwo+ICsJCWlmIChyZXQgIT0gLUVQUk9CRV9ERUZFUikKPiArCQkJZGV2 X2VycihkZXYsICJ0aSxzY2kgcmVhZCBmYWlsICVkXG4iLCByZXQpOwo+ICsJCWludGEtPnNjaSA9 IE5VTEw7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9y ZWFkX3UzMihkZXYtPm9mX25vZGUsICJ0aSxzY2ktZGV2LWlkIiwKPiArCQkJCSAgICh1MzIgKikm aW50YS0+aWFfaWQpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAibWlzc2luZyAn dGksc2NpLWRldi1pZCcgcHJvcGVydHlcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ ICsKPiArCWludGEtPnZpbnQgPSBkZXZtX3RpX3NjaV9nZXRfb2ZfcmVzb3VyY2UoaW50YS0+c2Np LCBkZXYsCj4gKwkJCQkJCSBpbnRhLT5pYV9pZCwKPiArCQkJCQkJICJ0aSxzY2ktcm0tcmFuZ2Ut dmludCIpOwo+ICsJaWYgKElTX0VSUihpbnRhLT52aW50KSkgewo+ICsJCWRldl9lcnIoZGV2LCAi VklOVCByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIo aW50YS0+dmludCk7Cj4gKwl9Cj4gKwo+ICsJaW50YS0+Z2xvYmFsX2V2ZW50ID0KPiArCQlkZXZt X3RpX3NjaV9nZXRfb2ZfcmVzb3VyY2UoaW50YS0+c2NpLCBkZXYsCj4gKwkJCQkJICAgIGludGEt PmlhX2lkLAo+ICsJCQkJCSAgICAidGksc2NpLXJtLXJhbmdlLWdsb2JhbC1ldmVudCIpOwo+ICsJ aWYgKElTX0VSUihpbnRhLT5nbG9iYWxfZXZlbnQpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJHbG9i YWwgZXZlbnQgcmVzb3VyY2UgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiBQVFJf RVJSKGludGEtPmdsb2JhbF9ldmVudCk7Cj4gKwl9Cj4gKwo+ICsJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCWludGEtPmJhc2UgPSBkZXZt X2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihpbnRhLT5iYXNlKSkK PiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihw YXJlbnRfbm9kZSwgInRpLHNjaS1kc3QtaWQiLAo+ICsJCQkJICAgKHUzMiAqKSZpbnRhLT5kc3Rf aWQpOwo+ICsKPiArCWRvbWFpbiA9IGlycV9kb21haW5fYWRkX2hpZXJhcmNoeShwYXJlbnRfZG9t YWluLCAwLCAwLCBkZXZfb2Zfbm9kZShkZXYpLAo+ICsJCQkJCSAgJnRpX3NjaV9pbnRhX2lycV9k b21haW5fb3BzLCBpbnRhKTsKPiArCWlmICghZG9tYWluKSB7Cj4gKwkJZGV2X2VycihkZXYsICJG YWlsZWQgdG8gYWxsb2NhdGUgSVJRIGRvbWFpblxuIik7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4g Kwl9Cj4gKwo+ICsJbXNpX2RvbWFpbiA9IGludGFfbXNpX2NyZWF0ZV9pcnFfZG9tYWluKG9mX25v ZGVfdG9fZndub2RlKG5vZGUpLAo+ICsJCQkJCQkmaW50YV9tc2lfZG9tYWluX2luZm8sCj4gKwkJ CQkJCWRvbWFpbik7Cj4gKwlpZiAoIW1zaV9kb21haW4pIHsKPiArCQlpcnFfZG9tYWluX3JlbW92 ZShkb21haW4pOwo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1zaSBkb21h aW5cbiIpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0aV9zY2lfaW50YV9pcnFf ZG9tYWluX29mX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInRpLHNjaS1pbnRhIiwg fSwKPiArCXsgLyogc2VudGluZWwgKi8gfSwKPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShv ZiwgdGlfc2NpX2ludGFfaXJxX2RvbWFpbl9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciB0aV9zY2lfaW50YV9pcnFfZG9tYWluX2RyaXZlciA9IHsKPiArCS5w cm9iZSA9IHRpX3NjaV9pbnRhX2lycV9kb21haW5fcHJvYmUsCj4gKwkuZHJpdmVyID0gewo+ICsJ CS5uYW1lID0gInRpLXNjaS1pbnRhIiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSB0aV9zY2lfaW50 YV9pcnFfZG9tYWluX29mX21hdGNoLAo+ICsJfSwKPiArfTsKPiArbW9kdWxlX3BsYXRmb3JtX2Ry aXZlcih0aV9zY2lfaW50YV9pcnFfZG9tYWluX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9S KCJMb2tlc2ggVnV0bGEgPGxva2VzaHZ1dGxhQHRpY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJ T04oIkszIEludGVycnVwdCBBZ2dyZWdhdG9yIGRyaXZlciBvdmVyIFRJIFNDSSBwcm90b2NvbCIp Owo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gCgotIFDDqXRlcgoKVGV4YXMgSW5zdHJ1 bWVudHMgRmlubGFuZCBPeSwgUG9ya2thbGFua2F0dSAyMiwgMDAxODAgSGVsc2lua2kuIFktdHVu bnVzL0J1c2luZXNzIElEOiAwNjE1NTIxLTQuIEtvdGlwYWlra2EvRG9taWNpbGU6IEhlbHNpbmtp CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==