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 E5D13C433EF for ; Tue, 25 Jan 2022 13:21:55 +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:Message-ID:In-reply-to: Date:Subject:Cc:To:From:References:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+N9xOLbDKb0Etb1TtPQeU/yrgRYfVS97lG6AG9uyINo=; b=3mt9I5P5jxPugG 51xab1WAj9KNj/43jP2oNjNshtRIqZaLQCowFoxI1gBuvbzxHBGwOehhJUj+6bQ08pV6WfXL1t7QG pa95/5yVgdPl72SOTJ4671HKJon6uyzm13OjCWYNnJVgwB/rRAxvbnqZ2geIUaKjNPGBFaQ+hMtLY rxkCiqV+wAXlDpgz15stIcLYZKNpXt+0FpCJ7VA3VrSbw+OsxD6wdfU3pd20oRLm2u5u3Wf7vhfxc sWsvjd9PEJEZpGhPO15mdPtYzotZntyKjMs0mA33qjdq5ncEL2c6VuRjaye5gnL6KdFf9EW+IpDaq C6p2/UFvWqrW5kvaaboA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCLkQ-007tTF-Hz; Tue, 25 Jan 2022 13:20:34 +0000 Received: from guitar.tcltek.co.il ([84.110.109.230] helo=mx.tkos.co.il) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCLkL-007tR5-39 for linux-arm-kernel@lists.infradead.org; Tue, 25 Jan 2022 13:20:32 +0000 Received: from tarshish (unknown [10.0.8.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx.tkos.co.il (Postfix) with ESMTPS id 2D3E3440537; Tue, 25 Jan 2022 15:20:11 +0200 (IST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tkos.co.il; s=default; t=1643116812; bh=kbhMyTqv/ZM+4D/fI4w1cdFP/9uJp0sy4leqXD9Th+I=; h=References:From:To:Cc:Subject:Date:In-reply-to:From; b=rB6lGdAmxSt3P6BGaBq+7XQjNgQn4d+4jDaaAdbhwtNlPyunu+HZDtY8wkxs4saSC rG1QixOfO4ZLQ+XB6vPxfD9c43EPFAkJ4v20FgjkK+qqOGFkO0yuUr8l0a4gkGwHBT mx78X6HRGWvmH6rWqXFHPn9621i1L4ntfQSgdTVgJgoJjOlEcTaXCilzSql0YTKrB6 c7gz/sVUC1ttEB9OeArcJIQs7B3N/vYstCdNW9B3xsuCVShzA6b8dziCIH4B8Qf/C9 hc15tLtHCm+UxvTUqz4LrhebZkfqu6fpZBeh24/v5wn0sapY7jpPbkPK9IotpCw4gu G1JjTLw7blF0A== References: <20220119172439.be4xpaqgwzdy26oh@pengutronix.de> User-agent: mu4e 1.6.10; emacs 27.1 From: Baruch Siach To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: Thierry Reding , Andy Gross , Bjorn Andersson , Balaji Prakash J , Rob Herring , Robert Marko , Kathiravan T , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v10 1/3] pwm: driver for qualcomm ipq6018 pwm block Date: Tue, 25 Jan 2022 15:03:08 +0200 In-reply-to: <20220119172439.be4xpaqgwzdy26oh@pengutronix.de> Message-ID: <87tuds7y09.fsf@tarshish> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220125_052029_731208_4ADD68AC X-CRM114-Status: GOOD ( 46.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgVXdlLAoKVGhhbmtzIGZvciB5b3VyIGRldGFpbGVkIHJldmlldyBhbmQgY29tbWVudHMuIFBs ZWFzZSBmaW5kIG15IGNvbW1lbnRzCmJlbG93LgoKT24gV2VkLCBKYW4gMTkgMjAyMiwgVXdlIEts ZWluZS1Lw7ZuaWcgd3JvdGU6Cj4gT24gVHVlLCBEZWMgMTQsIDIwMjEgYXQgMDY6Mjc6MTdQTSAr MDIwMCwgQmFydWNoIFNpYWNoIHdyb3RlOgo+PiBGcm9tOiBCYXJ1Y2ggU2lhY2ggPGJhcnVjaC5z aWFjaEBzaWtsdS5jb20+Cj4+IAo+PiBEcml2ZXIgZm9yIHRoZSBQV00gYmxvY2sgaW4gUXVhbGNv bW0gSVBRNjAxOCBsaW5lIG9mIFNvQ3MuIEJhc2VkIG9uCj4+IGRyaXZlciBmcm9tIGRvd25zdHJl YW0gQ29kZWF1cm9yYSBrZXJuZWwgdHJlZS4gUmVtb3ZlZCBzdXBwb3J0IGZvciBvbGRlcgo+PiAo VjEpIHZhcmlhbnRzIGJlY2F1c2UgSSBoYXZlIG5vIGFjY2VzcyB0byB0aGF0IGhhcmR3YXJlLgo+ PiAKPj4gVGVzdGVkIG9uIElQUTYwMTAgYmFzZWQgaGFyZHdhcmUuCj4+IAo+PiBTaWduZWQtb2Zm LWJ5OiBCYXJ1Y2ggU2lhY2ggPGJhcnVjaC5zaWFjaEBzaWtsdS5jb20+Cj4+IC0tLQo+PiB2MTA6 Cj4+IAo+PiAgIFJlc3RvcmUgcm91bmQgdXAgaW4gcHdtX2RpdiBjYWxjdWxhdGlvbjsgb3RoZXJ3 aXNlIGRpZmYgaXMgYWx3YXlzIDw9Cj4+ICAgMCwgc28gb25seSBiaW5nbyBtYXRjaCB3b3Jrcwo+ PiAKPj4gICBEb24ndCBvdmVyd3JpdGUgbWluX2RpZmYgb24gZXZlcnkgbG9vcCBpdGVyYXRpb24K Pj4gCj4+IHY5Ogo+PiAKPj4gQWRkcmVzcyBjb21tZW50IGZyb20gVXdlIEtsZWluZS1Lw7ZuaWc6 Cj4+IAo+PiAgIFVzZSBwZXJpb2RfbnMqcmF0ZSBpbiBkaXZpZGVycyBjYWxjdWxhdGlvbiBmb3Ig YmV0dGVyIGFjY3VyYWN5Cj4+IAo+PiAgIFJvdW5kIGRvd24gcHJlX2RpdiBhbmQgcHdtX2Rpdgo+ PiAKPj4gICBBZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHB3bV9kaXYgY2FuJ3QgdW5kZXJm bG93Cj4+IAo+PiAgIEFkZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgcHJlX2RpdiA+IHB3bV9k aXYgZW5kIHRoZSBzZWFyY2ggbG9vcAo+PiAKPj4gICBEcm9wICdDRkdfJyBmcm9tIHJlZ2lzdGVy IG1hY3Jvcwo+PiAKPj4gICBSZW5hbWUgdG9faXBxX3B3bV9jaGlwKCkgdG8gaXBxX3B3bV9mcm9t X2NoaXAoKQo+PiAKPj4gICBDaGFuZ2UgYmFyZSAndW5zaWduZWQnIHRvICd1bnNpZ25lZCBpbnQn Cj4+IAo+PiAgIENsYXJpZnkgdGhlIGNvbW1lbnQgb24gc2VwYXJhdGUgUkVHMSB3cml0ZSBmb3Ig ZW5hYmxlL2Rpc2FibGUKPj4gCj4+ICAgUm91bmQgdXAgdGhlIHBlcmlvZCB2YWx1ZSBpbiAuZ2V0 X3N0YXRlCj4+IAo+PiAgIFVzZSBkaXJlY3QgcmVhZGwvd3JpdGVsIHNvIG5vIG5lZWQgdG8gY2hl Y2sgZm9yIHJlZ21hcCBlcnJvcnMKPj4gCj4+IHY3Ogo+PiAKPj4gICBDaGFuZ2UgJ29mZnNldCcg dG8gJ3JlZycgZm9yIHRoZSB0Y3NyIG9mZnNldCAoUm9iKQo+PiAKPj4gICBEcm9wIGNsb2NrIG5h bWU7IHRoZXJlIGlzIG9ubHkgb25lIGNsb2NrIChCam9ybikKPj4gCj4+ICAgU2ltcGxpZnkgcHJv YmUgZmFpbHVyZSBjb2RlIHBhdGggKEJqb3JuKQo+PiAKPj4gdjY6Cj4+IAo+PiBBZGRyZXNzIFV3 ZSBLbGVpbmUtS8O2bmlnIHJldmlldyBjb21tZW50czoKPj4gCj4+ICAgRHJvcCBJUFFfUFdNX01B WF9ERVZJQ0VTCj4+IAo+PiAgIFJlbHkgb24gYXNzaWduZWQtY2xvY2stcmF0ZXM7IGRyb3AgSVBR X1BXTV9DTEtfU1JDX0ZSRVEKPj4gCj4+ICAgU2ltcGxpZnkgcmVnaXN0ZXIgb2Zmc2V0IGNhbGN1 bGF0aW9uCj4+IAo+PiAgIENhbGN1bGF0ZSBkdXR5IGN5Y2xlIG1vcmUgcHJlY2lzZWx5Cj4+IAo+ PiAgIFJlZnVzZSB0byBzZXQgaW52ZXJ0ZWQgcG9sYXJpdHkKPj4gCj4+ICAgRHJvcCByZWR1bmRh bnQgSVBRX1BXTV9SRUcxX0VOQUJMRSBiaXQgY2xlYXIKPj4gCj4+ICAgUmVtb3ZlIHgxMDAwIGZh Y3RvciBpbiBwd21fZGl2IGNhbGN1bGF0aW9uLCB1c2UgcmF0ZSBkaXJlY3RseSwgYW5kIHJvdW5k IHVwCj4+IAo+PiAgIENob29zZSBpbml0aWFsIHByZV9kaXYgc3VjaCB0aGF0IHB3bV9kaXYgPCBJ UFFfUFdNX01BWF9ESVYKPj4gCj4+ICAgRW5zdXJlIHByZV9kaXYgPD0gcHdtX2Rpdgo+PiAKPj4g ICBSZW5hbWUgY2xvc2VfIHRvIGJlc3RfCj4+IAo+PiAgIEV4cGxhaW4gaW4gY29tbWVudCB3aHkg ZWZmZWN0aXZlX2RpdiBkb2Vzbid0IG92ZXJmbG93Cj4+IAo+PiAgIExpbWl0IHB3bV9kaXYgdG8g SVBRX1BXTV9NQVhfRElWIC0gMSB0byBhbGxvdyAxMDAlIGR1dHkgY3ljbGUKPj4gCj4+ICAgRGlz YWJsZSBjbG9jayBvbmx5IGFmdGVyIHB3bWNoaXBfcmVtb3ZlKCkKPj4gCj4+ICAgY29uc3QgcHdt X29wcwo+PiAKPj4gT3RoZXIgY2hhbmdlczoKPj4gCj4+ICAgQWRkIG1pc3NpbmcgbGludXgvYml0 ZmllbGQuaCBoZWFkZXIgaW5jbHVkZSAoa2VybmVsIHRlc3Qgcm9ib3QpCj4+IAo+PiAgIEFkanVz dCBjb2RlIGZvciBQV00gZGV2aWNlIG5vZGUgdW5kZXIgVENTUiAoUm9iIEhlcnJpbmcpCj4+IAo+ PiB2NToKPj4gCj4+IFVzZSAmdGNzcl9xNiBzeXNjb24gdG8gYWNjZXNzIHJlZ2lzdGVycyAoQmpv cm4gQW5kZXJzc29uKQo+PiAKPj4gQWRkcmVzcyBVd2UgS2xlaW5lLUvDtm5pZyByZXZpZXcgY29t bWVudHM6Cj4+IAo+PiAgIEltcGxlbWVudCAuZ2V0X3N0YXRlKCkKPj4gCj4+ICAgQWRkIElQUV9Q V01fIHByZWZpeCB0byBsb2NhbCBtYWNyb3MKPj4gCj4+ICAgVXNlIEdFTk1BU0svQklUL0ZJRUxE X1BSRVAgZm9yIHJlZ2lzdGVyIGZpZWxkcyBhY2Nlc3MKPj4gCj4+ICAgTWFrZSB0eXBlIG9mIGNv bmZpZ19kaXZfYW5kX2R1dHkoKSBwYXJhbWV0ZXJzIGNvbnNpc3RlbnQKPj4gCj4+ICAgRGVyaXZl IElQUV9QV01fTUlOX1BFUklPRF9OUyBmcm9tIElQUV9QV01fQ0xLX1NSQ19GUkVRCj4+IAo+PiAg IEludGVncmF0ZSBlbmFibGUvZGlzYWJsZSBpbnRvIGNvbmZpZ19kaXZfYW5kX2R1dHkoKSB0byBz YXZlIHJlZ2lzdGVyIHJlYWQsCj4+ICAgYW5kIHJlZHVjZSBmcmVxdWVuY3kgZ2xpdGNoIG9uIHVw ZGF0ZQo+PiAKPj4gICBVc2UgbWluKCkgaW5zdGVhZCBvZiBtaW5fdCgpCj4+IAo+PiAgIEZpeCBj b21tZW50IGZvcm1hdAo+PiAKPj4gICBVc2UgZGV2X2Vycl9wcm9iZSgpIHRvIGluZGljYXRlIHBy b2JlIHN0ZXAgZmFpbHVyZQo+PiAKPj4gICBBZGQgbWlzc2luZyBjbGtfZGlzYWJsZV91bnByZXBh cmUoKSBpbiAucmVtb3ZlCj4+IAo+PiAgIERvbid0IHNldCAub3duZXIKPj4gCj4+IHY0Ogo+PiAK Pj4gICBVc2UgZGl2NjRfdTY0KCkgdG8gZml4IGxpbmsgZm9yIDMyLWJpdCB0YXJnZXRzICgoa2Vy bmVsIHRlc3Qgcm9ib3QKPj4gICA8bGtwQGludGVsLmNvbT4sIFV3ZSBLbGVpbmUtS8O2bmlnKQo+ PiAKPj4gdjM6Cj4+IAo+PiAgIHMvcWNvbSxwd20taXBxNjAxOC9xY29tLGlwcTYwMTgtcHdtLyAo Um9iIEhlcnJpbmcpCj4+IAo+PiAgIEZpeCBpbnRlZ2VyIG92ZXJmbG93IG9uIDMyLWJpdCB0YXJn ZXRzIChrZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4pCj4+IAo+PiB2MjoKPj4gCj4+ IEFkZHJlc3MgVXdlIEtsZWluZS1Lw7ZuaWcgcmV2aWV3IGNvbW1lbnRzOgo+PiAKPj4gICBGaXgg cGVyaW9kIGNhbGN1bGF0aW9uIHdoZW4gb3V0IG9mIHJhbmdlCj4+IAo+PiAgIERvbid0IHNldCBw ZXJpb2QgbGFyZ2VyIHRoYW4gcmVxdWVzdGVkCj4+IAo+PiAgIFJlbW92ZSBQV00gZGlzYWJsZSBv biBjb25maWd1cmF0aW9uIGNoYW5nZQo+PiAKPj4gICBJbXBsZW1lbnQgLmFwcGx5IGluc3RlYWQg b2Ygbm9uLWF0b21pYyAuY29uZmlnLy5lbmFibGUvLmRpc2FibGUKPj4gCj4+ICAgRG9uJ3QgbW9k aWZ5IFBXTSBvbiAucmVxdWVzdC8uZnJlZQo+PiAKPj4gICBDaGVjayBwd21fZGl2IHVuZGVyZmxv dwo+PiAKPj4gICBGaXggdmFyaW91cyBjb2RlIGFuZCBjb21tZW50IGZvcm1hdHRpbmcgaXNzdWVz Cj4+IAo+PiBPdGhlciBjaGFuZ2VzOgo+PiAKPj4gICBVc2UgdTY0IGRpdmlzb3Igc2FmZSBkaXZp c2lvbgo+PiAKPj4gICBSZW1vdmUgbm93IGVtcHR5IC5yZXF1ZXN0Ly5mcmVlCj4+IC0tLQo+PiAg ZHJpdmVycy9wd20vS2NvbmZpZyAgIHwgIDEyICsrCj4+ICBkcml2ZXJzL3B3bS9NYWtlZmlsZSAg fCAgIDEgKwo+PiAgZHJpdmVycy9wd20vcHdtLWlwcS5jIHwgMjc1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgMyBmaWxlcyBjaGFuZ2VkLCAyODggaW5zZXJ0 aW9ucygrKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcHdtL3B3bS1pcHEuYwo+PiAK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL0tjb25maWcgYi9kcml2ZXJzL3B3bS9LY29uZmln Cj4+IGluZGV4IDIxZTNiMDVhNTE1My4uZTM5NzE4MTM3ZWNkIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL3B3bS9LY29uZmlnCj4+ICsrKyBiL2RyaXZlcnMvcHdtL0tjb25maWcKPj4gQEAgLTI2MCw2 ICsyNjAsMTggQEAgY29uZmlnIFBXTV9JTlRFTF9MR00KPj4gIAkgIFRvIGNvbXBpbGUgdGhpcyBk cml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKPj4gIAkgIHdpbGwg YmUgY2FsbGVkIHB3bS1pbnRlbC1sZ20uCj4+ICAKPj4gK2NvbmZpZyBQV01fSVBRCj4+ICsJdHJp c3RhdGUgIklQUSBQV00gc3VwcG9ydCIKPj4gKwlkZXBlbmRzIG9uIEFSQ0hfUUNPTSB8fCBDT01Q SUxFX1RFU1QKPj4gKwlkZXBlbmRzIG9uIEhBVkVfQ0xLICYmIEhBU19JT01FTQo+PiArCWhlbHAK Pj4gKwkgIEdlbmVyaWMgUFdNIGZyYW1ld29yayBkcml2ZXIgZm9yIElQUSBQV00gYmxvY2sgd2hp Y2ggc3VwcG9ydHMKPj4gKwkgIDQgcHdtIGNoYW5uZWxzLiBFYWNoIG9mIHRoZSB0aGVzZSBjaGFu bmVscyBjYW4gYmUgY29uZmlndXJlZAo+PiArCSAgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4K Pj4gKwo+PiArCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0g aGVyZTogdGhlIG1vZHVsZQo+PiArCSAgd2lsbCBiZSBjYWxsZWQgcHdtLWlwcS4KPj4gKwo+PiAg Y29uZmlnIFBXTV9JUVM2MjBBCj4+ICAJdHJpc3RhdGUgIkF6b3RlcSBJUVM2MjBBIFBXTSBzdXBw b3J0Igo+PiAgCWRlcGVuZHMgb24gTUZEX0lRUzYyWCB8fCBDT01QSUxFX1RFU1QKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvcHdtL01ha2VmaWxlIGIvZHJpdmVycy9wd20vTWFrZWZpbGUKPj4gaW5k ZXggNzA4ODQwYjdmYmE4Li43NDAyZmVhZTRiMzYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvcHdt L01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCj4+IEBAIC0yMiw2ICsyMiw3 IEBAIG9iai0kKENPTkZJR19QV01fSU1YMSkJCSs9IHB3bS1pbXgxLm8KPj4gIG9iai0kKENPTkZJ R19QV01fSU1YMjcpCQkrPSBwd20taW14Mjcubwo+PiAgb2JqLSQoQ09ORklHX1BXTV9JTVhfVFBN KQkrPSBwd20taW14LXRwbS5vCj4+ICBvYmotJChDT05GSUdfUFdNX0lOVEVMX0xHTSkJKz0gcHdt LWludGVsLWxnbS5vCj4+ICtvYmotJChDT05GSUdfUFdNX0lQUSkJCSs9IHB3bS1pcHEubwo+PiAg b2JqLSQoQ09ORklHX1BXTV9JUVM2MjBBKQkrPSBwd20taXFzNjIwYS5vCj4+ICBvYmotJChDT05G SUdfUFdNX0paNDc0MCkJKz0gcHdtLWp6NDc0MC5vCj4+ICBvYmotJChDT05GSUdfUFdNX0tFRU1C QVkpCSs9IHB3bS1rZWVtYmF5Lm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1pcHEu YyBiL2RyaXZlcnMvcHdtL3B3bS1pcHEuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLjM3NjQwMTA4MDhmMAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2Ry aXZlcnMvcHdtL3B3bS1pcHEuYwo+PiBAQCAtMCwwICsxLDI3NSBAQAo+PiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSBPUiBHUEwtMi4wCj4+ICsvKgo+PiArICogQ29w eXJpZ2h0IChjKSAyMDE2LTIwMTcsIDIwMjAgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L3B3bS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lv Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tYXRoNjQu aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9i aXRmaWVsZC5oPgo+PiArCj4+ICsvKiBUaGUgZnJlcXVlbmN5IHJhbmdlIHN1cHBvcnRlZCBpcyAx IEh6IHRvIGNsb2NrIHJhdGUgKi8KPj4gKyNkZWZpbmUgSVBRX1BXTV9NQVhfUEVSSU9EX05TCSgo dTY0KU5TRUNfUEVSX1NFQykKPj4gKwo+PiArLyoKPj4gKyAqIFRoZSBtYXggdmFsdWUgc3BlY2lm aWVkIGZvciBlYWNoIGZpZWxkIGlzIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgYml0cwo+PiArICog aW4gdGhlIHB3bSBjb250cm9sIHJlZ2lzdGVyIGZvciB0aGF0IGZpZWxkCj4+ICsgKi8KPj4gKyNk ZWZpbmUgSVBRX1BXTV9NQVhfRElWCQkweEZGRkYKPj4gKwo+PiArLyoKPj4gKyAqIFR3byAzMi1i aXQgcmVnaXN0ZXJzIGZvciBlYWNoIFBXTTogUkVHMCwgYW5kIFJFRzEuCj4+ICsgKiBCYXNlIG9m ZnNldCBmb3IgUFdNICNpIGlzIGF0IDggKiAjaS4KPj4gKyAqLwo+PiArI2RlZmluZSBJUFFfUFdN X1JFRzAJCQkwIC8qUFdNX0RJViBQV01fSEkqLwo+PiArI2RlZmluZSBJUFFfUFdNX1JFRzBfUFdN X0RJVgkJR0VOTUFTSygxNSwgMCkKPj4gKyNkZWZpbmUgSVBRX1BXTV9SRUcwX0hJX0RVUkFUSU9O CUdFTk1BU0soMzEsIDE2KQo+Cj4gUFdNX0hJIGluIHRoZSBjb21tZW50IG9mIElQUV9QV01fUkVH MCB2cy4gSElfRFVSQVRJT04/IFNob3VsZCB0aGlzCj4gbWF0Y2g/IEknZCBzYXkgdGhlIGNvbW1l bnQgaXMgcmVkdW5kYW50Lgo+Cj4+ICsjZGVmaW5lIElQUV9QV01fUkVHMQkJCTQgLypFTkFCTEUg VVBEQVRFIFBXTV9QUkVfRElWKi8KPj4gKyNkZWZpbmUgSVBRX1BXTV9SRUcxX1BSRV9ESVYJCUdF Tk1BU0soMTUsIDApCj4+ICsvKgo+PiArICogRW5hYmxlIGJpdCBpcyBzZXQgdG8gZW5hYmxlIG91 dHB1dCB0b2dnbGluZyBpbiBwd20gZGV2aWNlLgo+PiArICogVXBkYXRlIGJpdCBpcyBzZXQgdG8g cmVmbGVjdCB0aGUgY2hhbmdlZCBkaXZpZGVyIGFuZCBoaWdoIGR1cmF0aW9uCj4+ICsgKiB2YWx1 ZXMgaW4gcmVnaXN0ZXIuCj4+ICsgKi8KPj4gKyNkZWZpbmUgSVBRX1BXTV9SRUcxX1VQREFURQkJ QklUKDMwKQo+PiArI2RlZmluZSBJUFFfUFdNX1JFRzFfRU5BQkxFCQlCSVQoMzEpCj4+ICsKPj4g Kwo+PiArc3RydWN0IGlwcV9wd21fY2hpcCB7Cj4+ICsJc3RydWN0IHB3bV9jaGlwIGNoaXA7Cj4+ ICsJc3RydWN0IGNsayAqY2xrOwo+PiArCXZvaWQgX19pb21lbSAqbWVtOwo+PiArfTsKPj4gKwo+ PiArc3RhdGljIHN0cnVjdCBpcHFfcHdtX2NoaXAgKmlwcV9wd21fZnJvbV9jaGlwKHN0cnVjdCBw d21fY2hpcCAqY2hpcCkKPj4gK3sKPj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGNoaXAsIHN0cnVj dCBpcHFfcHdtX2NoaXAsIGNoaXApOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdW5zaWduZWQgaW50 IGlwcV9wd21fcmVnX3JlYWQoc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwgdW5zaWduZWQgaW50IHJl ZykKPj4gK3sKPj4gKwlzdHJ1Y3QgaXBxX3B3bV9jaGlwICppcHFfY2hpcCA9IGlwcV9wd21fZnJv bV9jaGlwKHB3bS0+Y2hpcCk7Cj4+ICsJdW5zaWduZWQgaW50IG9mZiA9IDggKiBwd20tPmh3cHdt ICsgcmVnOwo+PiArCj4+ICsJcmV0dXJuIHJlYWRsKGlwcV9jaGlwLT5tZW0gKyBvZmYpOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgdm9pZCBpcHFfcHdtX3JlZ193cml0ZShzdHJ1Y3QgcHdtX2Rldmlj ZSAqcHdtLCB1bnNpZ25lZCBpbnQgcmVnLAo+PiArCQkJICAgICAgdW5zaWduZWQgaW50IHZhbCkK Pj4gK3sKPj4gKwlzdHJ1Y3QgaXBxX3B3bV9jaGlwICppcHFfY2hpcCA9IGlwcV9wd21fZnJvbV9j aGlwKHB3bS0+Y2hpcCk7Cj4+ICsJdW5zaWduZWQgaW50IG9mZiA9IDggKiBwd20tPmh3cHdtICsg cmVnOwo+PiArCj4+ICsJd3JpdGVsKHZhbCwgaXBxX2NoaXAtPm1lbSArIG9mZik7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyB2b2lkIGNvbmZpZ19kaXZfYW5kX2R1dHkoc3RydWN0IHB3bV9kZXZpY2Ug KnB3bSwgdW5zaWduZWQgaW50IHByZV9kaXYsCj4+ICsJCQl1bnNpZ25lZCBpbnQgcHdtX2Rpdiwg dW5zaWduZWQgbG9uZyByYXRlLCB1NjQgZHV0eV9ucywKPj4gKwkJCWJvb2wgZW5hYmxlKQo+PiAr ewo+PiArCXVuc2lnbmVkIGxvbmcgaGlfZHVyOwo+PiArCXVuc2lnbmVkIGxvbmcgdmFsID0gMDsK Pj4gKwo+PiArCS8qCj4+ICsJICogaGlnaCBkdXJhdGlvbiA9IHB3bSBkdXR5ICogKHB3bSBkaXYg KyAxKQo+PiArCSAqIHB3bSBkdXR5ID0gZHV0eV9ucyAvIHBlcmlvZF9ucwo+PiArCSAqLwo+PiAr CWhpX2R1ciA9IGRpdjY0X3U2NChkdXR5X25zICogcmF0ZSwgKHByZV9kaXYgKyAxKSAqIE5TRUNf UEVSX1NFQyk7Cj4+ICsKPj4gKwl2YWwgPSBGSUVMRF9QUkVQKElQUV9QV01fUkVHMF9ISV9EVVJB VElPTiwgaGlfZHVyKSB8Cj4+ICsJCUZJRUxEX1BSRVAoSVBRX1BXTV9SRUcwX1BXTV9ESVYsIHB3 bV9kaXYpOwo+PiArCWlwcV9wd21fcmVnX3dyaXRlKHB3bSwgSVBRX1BXTV9SRUcwLCB2YWwpOwo+ PiArCj4+ICsJdmFsID0gRklFTERfUFJFUChJUFFfUFdNX1JFRzFfUFJFX0RJViwgcHJlX2Rpdik7 Cj4+ICsJaXBxX3B3bV9yZWdfd3JpdGUocHdtLCBJUFFfUFdNX1JFRzEsIHZhbCk7Cj4+ICsKPj4g KwkvKiBQV00gZW5hYmxlIHRvZ2dsZSBuZWVkcyBhIHNlcGFyYXRlIHdyaXRlIHRvIFJFRzEgKi8K Pj4gKwl2YWwgfD0gSVBRX1BXTV9SRUcxX1VQREFURTsKPj4gKwlpZiAoZW5hYmxlKQo+PiArCQl2 YWwgfD0gSVBRX1BXTV9SRUcxX0VOQUJMRTsKPj4gKwlpcHFfcHdtX3JlZ193cml0ZShwd20sIElQ UV9QV01fUkVHMSwgdmFsKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBpcHFfcHdtX2FwcGx5 KHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwKPj4gKwkJCSBj b25zdCBzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaXBxX3B3bV9j aGlwICppcHFfY2hpcCA9IGlwcV9wd21fZnJvbV9jaGlwKGNoaXApOwo+PiArCXVuc2lnbmVkIGlu dCBwcmVfZGl2LCBwd21fZGl2LCBiZXN0X3ByZV9kaXYsIGJlc3RfcHdtX2RpdjsKPj4gKwl1bnNp Z25lZCBsb25nIHJhdGUgPSBjbGtfZ2V0X3JhdGUoaXBxX2NoaXAtPmNsayk7Cj4+ICsJdTY0IHBl cmlvZF9ucywgZHV0eV9ucywgcGVyaW9kX3JhdGU7Cj4+ICsJdTY0IG1pbl9kaWZmOwo+PiArCj4+ ICsJaWYgKHN0YXRlLT5wb2xhcml0eSAhPSBQV01fUE9MQVJJVFlfTk9STUFMKQo+PiArCQlyZXR1 cm4gLUVJTlZBTDsKPj4gKwo+PiArCWlmIChzdGF0ZS0+cGVyaW9kIDwgZGl2NjRfdTY0KE5TRUNf UEVSX1NFQywgcmF0ZSkpCj4+ICsJCXJldHVybiAtRVJBTkdFOwo+Cj4gTlNFQ19QRVJfU0VDIC8g cmF0ZSBpcyB0aGUgc21hbGxlc3QgcGVyaW9kIHlvdSBjYW4gYWNoaWV2ZSwgcmlnaHQ/Cj4gQ29u c2lkZXIgcmF0ZSA9IDMzMzMzIChIeiksIHRoZW4gdGhlIG1pbmltYWwgcGVyaW9kIGlzCj4gMzAw MDAuMzAwMDAzMDAwMDMgbnMuIFNvIHlvdSBzaG91bGQgcmVmdXNlIGEgcmVxdWVzdCB0byBjb25m aWd1cmUKPiBzdGF0ZS0+cGVyaW9kID0gMzAwMDAsIGJ1dCBhcyBkaXY2NF91NjQoMTAwMDAwMDAw MCwgMzMzMzMpIGlzIDMwMDAwIHlvdQo+IGRvbid0Lgo+Cj4+ICsJcGVyaW9kX25zID0gbWluKHN0 YXRlLT5wZXJpb2QsIElQUV9QV01fTUFYX1BFUklPRF9OUyk7Cj4+ICsJZHV0eV9ucyA9IG1pbihz dGF0ZS0+ZHV0eV9jeWNsZSwgcGVyaW9kX25zKTsKPj4gKwo+PiArCS8qCj4+ICsJICogcGVyaW9k X25zIGlzIDFHIG9yIGxlc3MuIEFzIGxvbmcgYXMgcmF0ZSBpcyBsZXNzIHRoYW4gMTYgR0h6IHRo aXMKPj4gKwkgKiBkb2VzIG5vdCBvdmVyZmxvdy4KPgo+IFdlbGwsIHJhdGUgY2Fubm90IGJlIGJp Z2dlciB0aGFuIDQyOTQ5NjcyOTUgYmVjYXVzZSBhbiB1bnNpZ25lZCBsb25nCj4gY2Fubm90IGhv bGQgYSBiaWdnZXIgdmFsdWUuCgpPbiA2NC1iaXQgc3lzdGVtcyBfX1NJWkVPRl9MT05HX18gaXMg OCwgd2hpY2ggY2FuIGhvbGQgbW9yZSB0aGFuIDJeMzIuCgo+PiArCSAqLwo+PiArCXBlcmlvZF9y YXRlID0gcGVyaW9kX25zICogcmF0ZTsKPj4gKwliZXN0X3ByZV9kaXYgPSBJUFFfUFdNX01BWF9E SVY7Cj4+ICsJYmVzdF9wd21fZGl2ID0gSVBRX1BXTV9NQVhfRElWOwo+PiArCS8qIEluaXRpYWwg cHJlX2RpdiB2YWx1ZSBzdWNoIHRoYXQgcHdtX2RpdiA8IElQUV9QV01fTUFYX0RJViAqLwoKTm90 ZSB0aGlzIGNvbW1lbnQuCgo+PiArCXByZV9kaXYgPSBkaXY2NF91NjQocGVyaW9kX3JhdGUsCj4+ ICsJCQkodTY0KU5TRUNfUEVSX1NFQyAqIChJUFFfUFdNX01BWF9ESVYgKyAxKSk7Cj4KPiBIbW1t LCB3ZSB3YW50IAo+Cj4gCShwcmVfZGl2ICsgMSkgKiAocHdtX2RpdiArIDEpICogTlNFQ19QRVJf U0VDCj4gCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDw9IHBl cmlvZF9ucwo+IAkgICAgICAgICAgICAgICAgICByYXRlCj4KPiAsIHJpZ2h0PyBSZXNvbHZpbmcg dGhhdCBmb3IgcHJlX2RpdiB0aGlzIGdpdmVzOgo+Cj4gCSAgICAgICAgICAgICAgICBwZXJpb2Rf bnMgKiByYXRlCj4gCXByZV9kaXYgPD0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IAkg ICAgICAgICAgIE5TRUNfUEVSX1NFQyAqIChwd21fZGl2ICsgMSkKPgo+IFRoZSB0ZXJtIG9uIHRo ZSByaWdodCBoYW5kIHNpZGUgaXMgbWF4aW1hbCBmb3IgcHdtX2RpdiA9PSAwIHNvIHRoZQo+IHBv c3NpYmxlIHZhbHVlcyBmb3IgcHJlX2RpdiBhcmUKPgo+IAkwIC4uLiBtaW4oZGl2NjRfdTY0KHBl cmlvZF9yYXRlIC8gTlNFQ19QRVJfU0VDKSwgSVBRX1BXTV9NQVhfRElWKQo+Cj4gaXNuJ3QgaXQ/ CgpJIGRvbid0IHRoaW5rIHNvLiBwcmVfZGl2ID09IDAgd2lsbCBwcm9kdWNlIHB3bV9kaXYgbGFy Z2VyIHRoYW4KSVBRX1BXTV9NQVhfRElWIGZvciBhIGxhcmdlIHBlcmlvZF9yYXRlIHZhbHVlLiBU aGUgaW5pdGlhbCBwcmVfZGl2IGhlcmUgaXMgdGhlCnNtYWxsZXN0IHZhbHVlIHRoYXQgcHJvZHVj ZXMgcHdtX2RpdiB3aXRoaW4gaXQgbGltaXQuCgo+IElmIHNvLCB5b3VyIGFsZ29yaXRobSBpcyB3 cm9uZyBhcyB5b3UncmUgaXRlcmF0aW5nIG92ZXIKPgo+IAlkaXY2NF91NjQocGVyaW9kX3JhdGUs IE5TRUNfUEVSX1NFQyAqIChJUFFfUFdNX01BWF9ESVYgKyAxKSkgLi4uIElQUV9QV01fTUFYX0RJ VgoKVGhlIGxvb3Agc3RvcHMgd2hlbiBwcmVfZGl2ID4gcHdtX2Rpdi4gVGhhdCBzaG91bGQgYmUg YmVmb3JlIHByZV9kaXYgPT0KSVBRX1BXTV9NQVhfRElWIGJlY2F1c2UgcHdtX2RpdiA8PSBJUFFf UFdNX01BWF9ESVYuIFNob3VsZCBJIHB1dCB0aGUgcHJlX2RpdiA+CnB3bV9kaXYgY29uZGl0aW9u IGRpcmVjdGx5IGluIHRoZSBmb3Igc3RhdGVtZW50PwoKPj4gKwltaW5fZGlmZiA9IHBlcmlvZF9y YXRlOwo+PiArCj4+ICsJZm9yICg7IHByZV9kaXYgPD0gSVBRX1BXTV9NQVhfRElWOyBwcmVfZGl2 KyspIHsKPj4gKwkJbG9uZyBsb25nIGRpZmY7Cj4+ICsKPj4gKwkJcHdtX2RpdiA9IERJVjY0X1U2 NF9ST1VORF9VUChwZXJpb2RfcmF0ZSwKPj4gKwkJCQkodTY0KU5TRUNfUEVSX1NFQyAqIChwcmVf ZGl2ICsgMSkpOwo+PiArCQkvKiBwd21fZGl2IGlzIHVuc2lnbmVkOyB0aGUgY2hlY2sgYmVsb3cg Y2F0Y2hlcyB1bmRlcmZsb3cgKi8KPj4gKwkJcHdtX2Rpdi0tOwo+Cj4gV2hhdCB1bmRlcmZsb3c/ IERJVjY0X1U2NF9ST1VORF9VUCByZXR1cm5zID4gMCBhc3N1bWluZyBwZXJpb2RfcmF0ZSA+IDAu Cj4gU28gcHdtX2RpdiAtIDEgZG9lc24ndCB1bmRlcmZsb3c/IQoKSSdsbCB1cGRhdGUgdGhlIGNv bW1lbnQuCgo+IFRoZSB0YXNrIGhlcmUgaXMgdG8gY2FsY3VsYXRlIHRoZSBiaWdnZXN0IHB3bV9k aXYgZm9yIGEgZ2l2ZW4gcHJlX2Rpdgo+IHN1Y2ggdGhhdAo+Cj4KPiAJKHByZV9kaXYgKyAxKSAq IChwd21fZGl2ICsgMSkgKiBOU0VDX1BFUl9TRUMKPiAJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gPD0gcGVyaW9kX25zCj4gCSAgICAgICAgICAgICAgICAgICBy YXRlCj4KPiByaWdodD8KPgo+IFRoaXMgaXMgZXF1aXZhbGVudCB0bzoKPgo+IAkgICAgICAgICAg ICAgICAgICBwZXJpb2RfbnMgKiByYXRlCj4gCXByZV9kaXYgPD0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAtIDEKPiAJICAgICAgICAgICAocHJlX2RpdiArIDEpICogTlNFQ19QRVJfU0VD Cj4KPiBBcyBwcmVfZGl2IGlzIGludGVnZXIsIHJvdW5kaW5nIGRvd24gc2hvdWxkIGJlIGZpbmU/ IQoKSSBjYW4ndCBmb2xsb3cuIFdpdGggcm91bmQgZG93biAoYXMgaW4gdjgpIHRoZSByZXN1bHQg aXMgYWx3YXlzOgoKICBOU0VDX1BFUl9TRUMgKiAocHJlX2RpdiArIDEpICogKHB3bV9kaXYgKyAx KSA8PSBwZXJpb2RfcmF0ZQoKQXMgYSByZXN1bHQsICdkaWZmJyBjYWxjdWxhdGlvbiBiZWxvdyB3 aWxsIGFsd2F5cyBwcm9kdWNlIGRpZmYgPD0gMC4gV2hlbgp0aGVyZSBpcyBubyBkaWZmID09IDAg cmVzdWx0IChiaW5nbykgd2UgZ2V0IElQUV9QV01fTUFYX0RJViBpbiBib3RoIGJlc3RfCnZhbHVl cyBhdCB0aGUgZW5kIG9mIHRoZSBsb29wLgoKRG8gd2UgYWN0dWFsbHkgbmVlZCBkaWZmID4gMCBp biB0aGUgY29uZGl0aW9uIGJlbG93PwoKPj4gKwkJLyoKPj4gKwkJICogcHJlX2RpdiBhbmQgcHdt X2RpdiB2YWx1ZXMgc3dhcCBwcm9kdWNlcyB0aGUgc2FtZQo+PiArCQkgKiByZXN1bHQuIFRoaXMg bG9vcCBnb2VzIG92ZXIgYWxsIHByZV9kaXYgPD0gcHdtX2Rpdgo+PiArCQkgKiBjb21iaW5hdGlv bnMuIFRoZSByZXN0IGFyZSBlcXVpdmFsZW50Lgo+PiArCQkgKi8KPgo+IEknZCB3cml0ZToKPgo+ IAkvKgo+IAkgKiBTd2FwcGluZyB2YWx1ZXMgZm9yIHByZV9kaXYgYW5kIHB3bV9kaXYgcHJvZHVj ZXMgdGhlIHNhbWUKPiAJICogcGVyaW9kIGxlbmd0aC4gU28gd2UgY2FuIHNraXAgYWxsIHNldHRp bmdzIHdpdGggcHJlX2RpdiA8Cj4gCSAqIHB3bV9kaXYgd2hpY2ggcmVzdWx0cyBpbiBiaWdnZXIg Y29uc3RyYWludHMgZm9yIHNlbGVjdGluZyB0aGUKPiAJICogZHV0eV9jeWNsZSB0aGFuIHdpdGgg dGhlIHR3byB2YWx1ZXMgc3dhcHBlZC4KPiAJICovCgpJJ2xsIHRha2UgeW91ciB3b3JkaW5nIHdp dGggaW52ZXJ0ZWQgaW5lcXVhbGl0eSBzaWduLgoKVGhhbmtzLApiYXJ1Y2gKCj4+ICsJCWlmIChw cmVfZGl2ID4gcHdtX2RpdikKPj4gKwkJCWJyZWFrOwo+PiArCj4+ICsJCS8qCj4+ICsJCSAqIE1h a2Ugc3VyZSB3ZSBjYW4gZG8gMTAwJSBkdXR5IGN5Y2xlIHdoZXJlCj4+ICsJCSAqIGhpX2R1ciA9 PSBwd21fZGl2ICsgMQo+PiArCQkgKi8KPj4gKwkJaWYgKHB3bV9kaXYgPiBJUFFfUFdNX01BWF9E SVYgLSAxKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJZGlmZiA9ICgodWludDY0X3QpTlNF Q19QRVJfU0VDICogKHByZV9kaXYgKyAxKSAqIChwd21fZGl2ICsgMSkpCj4+ICsJCQktIHBlcmlv ZF9yYXRlOwo+PiArCj4+ICsJCWlmIChkaWZmIDwgMCkgLyogcGVyaW9kIGxhcmdlciB0aGFuIHJl cXVlc3RlZCAqLwo+PiArCQkJY29udGludWU7Cj4KPiBUaGlzIHNob3VsZG4ndCBoYXBwZW4gaWYg dGhlIGFib3ZlIGNhbGN1bGF0aW9uIGlzIGNvcnJlY3QuCj4KPj4gKwkJaWYgKGRpZmYgPT0gMCkg eyAvKiBiaW5nbyAqLwo+PiArCQkJYmVzdF9wcmVfZGl2ID0gcHJlX2RpdjsKPj4gKwkJCWJlc3Rf cHdtX2RpdiA9IHB3bV9kaXY7Cj4+ICsJCQlicmVhazsKPj4gKwkJfQo+PiArCQlpZiAoZGlmZiA8 IG1pbl9kaWZmKSB7Cj4+ICsJCQltaW5fZGlmZiA9IGRpZmY7Cj4+ICsJCQliZXN0X3ByZV9kaXYg PSBwcmVfZGl2Owo+PiArCQkJYmVzdF9wd21fZGl2ID0gcHdtX2RpdjsKPj4gKwkJfQo+Cj4gVGhp cyBjYW4gYmUgc2ltcGxpZmllZCBhczoKPgo+IAkJaWYgKGRpZmYgPCBtaW5fZGlmZikgewo+IAkJ CWJlc3RfcHJlX2RpdiA9IHByZV9kaXY7Cj4gCQkJYmVzdF9wd21fZGl2ID0gcHdtX2RpdjsKPiAJ CQltaW5fZGlmZiA9IGRpZmY7Cj4KPiAJCQlpZiAobWluX2RpZmYgPT0gMCkKPiAJCQkJLyogYmlu Z28hICovCj4gCQkJCWJyZWFrOwo+IAkJfQo+Cj4+ICsJfQo+PiArCj4+ICsJLyogY29uZmlnIGRp dmlkZXIgdmFsdWVzIGZvciB0aGUgY2xvc2VzdCBwb3NzaWJsZSBmcmVxdWVuY3kgKi8KPj4gKwlj b25maWdfZGl2X2FuZF9kdXR5KHB3bSwgYmVzdF9wcmVfZGl2LCBiZXN0X3B3bV9kaXYsCj4+ICsJ CQkgICAgcmF0ZSwgZHV0eV9ucywgc3RhdGUtPmVuYWJsZWQpOwo+PiArCj4+ICsJcmV0dXJuIDA7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGlwcV9wd21fZ2V0X3N0YXRlKHN0cnVjdCBwd21f Y2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwKPj4gKwkJCSAgICAgIHN0cnVjdCBw d21fc3RhdGUgKnN0YXRlKQo+PiArewo+PiArCXN0cnVjdCBpcHFfcHdtX2NoaXAgKmlwcV9jaGlw ID0gaXBxX3B3bV9mcm9tX2NoaXAoY2hpcCk7Cj4+ICsJdW5zaWduZWQgbG9uZyByYXRlID0gY2xr X2dldF9yYXRlKGlwcV9jaGlwLT5jbGspOwo+PiArCXVuc2lnbmVkIGludCBwcmVfZGl2LCBwd21f ZGl2LCBoaV9kdXI7Cj4+ICsJdTY0IGVmZmVjdGl2ZV9kaXYsIGhpX2RpdjsKPj4gKwl1MzIgcmVn MCwgcmVnMTsKPj4gKwo+PiArCXJlZzAgPSBpcHFfcHdtX3JlZ19yZWFkKHB3bSwgSVBRX1BXTV9S RUcwKTsKPj4gKwlyZWcxID0gaXBxX3B3bV9yZWdfcmVhZChwd20sIElQUV9QV01fUkVHMSk7Cj4+ ICsKPj4gKwlzdGF0ZS0+cG9sYXJpdHkgPSBQV01fUE9MQVJJVFlfTk9STUFMOwo+PiArCXN0YXRl LT5lbmFibGVkID0gcmVnMSAmIElQUV9QV01fUkVHMV9FTkFCTEU7Cj4+ICsKPj4gKwlwd21fZGl2 ID0gRklFTERfR0VUKElQUV9QV01fUkVHMF9QV01fRElWLCByZWcwKTsKPj4gKwloaV9kdXIgPSBG SUVMRF9HRVQoSVBRX1BXTV9SRUcwX0hJX0RVUkFUSU9OLCByZWcwKTsKPj4gKwlwcmVfZGl2ID0g RklFTERfR0VUKElQUV9QV01fUkVHMV9QUkVfRElWLCByZWcxKTsKPj4gKwo+PiArCS8qIE5vIG92 ZXJmbG93IGhlcmUsIGJvdGggcHJlX2RpdiBhbmQgcHdtX2RpdiA8PSAweGZmZmYgKi8KPj4gKwll ZmZlY3RpdmVfZGl2ID0gKHU2NCkocHJlX2RpdiArIDEpICogKHB3bV9kaXYgKyAxKTsKPj4gKwlz dGF0ZS0+cGVyaW9kID0gRElWNjRfVTY0X1JPVU5EX1VQKGVmZmVjdGl2ZV9kaXYgKiBOU0VDX1BF Ul9TRUMsIHJhdGUpOwo+PiArCj4+ICsJaGlfZGl2ID0gaGlfZHVyICogKHByZV9kaXYgKyAxKTsK Pj4gKwlzdGF0ZS0+ZHV0eV9jeWNsZSA9IGRpdjY0X3U2NChoaV9kaXYgKiBOU0VDX1BFUl9TRUMs IHJhdGUpOwo+Cj4gVGhpcyBtdXN0IGJlIHJvdW5kIHVwIGZvciB0aGUgc2FtZSByZWFzb25zIGFz IGZvciBwZXJpb2QuCj4KPj4gK30KPgo+IEJlc3QgcmVnYXJkcwo+IFV3ZQoKCi0tIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4uIC5+ICAgVGsg T3BlbiBTeXN0ZW1zCj19LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tb29PLS1VLS1Pb28tLS0tLS0tLS0tLS17PQogICAtIGJhcnVjaEB0a29zLmNvLmlsIC0g dGVsOiArOTcyLjUyLjM2OC40NjU2LCBodHRwOi8vd3d3LnRrb3MuY28uaWwgLQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=