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 E82E7C5B543 for ; Wed, 28 May 2025 12:35:40 +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:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=PowHekAxgLRW1SbwD0ThHPFqSvDJZloAEcvh/7anIiQ=; b=MdHMd0hxAv9fHl gSg9yREtGWYx2M1+5zf012SalSnqVFZRsMhMf4cRHlWgVAjn5J/5KEucc/ZiN6amN6sp5WDZSCvsx uwU5pvILBnGjBn6mFdNXdYMuVi9yzINfusFX1xjJRqyhIlGGQzVSimyr2J6CIlCeAVSeH57sJaQxr 1vXWnUu5XiF5anHUZRGqpPVWZ/NFzh16sUNQTgG5uvVyTcU31HA5YnTpWFq1z6yxSykLd7mTpbPZn zDSojCPG2+3Z0si5F5uOTsCu8os12Mx5hXEuwTo73lntnpGP9RPIabyW2Wt3Vndkww7sMyPqcfSa9 QXqrxtOl0yRH8l+45Shw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uKG0N-0000000D7yC-049F; Wed, 28 May 2025 12:35:35 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uKFuG-0000000D7ID-1jq8; Wed, 28 May 2025 12:29:17 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 280A11A2D; Wed, 28 May 2025 05:28:57 -0700 (PDT) Received: from donnerap.manchester.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ADD023F673; Wed, 28 May 2025 05:29:10 -0700 (PDT) Date: Wed, 28 May 2025 13:29:02 +0100 From: Andre Przywara To: Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= Cc: =?UTF-8?B?0JDQu9C10LrRgdCw0L3QtNGAINCo0YPQsdC40L0=?= , linux-kernel@vger.kernel.org, Brandon Cheo Fusi , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Philipp Zabel , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-riscv@lists.infradead.org Subject: Re: [PATCH v12 2/3] pwm: Add Allwinner's D1/T113-S3/R329 SoCs PWM support Message-ID: <20250528132902.70f634cd@donnerap.manchester.arm.com> In-Reply-To: References: <20250427142500.151925-1-privatesub2@gmail.com> <20250427142500.151925-3-privatesub2@gmail.com> <20250512233944.06bc1cb7@minigeek.lan> Organization: ARM X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.32; aarch64-unknown-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250528_052916_547429_DC8D3804 X-CRM114-Status: GOOD ( 58.37 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCAyOCBNYXkgMjAyNSAxMzowODo0MCArMDIwMApVd2UgS2xlaW5lLUvDtm5pZyA8dWts ZWluZWtAa2VybmVsLm9yZz4gd3JvdGU6CgpIaSBVd2UsCgo+IE9uIFNhdCwgTWF5IDI0LCAyMDI1 IGF0IDEyOjA3OjI4UE0gKzAzMDAsINCQ0LvQtdC60YHQsNC90LTRgCDQqNGD0LHQuNC9IHdyb3Rl Ogo+ID4g0LLRgiwgMTMg0LzQsNGPIDIwMjXigK/Qsy4g0LIgMDE6MzksIEFuZHJlIFByenl3YXJh IDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPjogIAo+ID4gPgo+ID4gPiBPbiBTdW4sIDI3IEFwciAy MDI1IDE3OjI0OjU0ICswMzAwCj4gPiA+IEFsZWtzYW5kciBTaHViaW4gPHByaXZhdGVzdWIyQGdt YWlsLmNvbT4gd3JvdGU6ICAKPiA+ID4gPiArICAgICAgICAgICAgICAqLwo+ID4gPiA+ICsgICAg ICAgICAgICAgdXNlX2J1c19jbGsgPSBmYWxzZTsKPiA+ID4gPiArICAgICAgICAgICAgIHZhbCA9 IG11bF91NjRfdTY0X2Rpdl91NjQoc3RhdGUtPnBlcmlvZCwgaG9zY19yYXRlLCBOU0VDX1BFUl9T RUMpOwo+ID4gPiA+ICsgICAgICAgICAgICAgLyoKPiA+ID4gPiArICAgICAgICAgICAgICAqIElm IHRoZSBjYWxjdWxhdGVkIHZhbHVlIGlzIOKJpCAxLCB0aGUgcGVyaW9kIGlzIHRvbyBzaG9ydAo+ ID4gPiA+ICsgICAgICAgICAgICAgICogZm9yIHByb3BlciBQV00gb3BlcmF0aW9uCj4gPiA+ID4g KyAgICAgICAgICAgICAgKi8KPiA+ID4gPiArICAgICAgICAgICAgIGlmICh2YWwgPD0gMSkgeyAg Cj4gPiA+Cj4gPiA+IFNvIGlmIEkgZ2V0IHRoZSBjb2RlIGNvcnJlY3RseSwgaXQgcHJlZmVycyBI T1NDIG92ZXIgQVBCPyBJcyB0aGF0Cj4gPiA+IHJlYWxseSB0aGUgYmVzdCB3YXk/IFNob3VsZG4n dCBpdCBiZSB0aGUgb3RoZXIgd2F5IGFyb3VuZDogd2UgdXNlIHRoZQo+ID4gPiBmYXN0ZXIgY2xv Y2ssIHNpbmNlIHRoaXMgd2lsbCBub3QgbGltaXQgdGhlIHNpYmxpbmcgY2hhbm5lbD8KPiA+ID4K PiA+ID4gQW5kIGFub3RoZXIgdGhpbmcgdG8gY29uc2lkZXIgYXJlIHJvdW5kaW5nIGVycm9ycyBk dWUgdG8gaW50ZWdlcgo+ID4gPiBkaXZpc2lvbjogY2VydGFpbiBwZXJpb2QgcmF0ZXMgbWlnaHQg YmUgYmV0dGVyIGFjaGlldmFibGUgd2l0aCBvbmUgb3IKPiA+ID4gdGhlIG90aGVyIHNvdXJjZSBj bG9jazogMyBNSHogd29ya3MgYmVzdCBhcyAyNE1Iei84LCAzLjEyNU1IeiBhcwo+ID4gPiAxMDBN SHovMzIuCj4gPiA+IFNvIHNoYWxsIHdlIGNhbGN1bGF0ZSB0aGUgdmFsdWVzIGFuZCBjb21wYXJl IHRoZSBlcnJvcnMgaW5zdGVhZD8KPiA+ID4gT2gsIGFuZCBhbHNvIHdlIG5lZWQgdG8gY29uc2lk ZXIgYnlwYXNzaW5nLCBJIGZlZWwgbGlrZSB0aGlzIHNob3VsZCBiZQo+ID4gPiBjaGVja2VkIGZp cnN0Lgo+ID4gPgo+ID4gPiBJbiBhbnkgY2FzZSBJIHRoaW5rIHRoZXJlIHNob3VsZCBiZSBhIGNv bW1lbnQgZGVzY3JpYmluZyB0aGUgc3RyYXRlZ3kKPiA+ID4gYW5kIGdpdmUgc29tZSByYXRpb25h bGUsIEkgdGhpbmsuICAKPiA+IAo+ID4gSSBsaWtlIHRoZSBpZGVhIG9mIGNvbXBhcmluZyB0aGUg cXVhbnRpemF0aW9uIGVycm9yIGZvciBlYWNoIGNsb2NrIHNvdXJjZQo+ID4gKGkuZS4gY29tcHV0 aW5nIHRoZSBhY3R1YWwgcGVyaW9kIGZvciBib3RoIEFQQiBhbmQgSE9TQyBhbmQgY2hvb3NpbmcK PiA+IHdoaWNoZXZlciBpcyBjbG9zZXIgdG8gdGhlIHJlcXVlc3RlZCBwZXJpb2QpLgo+ID4gSSBj YW4gdHJ5IHRvIGltcGxlbWVudCB0aGF0IGVycm9yLW1pbmltaXphdGlvbiBhcHByb2FjaCBpbiB0 aGUgbmV4dAo+ID4gc2VyaWVzIG9mIHBhdGNoZXMgYW5kIGFkZCBhIGNvbW1lbnQgZXhwbGFpbmlu ZyB0aGUgc3RyYXRlZ3kuICAKPiAKPiBDb25zdW1lcnMgaGF2ZSBkaWZmZXJlbnQgbmVlZHMuIFNv bWUgbWlnaHQgcHJlZmVyIGEgYmV0dGVyIG1hdGNoIGZvcgo+IHBlcmlvZCwgYnV0IGluIG15IGV4 cGVyaWVuY2UgbW9zdCB3b3VsZCBnbyBmb3IgYSBmaW5lLWdyYWluZWQgc2VsZWN0aW9uCj4gb2Yg ZHV0eV9jeWNsZSwgc28gcHJlZmVyaW5nIHRoZSBmYXN0ZXIgY2xvY2sgc291bmRzIHNhbmUuCj4g Cj4gSSBkb24ndCBzYXkgbWluaW1pemluZyB0aGUgZXJyb3IgaXMgd3JvbmcsIGJ1dCBpZiBpdCdz IHVuY2xlYXIgdGhhdAo+IHRoaXMgbWF0Y2hlcyB3aGF0IGEgY29uc3VtZXIgd2FudHMgSSBvYmpl Y3QgdG8gbWFrZSB0aGUgcHJvY2VkdXJlIHRvCj4gc2VsZWN0IHRoZSBoYXJkd2FyZSBzZXR0aW5n cyBjb25zaWRlcmFibHkgbW9yZSBjb21wbGljYXRlZCBhbmQgcnVuLXRpbWUKPiBpbnRlbnNpdmUu CgpZZXMsIEkgYWdyZWUuIFRoZXJlIHNlZW1zIHRvIGJlIGFub3RoZXIgdXNlIGNhc2UgaGVyZSwg d2hpY2ggaXMgdG8gcHJvdmlkZQpjbG9ja3Mgb24gb3V0cHV0IHBpbnMuIFRoZSBQV00gSVAgaGFz IGEgYnlwYXNzIHN3aXRjaCAocGVyIGNoYW5uZWwsIGFmdGVyCnRoZSBkaXZpZGVyKSwgYW5kIHRo aXMgZmVhdHVyZSBpcyBhbHJlYWR5IHJlcXVpcmVkIHRvIHN1cHBseSB0aGUKImludGVybmFsIiAo Y28tcGFja2FnZWQpIEV0aGVybmV0IFBIWSBvbiB0aGUgQWxsd2lubmVyIEg2MTYgd2l0aCBpdHMg Y2xvY2suCldpdGggdGhlIHR3byBwb3NzaWJsZSBpbnB1dCBjbG9ja3MgYW5kIHRob3NlIHByZS1k aXZpZGVycyB0aGVyZSBpcyBhY3R1YWxseQpxdWl0ZSBhIG51bWJlciBvZiBwb3NzaWJsZSBmcmVx dWVuY2llcyB0byBkZWxpdmVyIG9uIG91dHB1dCBwaW5zLgoKU2luY2Ugd2UgbmVlZCBzb21lIGFs Z29yaXRobSB0byBkZWNpZGUgd2hlbiB3ZSBuZWVkIHRvIHVzZSB0aGUgYnlwYXNzCm1vZGUsIHNo b3VsZCB3ZSBjaGVjayBmb3IgdGhhdCBpZiB0aGUgZHV0eSBjeWNsZSBpcyA1MCUsIHRvIHNlZSBp ZiB3ZSBjYW4KcmVhY2ggdGhlIGZyZXF1ZW5jeSB3aXRoIGp1c3QgdGhlIHByZS1kaXZpZGVycz8K Q2hhbmNlcyBhcmUgd2UgbmVlZCB0aGlzIGFueXdheSwgc2luY2UgZm9yIGluc3RhbmNlIHRoZSAy NE1IeiByZXF1aXJlZCBmb3IKdGhlIFBIWSBjYW5ub3QgYmUgYWNoaWV2ZWQgb3RoZXJ3aXNlLgoK PiA+ID4gPiArc3RhdGljIGludCBzdW4yMGlfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4gPiA+ID4gK3sKPiA+ID4gPiArICAgICBzdHJ1Y3QgcHdtX2NoaXAgKmNoaXA7 Cj4gPiA+ID4gKyAgICAgc3RydWN0IHN1bjIwaV9wd21fY2hpcCAqc3VuMjBpX2NoaXA7Cj4gPiA+ ID4gKyAgICAgc3RydWN0IGNsayAqY2xrX2J1czsKPiA+ID4gPiArICAgICBzdHJ1Y3QgcmVzZXRf Y29udHJvbCAqcnN0Owo+ID4gPiA+ICsgICAgIHUzMiBucHdtOwo+ID4gPiA+ICsgICAgIGludCBy ZXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgIHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBk ZXYtPmRldi5vZl9ub2RlLCAiYWxsd2lubmVyLG5wd21zIiwgJm5wd20pOwo+ID4gPiA+ICsgICAg IGlmIChyZXQgPCAwKQo+ID4gPiA+ICsgICAgICAgICAgICAgbnB3bSA9IDg7IC8qIERlZmF1bHQg dmFsdWUgKi8KPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgaWYgKG5wd20gPiAxNikgewo+ID4gPiA+ ICsgICAgICAgICAgICAgZGV2X2luZm8oJnBkZXYtPmRldiwgIkxpbWl0aW5nIG51bWJlciBvZiBQ V00gbGluZXMgZnJvbSAldSB0byAxNiIsIG5wd20pOyAgCj4gPiA+Cj4gPiA+IEkgZG9uJ3QgdGhp bmsgd2Ugc2hvdWxkIHByb2NlZWQgaWYgdGhlIGZpcm13YXJlIGluZm9ybWF0aW9uIGlzIGNsZWFy bHkKPiA+ID4gd3JvbmcuIEp1c3QgYmFpbCBvdXQgd2l0aCAtRUlOVkFMIG9yIHNvIGhlcmUsIHNv IHRoYXQgZ2V0cyBmaXhlZCBpbiB0aGUKPiA+ID4gRFQuICAKPiAKPiBUbyBtZSBpdCdzIG5vdCBv YnZpb3VzIHRoYXQgdGhlICJmaXJtd2FyZSBpbmZvcm1hdGlvbiBpcyBjbGVhcmx5IHdyb25nIi4K PiBNYXliZSB0aGUgbmV4dCBBbGx3aW5uZXIgU29DIHdpbGwgaGF2ZSAyNCBvdXRwdXRzIGFuZCB0 aGUgcHJvYmxlbSBpcwo+IG9ubHkgdGhhdCB0aGlzIGRyaXZlciBpc24ndCBwcmVwYXJlZCB0byBj b3BlIGZvciB0aGF0IG51bWJlciBvZiBvdXRwdXRzPwoKQnV0IHRoZW4gaXQgd291bGQgYmUgYW4g ZXJyb3IsIHJlZ2FyZGxlc3M/ClRoZSBNTUlPIHJlZ2lzdGVyIGZyYW1lIG9mIHRoaXMgSVAgaGVy ZSBoYXMgYSBoYXJkIGxpbWl0IG9uIDE2IGNoYW5uZWxzLApib3RoIGJ5IHRoZSBiaXQgYXNzaWdu bWVudHMgaW4gZWFjaCByZWdpc3RlciAoMiBiaXRzIHBlciBjaGFubmVsIGluIGEKMzItYml0IHJl Z2lzdGVyKSwgYnV0IGFsc28gYnkgdGhlIGxheW91dCBvZiB0aGUgcmVnaXN0ZXJzIChtYXggOApy ZWdpc3RlcnMsIGVhY2ggZm9yIGEgcGFpciBvZiAyIFBXTSBjaGFubmVscykuIFNvIGFueXRoaW5n IHdpdGggbW9yZSB0aGFuCjE2IGNoYW5uZWxzIGNhbm5vdCBiZSBjb21wYXRpYmxlIHdpdGggd2hh dCB0aGlzIGRyaXZlciBzdXBwb3J0cy4KU28gYXMgdGhpcyBkcml2ZXIgaGVyZSBzdGFuZHMgcmln aHQgbm93LCBtb3JlIHRoYW4gMTYgY2hhbm5lbHMgaXMgYW4KZXJyb3IsIHNpbXBsZSBhcyB0aGF0 LiBJZiB3ZSBleHRlbmQgdGhlIGRyaXZlciBsYXRlciBvbiwgdG8gY292ZXIgbW9yZQphZHZhbmNl ZCBJUCwgd2Ugd291bGQgbmF0dXJhbGx5IGFtZW5kIHRoaXMgY2hlY2ssIG9mIGNvdXJzZS4KCj4g SWYgdGhhdCByZWFsbHkgaGFwcGVucyBpdCdzIGFyZ3VhYmxlIGlmIGl0J3MgYmV0dGVyIHRvIHJl ZnVzZSBjb21wbGV0ZWx5Cj4gb3IganVzdCBjb3BlIGZvciB0aGUgMTYgb3V0cHV0cyB0aGF0IHRo ZSBkcml2ZXIgaXMgYWJsZSB0by4gSU1ITyBpdCdzCj4gYmV0dGVyIHRvIGNvbnRpbnVlIGJlY2F1 c2UgYSBwYXJ0aWFsbHkgd29ya2FibGUgcHdtY2hpcCBpcyBiZXR0ZXIgdGhhbgo+IG5vIGNoaXAg YXQgYWxsLiBCdXQgSSdkIHVwZ3JhZGUgdGhlIG1lc3NhZ2UgdG8gZGV2X3dhcm4oKS4KCkkgZG9u J3QgdW5kZXJzdGFuZCB3aHkgd2Ugc2hvdWxkIGNvbnRpbnVlLiBJZiB0aGUgZmlybXdhcmUgaW5m b3JtYXRpb24KKERUKSBpcyB3cm9uZywgd2Ugc2hvdWxkIG1ha2UgdGhpcyBjbGVhciwgdG8gZm9y Y2UgcGVvcGxlIHRvIGZpeAp0aGF0LCBpbnN0ZWFkIG9mIHNvbWVob3cgcGFwZXJpbmcgb3ZlciBp dC4KCkJ1dCBpdCdzIHJlYWxseSBhbiBhY2FkZW1pYyBkaXNjdXNzaW9uLCBJIGRvbid0IGV4cGVj dCBhbnlvbmUgdG8gcHV0IG1vcmUKdGhhbiAxNiBjaGFubmVscyBpbiB0aGUgRFQuIEl0J3MgaW4g dGhlIHBlci1Tb0MgLmR0c2kgYW55d2F5LCBzbyBub3RoaW5nCnRoYXQgYm9hcmQgRFQgYXV0aG9y cyB3b3VsZCB0b3VjaC4KCj4gPiA+ID4gKyAgICAgICAgICAgICBucHdtID0gMTY7Cj4gPiA+ID4g KyAgICAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICAgICBjaGlwID0gZGV2bV9wd21jaGlwX2FsbG9j KCZwZGV2LT5kZXYsIG5wd20sIHNpemVvZigqc3VuMjBpX2NoaXApKTsKPiA+ID4gPiArICAgICBp ZiAoSVNfRVJSKGNoaXApKQo+ID4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2hp cCk7Cj4gPiA+ID4gKyAgICAgc3VuMjBpX2NoaXAgPSB0b19zdW4yMGlfcHdtX2NoaXAoY2hpcCk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgIHN1bjIwaV9jaGlwLT5iYXNlID0gZGV2bV9wbGF0Zm9y bV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+ID4gPiA+ICsgICAgIGlmIChJU19FUlIoc3Vu MjBpX2NoaXAtPmJhc2UpKQo+ID4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoc3Vu MjBpX2NoaXAtPmJhc2UpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICBjbGtfYnVzID0gZGV2bV9j bGtfZ2V0X2VuYWJsZWQoJnBkZXYtPmRldiwgImJ1cyIpOwo+ID4gPiA+ICsgICAgIGlmIChJU19F UlIoY2xrX2J1cykpCj4gPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZSgm cGRldi0+ZGV2LCBQVFJfRVJSKGNsa19idXMpLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgYnVzIGNsb2NrXG4iKTsKPiA+ID4gPiArCj4g PiA+ID4gKyAgICAgc3VuMjBpX2NoaXAtPmNsa19ob3NjID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQo JnBkZXYtPmRldiwgImhvc2MiKTsKPiA+ID4gPiArICAgICBpZiAoSVNfRVJSKHN1bjIwaV9jaGlw LT5jbGtfaG9zYykpCj4gPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZSgm cGRldi0+ZGV2LCBQVFJfRVJSKHN1bjIwaV9jaGlwLT5jbGtfaG9zYyksCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBob3NjIGNsb2NrXG4i KTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgcmV0ID0gZGV2bV9jbGtfcmF0ZV9leGNsdXNpdmVf Z2V0KCZwZGV2LT5kZXYsIHN1bjIwaV9jaGlwLT5jbGtfaG9zYyk7ICAKPiA+ID4KPiA+ID4gSnVz dCBpZ25vcmluZyBmb3IgYSBiaXQgdGhhdCB0aGUgMjQgTUh6IG9zY2lsbGF0b3IgaXMgYSBmaXhl ZCBjbG9jawo+ID4gPiBhbnl3YXksIGJ1dCB3aHkgd291bGQgd2Ugd2FudCBleGNsdXNpdml0eSBh bHJlYWR5IGF0IHByb2JlIHRpbWU/IElzbid0Cj4gPiA+IHRoYXQgdG9vIGxpbWl0aW5nLCBhcyBu byBvbmUgbWlnaHQgZXZlciB1c2UgYW55IFBXTSBjaGFubmVscywgYnV0IGl0Cj4gPiA+IHdvdWxk IHN0aWxsICJiZWxvbmcgdG8gdXMiPyAgCj4gCj4gVGhhdCdzIGEgc29mdCBjb25jZXB0IG9mICJi ZWxvbmcgdG8gdXMiLiBPdGhlciBjb25zdW1lcnMgY2FuIHN0aWxsIHVzZQo+IGl0IGFuZCBldmVu IGFsc28gY2FsbCBjbGtfcmF0ZV9leGNsdXNpdmVfZ2V0KCkuIElNSE8gaXQncyBhIGdvb2QgaWRl YSB0bwo+IGNhbGwgY2xrX3JhdGVfZXhjbHVzaXZlX2dldCgpIGZvciBlYWNoIGNsb2NrIHRoYXQg YSBkcml2ZXIgcmVsaWVzIG9uIG5vdAo+IHRvIGNoYW5nZS4gWW91IGNvdWxkIG1ha2UgdGhlIGRy aXZlciBtb3JlIGZsZXhpYmxlIGFuZCBvbmx5IGNhbGwgdGhhdAo+IHdoZW4gdGhlIHJhdGUgaXMg YWN0dWFsbHkgcmVsaWVkIG9uLCBidXQgdGhhdCdzIGFnYWluIGEgY29tcHJvbWlzZSB3aXRoCj4g Y29tcGxleGl0eSBvZiB0aGUgZHJpdmVyLiBBbmQgaWYgdGhlIGNsb2NrIHJhdGUgaXMgZml4ZWQg YW55aG93LCBpdAo+IGRvZXNuJ3QgaHVydCB0byBkbyBpdCBoZXJlLCByaWdodD8KClN1cmUsIGp1 c3Qgd2FudGVkIHRvIHBvaW50IHRoYXQgb3V0LiBJbmRlZWQgd2UgZG9uJ3QgbmVlZCB0byBib2ls IHRoZQpvY2VhbiBoZXJlLgoKPiA+ID4gPiArICAgICBpZiAocmV0KQo+ID4gPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgcmV0LAo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgaG9zYyBleGNsdXNp dmUgcmF0ZVxuIik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgIHN1bjIwaV9jaGlwLT5jbGtfYXBi ID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJnBkZXYtPmRldiwgImFwYiIpOwo+ID4gPiA+ICsgICAg IGlmIChJU19FUlIoc3VuMjBpX2NoaXAtPmNsa19hcGIpKQo+ID4gPiA+ICsgICAgICAgICAgICAg cmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgUFRSX0VSUihzdW4yMGlfY2hpcC0+Y2xr X2FwYiksCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk IHRvIGdldCBhcGIgY2xvY2tcbiIpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICByZXQgPSBkZXZt X2Nsa19yYXRlX2V4Y2x1c2l2ZV9nZXQoJnBkZXYtPmRldiwgc3VuMjBpX2NoaXAtPmNsa19hcGIp OyAgCj4gPiA+Cj4gPiA+IEp1c3QgZm9yIHRoZSByZWNvcmRzOiBBUEIgaXMgcHJhY3RpY2FsbHkg YWxzbyBhIGZpeGVkIGNsb2NrLCBzZXQgdXAKPiA+ID4gb25jZSBpbiBmaXJtd2FyZSBhbmQgbmV2 ZXIgY2hhbmdlZCwgc2luY2UgaXQgZHJpdmVzIGEgbG90IG9mIG90aGVyCj4gPiA+IHBlcmlwaGVy YWxzLgo+ID4gPiBCdXQgc2FtZSBxdWVzdGlvbiBhcyBhYm92ZSwgd2h5IGRvIHdlIGxvY2sgaXRz IHJhdGUgYWxyZWFkeSBoZXJlPyAgCj4gPiAKPiA+IFRoYXQgc3RlcCB3YXMgYWN0dWFsbHkgcmVj b21tZW5kZWQgYnkgVXdlIEtsZWluZS1Lw7ZuaWcsCj4gPiBzbyB0aGUgZGVjaXNpb24gb24gd2hl dGhlciB0byBrZWVwIG9yIGRyb3AgZXhjbHVzaXZlIHJlc2VydmF0aW9uCj4gPiBpcyByZWFsbHkg YSBxdWVzdGlvbiBmb3IgaGlt4oCUcGxlYXNlIGNvb3JkaW5hdGUgd2l0aCBVd2UKPiA+IHRvIGFn cmVlIG9uIGhvdyBiZXN0IHRvIHByb2NlZWQgaGVyZS4gIAo+IAo+IFNhbWUgYXMgYWJvdmUuIElm ZiB0aGUgZHJpdmVyIHJlbGllcyBvbiB0aGUgcmF0ZSBvZiB0aGlzIGNsb2NrIHRvIGtlZXAKPiBj b25zdGFudCwgY2FsbGluZyBjbGtfcmF0ZV9leGNsdXNpdmVfZ2V0KCkgaXMgcmlnaHQuCgpJdCB0 ZWNobmljYWxseSBkb2Vzbid0IHVudGlsIGEgY2hhbm5lbCBpcyBhY3R1YWxseSBwcm9ncmFtbWVk LCBidXQgZmFpcgplbm91Z2gsIGl0IGRvZXNuJ3QgbWF0dGVyIGFueXdheS4KCkNoZWVycywKQW5k cmUKCj4gPiA+ID4gKyAgICAgaWYgKHJldCkKPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiBk ZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIHJldCwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IGFwYiBleGNsdXNpdmUgcmF0ZVxuIik7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgICAgIGlmIChjbGtfZ2V0X3JhdGUoc3VuMjBpX2NoaXAtPmNsa19h cGIpIDw9IGNsa19nZXRfcmF0ZShzdW4yMGlfY2hpcC0+Y2xrX2hvc2MpKQo+ID4gPiA+ICsgICAg ICAgICAgICAgZGV2X2luZm8oJnBkZXYtPmRldiwgIkFQQiBjbG9jayBtdXN0IGJlIGdyZWF0ZXIg dGhhbiBob3NjIGNsb2NrIik7ICAKPiA+ID4KPiA+ID4gV2h5IHRoaXMgY2hlY2s/IERvZXMgdGhl IGNvZGUgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhpcyByZWxhdGlvbj8KPiA+ID4gSWYg eWVzLCB3ZSBtdXN0IHN1cmVseSBkZW55IHRoaXMgYW5kIGJhaWwgb3V0Lgo+ID4gPiBJZiBub3Qg KGFuZCBJIGZlZWwgd2Ugc2hvdWxkIGhhbmRsZSBpdCB0aGlzIHdheSksIHdlIGNhbiBqdXN0IGln bm9yZQo+ID4gPiB0aGlzIGFuZCBub3QgcHJpbnQgYW55dGhpbmcuICAKPiAKPiBhY2suCj4gCj4g QmVzdCByZWdhcmRzCj4gVXdlCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1yaXNjdgo=