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=-12.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable 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 BDDFDC433B4 for ; Thu, 15 Apr 2021 15:07:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A2C4F610FA for ; Thu, 15 Apr 2021 15:07:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234729AbhDOPIN (ORCPT ); Thu, 15 Apr 2021 11:08:13 -0400 Received: from phobos.denx.de ([85.214.62.61]:55638 "EHLO phobos.denx.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234869AbhDOPAF (ORCPT ); Thu, 15 Apr 2021 11:00:05 -0400 Received: from [IPv6:::1] (p578adb1c.dip0.t-ipconnect.de [87.138.219.28]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id C55F181FE1; Thu, 15 Apr 2021 16:59:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1618498780; bh=Kw07LkJdKop/yJQQqAUybaOom8omiDfjimVgY6INlKM=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=qG3vJnacjJH2T6/LHSUKQqKJUBWrcEN7r6NhcGCSdBtN4nss3tWZ0nO/Ises27Xvc VJGziRkn7XGX6HeJNFZ3NKxgJfYbo1qxsVRITxF5utVsu0V855wi9W/o5nOiAsG4j4 LzmcixCWz41r3/bCwgBpZpWa7aJMXgqoXHnAz/0L093+4TBflUjIMWQCZR0RFKlVXg k47GEkzZmKdFN1i6BrfQukuubfOoZ8NLj6HD4D23S0QhGYD27jXWwe+QQ52WES1B9h aS32TR1XAlYbdiafXGiMDKeW4MksrP+jd/DapR7g7HXa8+g0bzZaaTBKJcCvdhW4+c +FMQpDAlr3Yfg== Subject: Re: [PATCH 11/13] ARM: dts: stm32: fix LTDC port node on STM32 MCU ad MPU To: Alexandre TORGUE , arnd@arndb.de, robh+dt@kernel.org, jagan@amarulasolutions.com, Manivannan Sadhasivam , Marcin Sloniewski , Ahmad Fatoum Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-kernel@vger.kernel.org, Lee Jones , kuba@kernel.org References: <20210415101037.1465-1-alexandre.torgue@foss.st.com> <20210415101037.1465-12-alexandre.torgue@foss.st.com> <3b39908b-a263-a5d4-f6ac-ac30ffb06269@denx.de> <36e9f0df-dfdb-e2f5-3d6e-ac32a1b8156e@foss.st.com> <3961c9ae-41cc-5a15-2704-ffc0832f0fe8@foss.st.com> From: Marek Vasut Message-ID: <57a7f4bf-42e9-56fb-e898-2c5749f53c60@denx.de> Date: Thu, 15 Apr 2021 16:59:39 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <3961c9ae-41cc-5a15-2704-ffc0832f0fe8@foss.st.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 4/15/21 4:35 PM, Alexandre TORGUE wrote: > > > On 4/15/21 4:30 PM, Marek Vasut wrote: >> On 4/15/21 3:34 PM, Alexandre TORGUE wrote: >>> Hi Marek >> >> Hello Alexandre, >> >>>>> diff --git a/arch/arm/boot/dts/stm32mp157c-dk2.dts >>>>> b/arch/arm/boot/dts/stm32mp157c-dk2.dts >>>>> index 2bc92ef3aeb9..19ef475a48fc 100644 >>>>> --- a/arch/arm/boot/dts/stm32mp157c-dk2.dts >>>>> +++ b/arch/arm/boot/dts/stm32mp157c-dk2.dts >>>>> @@ -82,9 +82,15 @@ >>>>>   }; >>>>>   <dc { >>>>> -    status = "okay"; >>>>> - >>>>>       port { >>>>> +        #address-cells = <1>; >>>>> +        #size-cells = <0>; >>>>> + >>>>> +        ltdc_ep0_out: endpoint@0 { >>>>> +            reg = <0>; >>>>> +            remote-endpoint = <&sii9022_in>; >>>>> +        }; >>>>> + >>>>>           ltdc_ep1_out: endpoint@1 { >>>>>               reg = <1>; >>>>>               remote-endpoint = <&dsi_in>; >>>> >>>> [...] >>>> >>>>> diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi >>>>> b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi >>>>> index 64dca5b7f748..e7f10975cacf 100644 >>>>> --- a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi >>>>> +++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi >>>>> @@ -277,11 +277,7 @@ >>>>>       status = "okay"; >>>>>       port { >>>>> -        #address-cells = <1>; >>>>> -        #size-cells = <0>; >>>>> - >>>>> -        ltdc_ep0_out: endpoint@0 { >>>>> -            reg = <0>; >>>>> +        ltdc_ep0_out: endpoint { >>>>>               remote-endpoint = <&adv7513_in>; >>>>>           }; >>>>>       }; >>>> >>>> I think this is wrong, the AV96 can have two displays connected to >>>> two ports of the LTDC, just like DK2 for example. >>> >>> As for dk2 address/size cells are added only if there are 2 >>> endpoints. It is for this reason I moved endpoint0 definition from >>> stm32mp15xx-dkx to stm32mp151a-dk1.dts (dk1 has only one endpoint). >>> >>> Here it's the same, if you have second endpoint then adress/size will >>> have to be added. >> >> That's a bit problematic. Consider either the use case of DTO which >> adds the other display, or even a custom board DTS. Without your >> patch, this works: >> >> arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi >> <dc { >>    ... >>    ports { >>      ltdc_ep0_out: endpoint@0 { >>        remote-endpoint = <&adv7513_in>; >>      }; >>    }; >> }; >> >> board-with-display.dts or board-overlay.dts >> <dc { >>    ports { >>      endpoint@1 { // just add another endpoint@1, no problem >>        remote-endpoint = <&display>; >>      }; >>    }; >> }; >> >> With your patch, the DTS would have to modify the "endpoint" node to >> be "endpoint@0" probably with a whole lot of /detele-node/ etc. magic >> (DTO cannot do that, so that's a problem, and I do use DTOs on AV96 >> extensively for the various expansion cards) and then add the >> endpoint@1. That becomes real complicated in custom board DT, and >> impossible with DTO. > > Yes I agree that it'll be problematic. So maybe so solution would be to > not detect a warning for the initial case (only one endpoint with a reg) That looks OK. Or even better, if the checker warned only on IPs which cannot have more than one endpoint, but have endpoint@N in DT (where N in 0..+inf) . On IPs which can have one or more endpoints, the warning should not be emitted. 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=-10.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,URIBL_BLOCKED,USER_AGENT_SANE_1 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 DE164C43462 for ; Thu, 15 Apr 2021 15:01:33 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 669FF61166 for ; Thu, 15 Apr 2021 15:01:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 669FF61166 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ViNp6TAOeh1LvWfEzmyjzDMmxHRI5KvLCN95vgBqRZU=; b=TbF/oSc3moS08PGvUwH2SJq30 6IIyqGr6v3AyO/NjIsXsVhsvKfoCRUFTMKT5lY9ilZ2oBlG2EkFNi2tAv08LtMrKFTKSbcupfzVk/ a1Lzqdgi4qmEFBF1ouvbbArd6yA77SnwpGhzfEo3QQ3b+my/YMaDGb1Y/HlBOFmxYM7/kSXMtvZqI lZ4tfx7HHk6hfLC1Wqxni1SUdaqqr7jWbhurEv+kSYRaV8gUBv9tcF+VHD5cVl29QVNNh0/fkYtnX uwR70/EsvJ8FHdmcaG9MU/Wcvs5semIIMYBJYo26U+7tjkneS6RLjFeQ4FEHqClciMVbTsXwTHIGO FodkJQpAQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lX3TA-00GWql-Eu; Thu, 15 Apr 2021 14:59:48 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lX3T6-00GWqD-W6 for linux-arm-kernel@desiato.infradead.org; Thu, 15 Apr 2021 14:59:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=Kw07LkJdKop/yJQQqAUybaOom8omiDfjimVgY6INlKM=; b=vBN29TcaNBJALUR9ObnzxVDaK8 3ubWSRNJhufUCr50b2tRCw22IZkmFirS9NHjdEGOglxcA5S1u68wLAJ5TerxsNpcC1+KNJjEM/s/E 6LgOPz2FzedPWzh9hwl3ek+lHgq7yZwnUnYvQAj2ooA8mjkhV9jw1bVjxO3mAxq8MBM3TfP+4e7E1 mf3iXSYyCIe1j9sxZ7a5la5xVBvGsL0oBb5N4y2bCYS8jBh0Psb6JGBX5P8gK/XvZw42Lq5hM0OVx 2SG9DfirdFnZ+ADKy2yzA5SGmP6DcbbQr2htXr7ayqyTvyuBOKb28mXDhQKA4gwt/0LMOE5KXZ/J3 3lURHkEg==; Received: from phobos.denx.de ([2a01:238:438b:c500:173d:9f52:ddab:ee01]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lX3T4-008gAe-26 for linux-arm-kernel@lists.infradead.org; Thu, 15 Apr 2021 14:59:43 +0000 Received: from [IPv6:::1] (p578adb1c.dip0.t-ipconnect.de [87.138.219.28]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id C55F181FE1; Thu, 15 Apr 2021 16:59:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1618498780; bh=Kw07LkJdKop/yJQQqAUybaOom8omiDfjimVgY6INlKM=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=qG3vJnacjJH2T6/LHSUKQqKJUBWrcEN7r6NhcGCSdBtN4nss3tWZ0nO/Ises27Xvc VJGziRkn7XGX6HeJNFZ3NKxgJfYbo1qxsVRITxF5utVsu0V855wi9W/o5nOiAsG4j4 LzmcixCWz41r3/bCwgBpZpWa7aJMXgqoXHnAz/0L093+4TBflUjIMWQCZR0RFKlVXg k47GEkzZmKdFN1i6BrfQukuubfOoZ8NLj6HD4D23S0QhGYD27jXWwe+QQ52WES1B9h aS32TR1XAlYbdiafXGiMDKeW4MksrP+jd/DapR7g7HXa8+g0bzZaaTBKJcCvdhW4+c +FMQpDAlr3Yfg== Subject: Re: [PATCH 11/13] ARM: dts: stm32: fix LTDC port node on STM32 MCU ad MPU To: Alexandre TORGUE , arnd@arndb.de, robh+dt@kernel.org, jagan@amarulasolutions.com, Manivannan Sadhasivam , Marcin Sloniewski , Ahmad Fatoum Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-kernel@vger.kernel.org, Lee Jones , kuba@kernel.org References: <20210415101037.1465-1-alexandre.torgue@foss.st.com> <20210415101037.1465-12-alexandre.torgue@foss.st.com> <3b39908b-a263-a5d4-f6ac-ac30ffb06269@denx.de> <36e9f0df-dfdb-e2f5-3d6e-ac32a1b8156e@foss.st.com> <3961c9ae-41cc-5a15-2704-ffc0832f0fe8@foss.st.com> From: Marek Vasut Message-ID: <57a7f4bf-42e9-56fb-e898-2c5749f53c60@denx.de> Date: Thu, 15 Apr 2021 16:59:39 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <3961c9ae-41cc-5a15-2704-ffc0832f0fe8@foss.st.com> Content-Language: en-US X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210415_075942_438731_E4F87F51 X-CRM114-Status: GOOD ( 20.42 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gNC8xNS8yMSA0OjM1IFBNLCBBbGV4YW5kcmUgVE9SR1VFIHdyb3RlOgo+IAo+IAo+IE9uIDQv MTUvMjEgNDozMCBQTSwgTWFyZWsgVmFzdXQgd3JvdGU6Cj4+IE9uIDQvMTUvMjEgMzozNCBQTSwg QWxleGFuZHJlIFRPUkdVRSB3cm90ZToKPj4+IEhpIE1hcmVrCj4+Cj4+IEhlbGxvIEFsZXhhbmRy ZSwKPj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL3N0bTMybXAxNTdjLWRr Mi5kdHMgCj4+Pj4+IGIvYXJjaC9hcm0vYm9vdC9kdHMvc3RtMzJtcDE1N2MtZGsyLmR0cwo+Pj4+ PiBpbmRleCAyYmM5MmVmM2FlYjkuLjE5ZWY0NzVhNDhmYyAxMDA2NDQKPj4+Pj4gLS0tIGEvYXJj aC9hcm0vYm9vdC9kdHMvc3RtMzJtcDE1N2MtZGsyLmR0cwo+Pj4+PiArKysgYi9hcmNoL2FybS9i b290L2R0cy9zdG0zMm1wMTU3Yy1kazIuZHRzCj4+Pj4+IEBAIC04Miw5ICs4MiwxNSBAQAo+Pj4+ PiDCoCB9Owo+Pj4+PiDCoCAmbHRkYyB7Cj4+Pj4+IC3CoMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+ Pj4+PiAtCj4+Pj4+IMKgwqDCoMKgwqAgcG9ydCB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAjYWRk cmVzcy1jZWxscyA9IDwxPjsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgICNzaXplLWNlbGxzID0gPDA+ Owo+Pj4+PiArCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsdGRjX2VwMF9vdXQ6IGVuZHBvaW50QDAg ewo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWcgPSA8MD47Cj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlbW90ZS1lbmRwb2ludCA9IDwmc2lpOTAyMl9pbj47Cj4+Pj4+ICvC oMKgwqDCoMKgwqDCoCB9Owo+Pj4+PiArCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBsdGRjX2Vw MV9vdXQ6IGVuZHBvaW50QDEgewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWcg PSA8MT47Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlbW90ZS1lbmRwb2ludCA9 IDwmZHNpX2luPjsKPj4+Pgo+Pj4+IFsuLi5dCj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gv YXJtL2Jvb3QvZHRzL3N0bTMybXAxNXh4LWRoY29yLWF2ZW5nZXI5Ni5kdHNpIAo+Pj4+PiBiL2Fy Y2gvYXJtL2Jvb3QvZHRzL3N0bTMybXAxNXh4LWRoY29yLWF2ZW5nZXI5Ni5kdHNpCj4+Pj4+IGlu ZGV4IDY0ZGNhNWI3Zjc0OC4uZTdmMTA5NzVjYWNmIDEwMDY0NAo+Pj4+PiAtLS0gYS9hcmNoL2Fy bS9ib290L2R0cy9zdG0zMm1wMTV4eC1kaGNvci1hdmVuZ2VyOTYuZHRzaQo+Pj4+PiArKysgYi9h cmNoL2FybS9ib290L2R0cy9zdG0zMm1wMTV4eC1kaGNvci1hdmVuZ2VyOTYuZHRzaQo+Pj4+PiBA QCAtMjc3LDExICsyNzcsNyBAQAo+Pj4+PiDCoMKgwqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4+ Pj4gwqDCoMKgwqDCoCBwb3J0IHsKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgICNhZGRyZXNzLWNlbGxz ID0gPDE+Owo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgI3NpemUtY2VsbHMgPSA8MD47Cj4+Pj4+IC0K Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGx0ZGNfZXAwX291dDogZW5kcG9pbnRAMCB7Cj4+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZyA9IDwwPjsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGx0 ZGNfZXAwX291dDogZW5kcG9pbnQgewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZW1vdGUtZW5kcG9pbnQgPSA8JmFkdjc1MTNfaW4+Owo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg fTsKPj4+Pj4gwqDCoMKgwqDCoCB9Owo+Pj4+Cj4+Pj4gSSB0aGluayB0aGlzIGlzIHdyb25nLCB0 aGUgQVY5NiBjYW4gaGF2ZSB0d28gZGlzcGxheXMgY29ubmVjdGVkIHRvIAo+Pj4+IHR3byBwb3J0 cyBvZiB0aGUgTFREQywganVzdCBsaWtlIERLMiBmb3IgZXhhbXBsZS4KPj4+Cj4+PiBBcyBmb3Ig ZGsyIGFkZHJlc3Mvc2l6ZSBjZWxscyBhcmUgYWRkZWQgb25seSBpZiB0aGVyZSBhcmUgMiAKPj4+ IGVuZHBvaW50cy4gSXQgaXMgZm9yIHRoaXMgcmVhc29uIEkgbW92ZWQgZW5kcG9pbnQwIGRlZmlu aXRpb24gZnJvbSAKPj4+IHN0bTMybXAxNXh4LWRreCB0byBzdG0zMm1wMTUxYS1kazEuZHRzIChk azEgaGFzIG9ubHkgb25lIGVuZHBvaW50KS4KPj4+Cj4+PiBIZXJlIGl0J3MgdGhlIHNhbWUsIGlm IHlvdSBoYXZlIHNlY29uZCBlbmRwb2ludCB0aGVuIGFkcmVzcy9zaXplIHdpbGwgCj4+PiBoYXZl IHRvIGJlIGFkZGVkLgo+Pgo+PiBUaGF0J3MgYSBiaXQgcHJvYmxlbWF0aWMuIENvbnNpZGVyIGVp dGhlciB0aGUgdXNlIGNhc2Ugb2YgRFRPIHdoaWNoIAo+PiBhZGRzIHRoZSBvdGhlciBkaXNwbGF5 LCBvciBldmVuIGEgY3VzdG9tIGJvYXJkIERUUy4gV2l0aG91dCB5b3VyIAo+PiBwYXRjaCwgdGhp cyB3b3JrczoKPj4KPj4gYXJjaC9hcm0vYm9vdC9kdHMvc3RtMzJtcDE1eHgtZGhjb3ItYXZlbmdl cjk2LmR0c2kKPj4gJmx0ZGMgewo+PiDCoMKgIC4uLgo+PiDCoMKgIHBvcnRzIHsKPj4gwqDCoMKg wqAgbHRkY19lcDBfb3V0OiBlbmRwb2ludEAwIHsKPj4gwqDCoMKgwqDCoMKgIHJlbW90ZS1lbmRw b2ludCA9IDwmYWR2NzUxM19pbj47Cj4+IMKgwqDCoMKgIH07Cj4+IMKgwqAgfTsKPj4gfTsKPj4K Pj4gYm9hcmQtd2l0aC1kaXNwbGF5LmR0cyBvciBib2FyZC1vdmVybGF5LmR0cwo+PiAmbHRkYyB7 Cj4+IMKgwqAgcG9ydHMgewo+PiDCoMKgwqDCoCBlbmRwb2ludEAxIHsgLy8ganVzdCBhZGQgYW5v dGhlciBlbmRwb2ludEAxLCBubyBwcm9ibGVtCj4+IMKgwqDCoMKgwqDCoCByZW1vdGUtZW5kcG9p bnQgPSA8JmRpc3BsYXk+Owo+PiDCoMKgwqDCoCB9Owo+PiDCoMKgIH07Cj4+IH07Cj4+Cj4+IFdp dGggeW91ciBwYXRjaCwgdGhlIERUUyB3b3VsZCBoYXZlIHRvIG1vZGlmeSB0aGUgImVuZHBvaW50 IiBub2RlIHRvIAo+PiBiZSAiZW5kcG9pbnRAMCIgcHJvYmFibHkgd2l0aCBhIHdob2xlIGxvdCBv ZiAvZGV0ZWxlLW5vZGUvIGV0Yy4gbWFnaWMgCj4+IChEVE8gY2Fubm90IGRvIHRoYXQsIHNvIHRo YXQncyBhIHByb2JsZW0sIGFuZCBJIGRvIHVzZSBEVE9zIG9uIEFWOTYgCj4+IGV4dGVuc2l2ZWx5 IGZvciB0aGUgdmFyaW91cyBleHBhbnNpb24gY2FyZHMpIGFuZCB0aGVuIGFkZCB0aGUgCj4+IGVu ZHBvaW50QDEuIFRoYXQgYmVjb21lcyByZWFsIGNvbXBsaWNhdGVkIGluIGN1c3RvbSBib2FyZCBE VCwgYW5kIAo+PiBpbXBvc3NpYmxlIHdpdGggRFRPLgo+IAo+IFllcyBJIGFncmVlIHRoYXQgaXQn bGwgYmUgcHJvYmxlbWF0aWMuIFNvIG1heWJlIHNvIHNvbHV0aW9uIHdvdWxkIGJlIHRvIAo+IG5v dCBkZXRlY3QgYSB3YXJuaW5nIGZvciB0aGUgaW5pdGlhbCBjYXNlIChvbmx5IG9uZSBlbmRwb2lu dCB3aXRoIGEgcmVnKQoKVGhhdCBsb29rcyBPSy4gT3IgZXZlbiBiZXR0ZXIsIGlmIHRoZSBjaGVj a2VyIHdhcm5lZCBvbmx5IG9uIElQcyB3aGljaCAKY2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBl bmRwb2ludCwgYnV0IGhhdmUgZW5kcG9pbnRATiBpbiBEVCAod2hlcmUgTiAKaW4gMC4uK2luZikg LiBPbiBJUHMgd2hpY2ggY2FuIGhhdmUgb25lIG9yIG1vcmUgZW5kcG9pbnRzLCB0aGUgd2Fybmlu ZyAKc2hvdWxkIG5vdCBiZSBlbWl0dGVkLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=