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 9ACACC5AE59 for ; Sat, 31 May 2025 13:29:18 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=eezFaW4Cz6eeRYxbSreF+9uJ5gHmCzN47oolWuapgOU=; b=3xUw1PwmfXWkrN Bz5r0vwuY+luVNbBtKoUCZfOpZ/z05/D2gKdxYGU/Kji8dM7vn8SSni+whnBZaLe1QHi9Hm7Kf6B/ EsoyFMYhVHjQ8XCD6a9W2rxFNabjqhiGLvDq6isY3KL3wURZZXRy3r4JLo5QPz1MfjqaUIJfj/4b4 aXdJYftiX2hKkTTPVgKotWhOpbQKr1DLWTxDL8hN6WGkDvh8EOdRrIC3eEzg/zBJI4rPIXAF3+ZGn YdYpBvbN08F8mHbCVKh9bcVOaA0LtluyYsQH5ZHJID/+9s9pBmOfaJYdJiz/fpKlSz+eqlg/aPfax RD9L+tXOUSlf9FPsVuBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uLMGt-00000003mrd-45qL; Sat, 31 May 2025 13:29:11 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uLMEk-00000003mOm-1oc2; Sat, 31 May 2025 13:26:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=71D51htRSeJGCuuHOHD8b943bYQGqpFoTtzqn/JTPCw=; b=Mu8596DQ4iCe89ntwpBhl75Pbp UheiA2gyCWpuQhWw8b+IX+5gbOtCZswwY5Xe8KuS/I4A48P8o/P4mEZISgII/se1hHD6R6IxbsHgV e9BdNKzWi7CpVokSVpeCfkBjrnSPDGRB/w9vroZHTQbQTBZTG2TED1T6hwk/euJVOmfb9G2A3dkYv uSne6voiWy5YpvDLrxPwEFPmEIOiCkm6LGZve9/GjbZVivXqmDjkBl01K6nf7Zzdkggh8En1GCF6l NmZKWsqO4E8i1MUsHSf784QwDDMlnFzqg6z+X53hre+VK2rG5jaDs0E/fzbuter6WUOugo8zwX+Yk Ql/UoCMA==; Received: from i53875a3e.versanet.de ([83.135.90.62] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uLMEd-0002yn-Tg; Sat, 31 May 2025 15:26:51 +0200 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= , William Breathitt Gray , Sebastian Reichel , Kever Yang , Nicolas Frattaroli Subject: Re: [PATCH 3/7] soc: rockchip: add utils header for things shared across drivers Date: Sat, 31 May 2025 15:26:50 +0200 Message-ID: <1895349.atdPhlSkOF@diego> In-Reply-To: <20250408-rk3576-pwm-v1-3-a49286c2ca8e@collabora.com> References: <20250408-rk3576-pwm-v1-0-a49286c2ca8e@collabora.com> <20250408-rk3576-pwm-v1-3-a49286c2ca8e@collabora.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250531_062658_625905_B533A31E X-CRM114-Status: GOOD ( 38.48 ) 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: , Cc: linux-pwm@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-iio@vger.kernel.org, Jonas Karlman , linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, Detlev Casanova , kernel@collabora.com, linux-arm-kernel@lists.infradead.org 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 SGksCgpBbSBEaWVuc3RhZywgOC4gQXByaWwgMjAyNSwgMTQ6MzI6MTUgTWl0dGVsZXVyb3DDpGlz Y2hlIFNvbW1lcnplaXQgc2NocmllYiBOaWNvbGFzIEZyYXR0YXJvbGk6Cj4gUm9ja2NoaXAgaGFy ZHdhcmUgaGFzIHNvbWUgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIHNoYXJlZCBhY3Jvc3MgbWFueQo+ IGhhcmR3YXJlIElQcywgYW5kIHRoZXJlZm9yZSBtYW55IGRyaXZlcnMgZm9yIHRoZW0uCj4gCj4g TW9zdCBub3RhYmx5IGlzICJISVdPUkRfVVBEQVRFIiwgYSBtYWNybyB3aXRoIHNsaWdodGx5IGRp ZmZlcmVudAo+IHNlbWFudGljcyByZXBsaWNhdGVkIGFjcm9zcyBtYW55IGEgcm9ja2NoaXAgZHJp dmVyLiBJdCBjdXJyZW50bHkgY2FuIGJlCj4gZm91bmQgZGVmaW5lZCBpbiAxOSBmaWxlcywgb2Yg d2hpY2ggMTggYXJlIFJvY2tjaGlwIGRyaXZlcnMuCj4gCj4gSW5zdGVhZCBvZiBjb250aW51aW5n IHRoaXMgdHJhZGl0aW9uIHdpdGggeWV0IGFub3RoZXIgdmVyc2lvbiBvZiBpdCBpbgo+IG15IG5l dyBkcml2ZXJzLCBhZGQgYSByb2NrY2hpcCBzb2MgaGVhZGVyIGZvciB1dGlsaXR5IG1hY3JvcyBh bmQgc3VjaC4KPiBJbiB0aGlzIGhlYWRlciwgd2UgZGVmaW5lIGEgbmV3IHNldCBvZiBtYWNyb3M6 IFJFR19VUERBVEVfV0UgYW5kIGl0cwo+IGxpdHRsZSBicm90aGVyIFJFR19VUERBVEVfQklUX1dF LiBUaGVzZSBhcmUgcHVycG9zZWZ1bGx5IG5hbWVkIHNvbWV0aGluZwo+IG90aGVyIHRoYW4gIkhJ V09SRF9VUERBVEUiLCB0byByZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2YgbWFjcm8KPiByZWRlZmlu aXRpb25zIGFuZCBhbHNvIHJlZHVjZSB0aGUgcG90ZW50aWFsIHRvIG1pc2xlYWQgYW55IGFkb3B0 ZXIgaW50bwo+IHRoaW5raW5nIHRoaXMgSElXT1JEX1VQREFURSBpcyBqdXN0IGxpa2UgdGhlaXIg SElXT1JEX1VQREFURS4KPiAKPiBPbGQgZHJpdmVycyBjYW4gYmUgbW92ZWQgb3ZlciB0byB0aGUg bmV3IG1hY3JvcyBvdmVyIHRoZSBuZXh0IHdoaWxlIGlmCj4gdGhlaXIgbWFpbnRhaW5lcnMgdGhp bmsgaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZW0sIHdoaWNoIGl0IHByb2JhYmx5IGRvZXMuCj4gCj4g U2lnbmVkLW9mZi1ieTogTmljb2xhcyBGcmF0dGFyb2xpIDxuaWNvbGFzLmZyYXR0YXJvbGlAY29s bGFib3JhLmNvbT4KCndoZW4geW91J3JlIGRvaW5nIHRoZXNlIGZhbmN5IG5pY2UgbmV3IG1hY3Jv cywgSSB0aGluayB0aGV5IG1pZ2h0IHdhbnQgdG8KYmUgZXZlbiBtb3JlIGNlbnRyYWxseSBsb2Nh dGVkIGZvciBfZXZlcnlvbmVfIDotKSAuCgoKQmVjYXVzZSB3aGlsZSB0cnVlLCBSb2NrY2hpcCBz ZWVtcyB0byBiZSB0aGUgYmlnZ2VzdCB1c2VyIG9mIGhpd29yZC1tYXNrLQpyZWdpc3RlcnMsIHRo ZXkncmUgbm90IHRoZSBvbmx5IG9uZS4KCkp1c3Qgc2ltcGx5IGdyZXBwaW5nIGZvciBISVdPUkQg aW4ga2VybmVsIGRyaXZlcnMgcmV2ZWFsZWQKLSBTdW5wbHVzIHNwNzAyMSBjbG9jayBhbmQgcmVz ZXQgZHJpdmVycyBbMF0KLSBhIG51bWJlciBvZiBoaXNpbGljb24gY2xvY2sgZHJpdmVycyBbMV0K LSBzb21lIG90aGVyIGNsb2NrIGRyaXZlcnMKCmFuZCBhcyB0aGUgbmFtaW5nIGlzIG5vdCByZWFs bHkgc3RhbmRhcml6ZWQsIEkgZ3Vlc3MgdGhlcmUgd2lsbCBiZSBtb3JlCm9mIHRoZSBzYW1lIHRo aW5nIHVuZGVyIGRpZmZlcmVudCBuYW1lcyBpbiBvdGhlciBwbGFjZXMuCgpTaW1pbGFybHksIHdl IGFscmVhZHkgaGF2ZSBhIEZJRUxEX1BSRVBfSElXT1JEIGluIFsyXSwgc28gYWxsIGluIGFsbApJ IHRoaW5rIGFsbCBvZiB0aGlzIHdhbnRzIHRvIG1vdmUgaW4gd2l0aCB0aGUgb3RoZXIgYml0Zmll bGQgc3R1ZmYgbGlrZQpGSUVMRF9QUkVQLgoKCkhlaWtvCgoKWzBdIGh0dHBzOi8vZ2l0Lmtlcm5l bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2Ry aXZlcnMvY2xrL2Nsay1zcDcwMjEuYyNuNDIKICAgIGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHVi L3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2RyaXZlcnMvcmVz ZXQvcmVzZXQtc3VucGx1cy5jClsxXSBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu dXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2ZXJzL2Nsay9oaXNpbGlj b24vY2xrLWhpMzYyMC5jCiAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgv a2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2ZXJzL2Nsay9oaXNpbGljb24v Y2xrLWhpMzY2MC5jCiAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy bmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xr LWhpMzY3MC5jCiAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs L2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhp NjIyMC5jClsyXSBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92Ni4xNS9zb3VyY2Uv ZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLXNhbXN1bmctZGNwaHkuYyNMMjMKCj4g LS0tCj4gIGluY2x1ZGUvc29jL3JvY2tjaGlwL3V0aWxzLmggfCA3NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgNzYgaW5zZXJ0 aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NvYy9yb2NrY2hpcC91dGlscy5oIGIv aW5jbHVkZS9zb2Mvcm9ja2NoaXAvdXRpbHMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM0OTA2OWU3NWZm NTFlYmQ3YTIyMDg5YWY3OTZmZWFmZDIyN2ZmYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNs dWRlL3NvYy9yb2NrY2hpcC91dGlscy5oCj4gQEAgLTAsMCArMSw3NiBAQAo+ICsvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwo+ICsvKgo+ICsgKiBDb3B5cmln aHQgKGMpIDIwMjUgQ29sbGFib3JhIEx0ZC4KPiArICoKPiArICogVXRpbGl0eSB0eXBlcywgaW5s aW5lIGZ1bmN0aW9ucywgYW5kIG1hY3JvcyB0aGF0IGFyZSB1c2VkIGFjcm9zcyBzZXZlcmFsCj4g KyAqIFJvY2tjaGlwLXNwZWNpZmljIGRyaXZlcnMuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAq ICAgICBOaWNvbGFzIEZyYXR0YXJvbGkgPG5pY29sYXMuZnJhdHRhcm9saUBjb2xsYWJvcmEuY29t Pgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19TT0NfUk9DS0NISVBfVVRJTFNfSF9fCj4gKyNkZWZp bmUgX19TT0NfUk9DS0NISVBfVVRJTFNfSF9fCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYml0cy5o Pgo+ICsjaW5jbHVkZSA8bGludXgvYnVpbGRfYnVnLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9saW1p dHMuaD4KPiArCj4gKy8qCj4gKyAqIEluY29taW5nIG1hY3JvIGJhc2lsaXNrcywgc3RhcmUgZGly ZWN0bHkgYXQgdGhlbSBhdCB5b3VyIG93biBwZXJpbC4KPiArICogQXMgYSBnZW50bGUgcmVtaW5k ZXIgdG8gaGVscCB3aXRoIGNvZGUgY29tcHJlaGVuc2lvbjogQlVJTERfQlVHX09OX1pFUk8KPiAr ICogaXMgY29uZnVzaW5nbHkgbmFtZWQ7IGl0J3MgYSB2ZXJzaW9uIG9mIEJVSUxEX0JVR19PTiB0 aGF0IGV2YWx1YXRlcyB0byB6ZXJvCj4gKyAqIGlmIGl0IGRvZXMgbm90IHRyaWdnZXIsIGkuZS4g dGhlIGFzc2VydGlvbiB3aXRoaW4gdGhlIG1hY3JvIHN0aWxsIGNoZWNrcwo+ICsgKiBmb3IgYSB0 cnV0aHkgdmFsdWUsIG5vdCB6ZXJvLgo+ICsgKi8KPiArCj4gKy8qKgo+ICsgKiBSRUdfVVBEQVRF X1dFIC0gZ2VuZXJhdGUgYSByZWdpc3RlciB3cml0ZSB2YWx1ZSB3aXRoIGEgd3JpdGUtZW5hYmxl IG1hc2sKPiArICogQF92YWw6IHVuc2hpZnRlZCB2YWx1ZSB3ZSB3aXNoIHRvIHVwZGF0ZSBiZXR3 ZWVuIEBfbG93IGFuZCBAX2hpZ2gKPiArICogQF9sb3c6IGluZGV4IG9mIHRoZSBsb3cgYml0IG9m IHRoZSBiaXQgcmFuZ2Ugd2Ugd2FudCB0byB1cGRhdGUKPiArICogQF9oaWdoOiBpbmRleCBvZiB0 aGUgaGlnaCBiaXQgb2YgdGhlIGJpdCByYW5nZSB3ZSB3YW50IHRvIHVwZGF0ZQo+ICsgKgo+ICsg KiBUaGlzIG1hY3JvIHN0YXRpY2FsbHkgZ2VuZXJhdGVzIGEgdmFsdWUgY29uc2lzdGluZyBvZiBA X3ZhbCBzaGlmdGVkIHRvIHRoZQo+ICsgKiBsZWZ0IGJ5IEBfbG93LCBhbmQgYSB3cml0ZS1lbmFi bGUgbWFzayBpbiB0aGUgdXBwZXIgMTYgYml0cyBvZiB0aGUgdmFsdWUKPiArICogdGhhdCBzZXRz IGJpdCBgYGkgPDwgMTZgYCB0byBgYDFgYCBpZiBiaXQgYGBpYGAgaXMgd2l0aGluIHRoZSBAX2xv dyB0byBAX2hpZ2gKPiArICogcmFuZ2UuIE9ubHkgdXAgdG8gYml0IChAX2hpZ2ggLSBAX2xvdykg b2YgQF92YWwgaXMgdXNlZCBmb3Igc2FmZXR5LCBpLmUuCj4gKyAqIHRyeWluZyB0byB3cml0ZSBh IHZhbHVlIHRoYXQgZG9lc24ndCBmaXQgaW4gdGhlIHNwZWNpZmllZCByYW5nZSB3aWxsIHNpbXBs eQo+ICsgKiB0cnVuY2F0ZSBpdC4KPiArICoKPiArICogVGhpcyBpcyB1c2VmdWwgZm9yIHNvbWUg aGFyZHdhcmUsIGxpa2Ugc29tZSBvZiBSb2NrY2hpcCdzIHJlZ2lzdGVycywgd2hlcmUKPiArICog YSAzMi1iaXQgd2lkdGggcmVnaXN0ZXIgaXMgZGl2aWRlZCBpbnRvIGEgdmFsdWUgbG93IGhhbGYs IGFuZCBhIHdyaXRlIGVuYWJsZQo+ICsgKiBoaWdoIGhhbGYuIEJpdHMgaW4gdGhlIGxvdyBoYWxm IGFyZSBvbmx5IHVwZGF0ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4KPiArICogdGhlIGhp Z2ggaGFsZiBpcyBgYDFgYCwgYWxsb3dpbmcgZm9yIGxvY2stZnJlZSBhdG9taWMgdXBkYXRlcyBv ZiBhIHJlZ2lzdGVyLgo+ICsgKgo+ICsgKiBUaGlzIG1hY3JvIHJlcGxhY2VzIHRoZSB2ZW5lcmFi bGUgYGBISVdPUkRfVVBEQVRFYGAsIHdoaWNoIGlzIGNvcGllZCBhbmQKPiArICogcGFzdGVkIGlu IHNsaWdodGx5IGRpZmZlcmVudCBmb3JtcyBhY3Jvc3MgbWFueSBkaWZmZXJlbnQgUm9ja2NoaXAg ZHJpdmVycy4KPiArICogQmVmb3JlIHN3aXRjaGluZyBkcml2ZXJzIHRvIHVzZSBpdCwgZmFtaWxp YXJpc2UgeW91cnNlbGYgd2l0aCB0aGUgc2VtYW50aWNzCj4gKyAqIG9mIHlvdXIgc3BlY2lmaWMg YGBISVdPUkRfVVBEQVRFYGAgY29tcGFyZWQgdG8gdGhpcyBmdW5jdGlvbi1saWtlIG1hY3JvJ3MK PiArICogc2VtYW50aWNzLgo+ICsgKgo+ICsgKiBSZXR1cm46IHRoZSB2YWx1ZSwgc2hpZnRlZCBp bnRvIHBsYWNlLCB3aXRoIHRoZSByZXF1aXJlZCB3cml0ZS1lbmFibGUgYml0cwo+ICsgKi8KPiAr I2RlZmluZSBSRUdfVVBEQVRFX1dFKF92YWwsIF9sb3csIF9oaWdoKSAoIFwKPiArCUJVSUxEX0JV R19PTl9aRVJPKGNvbnN0X3RydWUoKF9sb3cpID4gKF9oaWdoKSkpICsgXAo+ICsJQlVJTERfQlVH X09OX1pFUk8oY29uc3RfdHJ1ZSgoX2hpZ2gpID4gMTUpKSArIFwKPiArCUJVSUxEX0JVR19PTl9a RVJPKGNvbnN0X3RydWUoKF9sb3cpIDwgMCkpICsgXAo+ICsJQlVJTERfQlVHX09OX1pFUk8oY29u c3RfdHJ1ZSgodTY0KSAoX3ZhbCkgPiBVMTZfTUFYKSkgKyBcCj4gKwkoKF92YWwgJiBHRU5NQVNL KChfaGlnaCkgLSAoX2xvdyksIDApKSA8PCAoX2xvdykgfCBcCj4gKwkoR0VOTUFTSygoX2hpZ2gp LCAoX2xvdykpIDw8IDE2KSkpCj4gKwo+ICsvKioKPiArICogUkVHX1VQREFURV9CSVRfV0UgLSB1 cGRhdGUgYSBiaXQgd2l0aCBhIHdyaXRlLWVuYWJsZSBtYXNrCj4gKyAqIEBfX3ZhbDogbmV3IHZh bHVlIG9mIHRoZSBiaXQsIGVpdGhlciBgYDBgYCAwciBgYDFgYAo+ICsgKiBAX19iaXQ6IGJpdCBp bmRleCB0byBtb2RpZnksIDAgPD0gQF9fYml0IDwgMTYuCj4gKyAqCj4gKyAqIFRoaXMgaXMgbGlr ZSBSRUdfVVBEQVRFX1dFKCkgYnV0IG9ubHkgbW9kaWZpZXMgYSBzaW5nbGUgYml0LCB0aGVyZWJ5 IG1ha2luZwo+ICsgKiBpbnZvY2F0aW9uIGVhc2llciBieSBhdm9pZGluZyBoYXZpbmcgdG8gcGFz cyBhIHJlcGVhdGVkIHZhbHVlLgo+ICsgKgo+ICsgKiBSZXR1cm46IGEgdmFsdWUgd2l0aCBiaXQg QF9fYml0IHNldCB0byBAX192YWwgYW5kIEBfX2JpdCA8PCAxNiBzZXQgdG8gYGAxYGAKPiArICov Cj4gKyNkZWZpbmUgUkVHX1VQREFURV9CSVRfV0UoX192YWwsIF9fYml0KSAoIFwKPiArCUJVSUxE X0JVR19PTl9aRVJPKGNvbnN0X3RydWUoKF9fdmFsKSA+IDEpKSArIFwKPiArCUJVSUxEX0JVR19P Tl9aRVJPKGNvbnN0X3RydWUoKF9fdmFsKSA8IDApKSArIFwKPiArCVJFR19VUERBVEVfV0UoKF9f dmFsKSwgKF9fYml0KSwgKF9fYml0KSkpCj4gKwo+ICsjZW5kaWYgLyogX19TT0NfUk9DS0NISVBf VVRJTFNfSF9fICovCj4gCj4gCgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlw QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1yb2NrY2hpcAo=