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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD3DFC433F5 for ; Thu, 30 Sep 2021 12:08:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A33856162E for ; Thu, 30 Sep 2021 12:08:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348436AbhI3MKN (ORCPT ); Thu, 30 Sep 2021 08:10:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348082AbhI3MKM (ORCPT ); Thu, 30 Sep 2021 08:10:12 -0400 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7FECCC06176D for ; Thu, 30 Sep 2021 05:08:29 -0700 (PDT) Received: by mail-wr1-x42a.google.com with SMTP id i23so9703716wrb.2 for ; Thu, 30 Sep 2021 05:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=5fh0H0/jWr4jNH0+hAgBKwSacygBp5h9lUF6Rwc7alg=; b=HIqt7cGoqJJQIOdZP/Foj7lyVcPXpPckL+e8J8hEPS4X5BlSOs75D2MjxEHS9sXSue nbXyguX+HL4GYHA7dWpjKcBET3bGYvPe72KAAwoANqo6Btaq5vPwpia5jJrEDeWEDktW 0HMh+lyxzlPBtMhRT9B0ZQvWnBV7LHyDFydMdObVoa5g8IGlAYhW08hb5bCVt1Qy0jWj 6k2dsf5VdMaSCvk7oZJoneYuu7ltzLCKfRmauxvWtELLuhjTNmsorbLqrSE7QHPUVsQx kIcJcP3UTpwijuDznHqx/qf1fHaST4O4HxV4+34cyYnzeVI5LyzyRaLVYyOlVAxli8dZ 5kwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=5fh0H0/jWr4jNH0+hAgBKwSacygBp5h9lUF6Rwc7alg=; b=vx0vOhIcFd2QnZJy7Nx8gLW89Lb0szVVGvPX5XRyFVIdOR6so4eoRLflQuv1bZKkp4 xkafGWyldCSfVYoM9L1JgTAwJdabU/95TtEIaiR/Dt0RFTWgrq5Iut8P1V7lrU8rRahM bv7B4RLmngY2bYg3r++HjY4aWxLjOR+irBoAcr3URaWnTX78J/GFj6HSMiBFCFA6LMSY lsD0ykl+q4Q+T+5zplxHnA0CkTKDekJk1rFtwPQDBsr6mpMqtYGugtcZ8EVQyjUeRA5x WYsbeUTSaAM1swFxlqB57S3N5LkMxOwD0VMC6IbZHptjxhIY7AhbpLYFS4C8iYKYs8gl h0Bg== X-Gm-Message-State: AOAM531OOMeUHkFt6ur94SamPXpnddul6QWCNUl2ji0v6498N9aZuyyh Yek2bq5DxE7NtQ49ErOSQCZJ8A== X-Google-Smtp-Source: ABdhPJybI7D4Op6CUpT3YQKDibjf3O8iYGR2Haw/KF8+iMJzOVuX0RjVV9HDMl4I/r5lf64HRvJ5gQ== X-Received: by 2002:a5d:6c65:: with SMTP id r5mr5727101wrz.85.1633003708018; Thu, 30 Sep 2021 05:08:28 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id k22sm2928865wrd.59.2021.09.30.05.08.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 05:08:27 -0700 (PDT) Date: Thu, 30 Sep 2021 13:08:25 +0100 From: Lee Jones To: Geert Uytterhoeven Cc: Krzysztof Kozlowski , Will McVicker , Russell King , Catalin Marinas , Will Deacon , Michael Turquette , Stephen Boyd , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Linus Walleij , Alessandro Zummo , Alexandre Belloni , John Stultz , Thomas Gleixner , Saravana Kannan , "Cc: Android Kernel" , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk , "open list:GPIO SUBSYSTEM" , linux-rtc@vger.kernel.org, Arnd Bergmann , Olof Johansson Subject: Re: [PATCH v2 00/12] arm64: Kconfig: Update ARCH_EXYNOS select configs Message-ID: References: <20210928235635.1348330-1-willmcvicker@google.com> <7766faf8-2dd1-6525-3b9a-8ba790c29cff@canonical.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org On Thu, 30 Sep 2021, Geert Uytterhoeven wrote: > Hi Lee, > > On Thu, Sep 30, 2021 at 12:56 PM Lee Jones wrote: > > On Thu, 30 Sep 2021, Geert Uytterhoeven wrote: > > > On Thu, Sep 30, 2021 at 11:23 AM Lee Jones wrote: > > > > I've taken the liberty of cherry-picking some of the points you have > > > > reiteratted a few times. Hopefully I can help to address them > > > > adequently. > > > > > > > > On Thu, 30 Sep 2021, Krzysztof Kozlowski wrote: > > > > > Reminder: these are essential drivers and all Exynos platforms must have > > > > > them as built-in (at least till someone really tests this on multiple > > > > > setups). > > > > > > > > > Therefore I don't agree with calling it a "problem" that we select > > > > > *necessary* drivers for supported platforms. It's by design - supported > > > > > platforms should receive them without ability to remove. > > > > > > > > > The selected drivers are essential for supported platforms. > > > > > > > > SoC specific drivers are only essential/necessary/required in > > > > images designed to execute solely on a platform that requires them. > > > > > > Why? > > > > Because without them the image wouldn't functional on any level. > > > > But you're right, there is still no requirement for it to be built-in. > > > > > > For a kernel image which is designed to be generic i.e. one that has > > > > the ability to boot on vast array of platforms, the drivers simply > > > > have to be *available*. > > > > > > If the drivers are really essential/necessary/required, this precludes > > > running the generic kernel image on the platform that requires them, > > > making the kernel not sufficiently generic. > > > > If they are not at all present, then yes. However that is not what is > > being suggested. The essential functionality will be provided. Just > > not built-in. > > I really meant "essential/necessary/required to be built-in". Then I agree with you. My position is that if they don't *have* to be built-in, then why force it? > > > > Forcing all H/W drivers that are only *potentially* utilised on *some* > > > > platforms as core binary built-ins doesn't make any technical sense. > > > > The two most important issues this causes are image size and a lack of > > > > configurability/flexibility relating to real-world application i.e. > > > > the one issue we already agreed upon; H/W or features that are too > > > > new (pre-release). > > > > > > True, if "potentially". If not potentially, they must be included. > > > > I'm not sure what you're trying to say here. Would you mind elaborating? > > It was a comment to your "*potentially* utilised on *some* platforms". > It is clear they are not used on the other ("not *some*") platforms, but your > sentence was unclear whether they are always or only sometimes used on > "*some*" platforms. > "always" => "not potentially" > "sometimes" => "potentially". > > I hope this makes it more clear. Not really, but I'll try to clean mine up: The aim is to have a single kernel (image + modules) that can be booted on a plethora of platforms. For the sake of argument say 10. Let's also say that each of the platforms are equal and will be booted the same amount of times. Taking the example above, when I say that the H/W specific drivers will only be *potentially* utilised, I mean that they will only be bound and probed 1/10 times i.e. when booted on the associated platform. Which means that in the vast majority of boots (9/10) they will lie dormant, taking up unnecessary space. Another way to say this would be; the kernel needs to have the capability to boot all of the supported platforms, but it will only ever be utilised on one at a time. > > > > Bloating a generic kernel with potentially hundreds of unnecessary > > > > drivers that will never be executed in the vast majority of instances > > > > doesn't achieve anything. If we have a kernel image that has the > > > > ability to boot on 10's of architectures which have 10's of platforms > > > > each, that's a whole host of unused/wasted executable space. > > > > > > The key here is if the driver is required or not to use the platform, > > > and why it is required. If the requirement comes from some deficiency > > > in the kernel code or config system, it should be fixed, if possible. > > > And the fix should be tested. > > > If it cannot be fixed, the driver should be included, else it would > > > preclude running the generic kernel on the affected platform. > > > > Sorry, I'm not following. > > It all depends on why the driver is "required to be built-in". > Depending on the reason behind that requirement, the driver can be > changed from built-in to modular without ill effects on functionality. Absolutely. There are cases where drivers simply can't be built as modules. These unavoidable situations are legitimate use-cases and the technology/ code-base will have to work around these as required. The argument here is that if they can be separated and have been shown to work well in either use-case, then it is my opinion that placing an artificial barrier up based mostly on politics is not the correct approach. -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6DC68C433EF for ; Thu, 30 Sep 2021 12:11:11 +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 37544615E2 for ; Thu, 30 Sep 2021 12:11:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 37544615E2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:In-Reply-To:MIME-Version:References: 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=lS21Hp3ck042xnHBGiJtsBTCQ3J1CBcI2vHSpYv+Gg4=; b=vIjOSurZtNEUUw JOgySi5v2hzEUxM0nIwy96iMwYYheT3YRvtEMGNEmbVKiAvci7Akn1pMgwmeEXybjbwBuKsyqIKvZ K1qytdWoXyngij/cPdoSbwMzI/fvCEZ6MxssPuH5xV3V5BmjcldsMtNcEPUwj1n2bcLhaCc1pR6yk AJqrbNyE4GBPkl1+vZTdc+CM79OqselKl3SZUFDY7r8d70MjgrpL0MIgWyBY8QYs+KTvNqdlVJ6d3 B7eI3fAThCEBOFohthmGL5chpyJRy6HuwvUz231MmYl9596Dl/j4HmjFYDd/PIWp/+dqHsMN5HkCX zcg+ahJYBHAJDy97Z1uw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVura-00E89T-As; Thu, 30 Sep 2021 12:08:34 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVurW-00E88n-Po for linux-arm-kernel@lists.infradead.org; Thu, 30 Sep 2021 12:08:32 +0000 Received: by mail-wr1-x42d.google.com with SMTP id u18so9678699wrg.5 for ; Thu, 30 Sep 2021 05:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=5fh0H0/jWr4jNH0+hAgBKwSacygBp5h9lUF6Rwc7alg=; b=HIqt7cGoqJJQIOdZP/Foj7lyVcPXpPckL+e8J8hEPS4X5BlSOs75D2MjxEHS9sXSue nbXyguX+HL4GYHA7dWpjKcBET3bGYvPe72KAAwoANqo6Btaq5vPwpia5jJrEDeWEDktW 0HMh+lyxzlPBtMhRT9B0ZQvWnBV7LHyDFydMdObVoa5g8IGlAYhW08hb5bCVt1Qy0jWj 6k2dsf5VdMaSCvk7oZJoneYuu7ltzLCKfRmauxvWtELLuhjTNmsorbLqrSE7QHPUVsQx kIcJcP3UTpwijuDznHqx/qf1fHaST4O4HxV4+34cyYnzeVI5LyzyRaLVYyOlVAxli8dZ 5kwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=5fh0H0/jWr4jNH0+hAgBKwSacygBp5h9lUF6Rwc7alg=; b=eqhqoKD/yEyWU64zsnzXUEYxsJKNahbj93/GdIskavcfcWeoPc7PY9DmRorNaHq+TX vKKUBGyVtIpDdSfWWRYafjXS9yffbPIwepUJp9uUrVrBesMhh9D67biJMaE6aQjpfLcv sJDJZ0wclUjpPYes5N2TaX+QmzFgWksFosv1e+FEQqw3V15iF9xJotkRNtm1ST2JFF6S dG6JSr7tICi/ajqxwns/9hlO2vCjSaj/L89Ee3ZuXiWjrLYcx47Nu9W7oHMFKzfLs9uM iWMhSu8BajxytSdojxsEYqHm2j1oZtbCMV6sYBToXXsVn0OSzQWQf74tPteQabc0g7t2 sfbA== X-Gm-Message-State: AOAM532ykQguIrzU3VH8EZELGa1+5BP5S3osNFMQg8ZCYdBGiIKs6wdL M+Va94LlxT950eUheHKJ8G0AVg== X-Google-Smtp-Source: ABdhPJybI7D4Op6CUpT3YQKDibjf3O8iYGR2Haw/KF8+iMJzOVuX0RjVV9HDMl4I/r5lf64HRvJ5gQ== X-Received: by 2002:a5d:6c65:: with SMTP id r5mr5727101wrz.85.1633003708018; Thu, 30 Sep 2021 05:08:28 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id k22sm2928865wrd.59.2021.09.30.05.08.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 05:08:27 -0700 (PDT) Date: Thu, 30 Sep 2021 13:08:25 +0100 From: Lee Jones To: Geert Uytterhoeven Cc: Krzysztof Kozlowski , Will McVicker , Russell King , Catalin Marinas , Will Deacon , Michael Turquette , Stephen Boyd , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Linus Walleij , Alessandro Zummo , Alexandre Belloni , John Stultz , Thomas Gleixner , Saravana Kannan , "Cc: Android Kernel" , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk , "open list:GPIO SUBSYSTEM" , linux-rtc@vger.kernel.org, Arnd Bergmann , Olof Johansson Subject: Re: [PATCH v2 00/12] arm64: Kconfig: Update ARCH_EXYNOS select configs Message-ID: References: <20210928235635.1348330-1-willmcvicker@google.com> <7766faf8-2dd1-6525-3b9a-8ba790c29cff@canonical.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210930_050830_931725_4E207A5D X-CRM114-Status: GOOD ( 55.07 ) 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 T24gVGh1LCAzMCBTZXAgMjAyMSwgR2VlcnQgVXl0dGVyaG9ldmVuIHdyb3RlOgoKPiBIaSBMZWUs Cj4gCj4gT24gVGh1LCBTZXAgMzAsIDIwMjEgYXQgMTI6NTYgUE0gTGVlIEpvbmVzIDxsZWUuam9u ZXNAbGluYXJvLm9yZz4gd3JvdGU6Cj4gPiBPbiBUaHUsIDMwIFNlcCAyMDIxLCBHZWVydCBVeXR0 ZXJob2V2ZW4gd3JvdGU6Cj4gPiA+IE9uIFRodSwgU2VwIDMwLCAyMDIxIGF0IDExOjIzIEFNIExl ZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+IHdyb3RlOgo+ID4gPiA+IEkndmUgdGFrZW4g dGhlIGxpYmVydHkgb2YgY2hlcnJ5LXBpY2tpbmcgc29tZSBvZiB0aGUgcG9pbnRzIHlvdSBoYXZl Cj4gPiA+ID4gcmVpdGVyYXR0ZWQgYSBmZXcgdGltZXMuICBIb3BlZnVsbHkgSSBjYW4gaGVscCB0 byBhZGRyZXNzIHRoZW0KPiA+ID4gPiBhZGVxdWVudGx5Lgo+ID4gPiA+Cj4gPiA+ID4gT24gVGh1 LCAzMCBTZXAgMjAyMSwgS3J6eXN6dG9mIEtvemxvd3NraSB3cm90ZToKPiA+ID4gPiA+IFJlbWlu ZGVyOiB0aGVzZSBhcmUgZXNzZW50aWFsIGRyaXZlcnMgYW5kIGFsbCBFeHlub3MgcGxhdGZvcm1z IG11c3QgaGF2ZQo+ID4gPiA+ID4gdGhlbSBhcyBidWlsdC1pbiAoYXQgbGVhc3QgdGlsbCBzb21l b25lIHJlYWxseSB0ZXN0cyB0aGlzIG9uIG11bHRpcGxlCj4gPiA+ID4gPiBzZXR1cHMpLgo+ID4g PiA+Cj4gPiA+ID4gPiBUaGVyZWZvcmUgSSBkb24ndCBhZ3JlZSB3aXRoIGNhbGxpbmcgaXQgYSAi cHJvYmxlbSIgdGhhdCB3ZSBzZWxlY3QKPiA+ID4gPiA+ICpuZWNlc3NhcnkqIGRyaXZlcnMgZm9y IHN1cHBvcnRlZCBwbGF0Zm9ybXMuIEl0J3MgYnkgZGVzaWduIC0gc3VwcG9ydGVkCj4gPiA+ID4g PiBwbGF0Zm9ybXMgc2hvdWxkIHJlY2VpdmUgdGhlbSB3aXRob3V0IGFiaWxpdHkgdG8gcmVtb3Zl Lgo+ID4gPiA+Cj4gPiA+ID4gPiBUaGUgc2VsZWN0ZWQgZHJpdmVycyBhcmUgZXNzZW50aWFsIGZv ciBzdXBwb3J0ZWQgcGxhdGZvcm1zLgo+ID4gPiA+Cj4gPiA+ID4gU29DIHNwZWNpZmljIGRyaXZl cnMgYXJlIG9ubHkgZXNzZW50aWFsL25lY2Vzc2FyeS9yZXF1aXJlZCBpbgo+ID4gPiA+IGltYWdl cyBkZXNpZ25lZCB0byBleGVjdXRlIHNvbGVseSBvbiBhIHBsYXRmb3JtIHRoYXQgcmVxdWlyZXMg dGhlbS4KPiA+ID4KPiA+ID4gV2h5Pwo+ID4KPiA+IEJlY2F1c2Ugd2l0aG91dCB0aGVtIHRoZSBp bWFnZSB3b3VsZG4ndCBmdW5jdGlvbmFsIG9uIGFueSBsZXZlbC4KPiA+Cj4gPiBCdXQgeW91J3Jl IHJpZ2h0LCB0aGVyZSBpcyBzdGlsbCBubyByZXF1aXJlbWVudCBmb3IgaXQgdG8gYmUgYnVpbHQt aW4uCj4gPgo+ID4gPiA+IEZvciBhIGtlcm5lbCBpbWFnZSB3aGljaCBpcyBkZXNpZ25lZCB0byBi ZSBnZW5lcmljIGkuZS4gb25lIHRoYXQgaGFzCj4gPiA+ID4gdGhlIGFiaWxpdHkgdG8gYm9vdCBv biB2YXN0IGFycmF5IG9mIHBsYXRmb3JtcywgdGhlIGRyaXZlcnMgc2ltcGx5Cj4gPiA+ID4gaGF2 ZSB0byBiZSAqYXZhaWxhYmxlKi4KPiA+ID4KPiA+ID4gSWYgdGhlIGRyaXZlcnMgYXJlIHJlYWxs eSBlc3NlbnRpYWwvbmVjZXNzYXJ5L3JlcXVpcmVkLCB0aGlzIHByZWNsdWRlcwo+ID4gPiBydW5u aW5nIHRoZSBnZW5lcmljIGtlcm5lbCBpbWFnZSBvbiB0aGUgcGxhdGZvcm0gdGhhdCByZXF1aXJl cyB0aGVtLAo+ID4gPiBtYWtpbmcgdGhlIGtlcm5lbCBub3Qgc3VmZmljaWVudGx5IGdlbmVyaWMu Cj4gPgo+ID4gSWYgdGhleSBhcmUgbm90IGF0IGFsbCBwcmVzZW50LCB0aGVuIHllcy4gIEhvd2V2 ZXIgdGhhdCBpcyBub3Qgd2hhdCBpcwo+ID4gYmVpbmcgc3VnZ2VzdGVkLiAgVGhlIGVzc2VudGlh bCBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgcHJvdmlkZWQuICBKdXN0Cj4gPiBub3QgYnVpbHQtaW4u Cj4gCj4gSSByZWFsbHkgbWVhbnQgImVzc2VudGlhbC9uZWNlc3NhcnkvcmVxdWlyZWQgdG8gYmUg YnVpbHQtaW4iLgoKVGhlbiBJIGFncmVlIHdpdGggeW91LiAgTXkgcG9zaXRpb24gaXMgdGhhdCBp ZiB0aGV5IGRvbid0ICpoYXZlKiB0byBiZQpidWlsdC1pbiwgdGhlbiB3aHkgZm9yY2UgaXQ/Cgo+ ID4gPiA+IEZvcmNpbmcgYWxsIEgvVyBkcml2ZXJzIHRoYXQgYXJlIG9ubHkgKnBvdGVudGlhbGx5 KiB1dGlsaXNlZCBvbiAqc29tZSoKPiA+ID4gPiBwbGF0Zm9ybXMgYXMgY29yZSBiaW5hcnkgYnVp bHQtaW5zIGRvZXNuJ3QgbWFrZSBhbnkgdGVjaG5pY2FsIHNlbnNlLgo+ID4gPiA+IFRoZSB0d28g bW9zdCBpbXBvcnRhbnQgaXNzdWVzIHRoaXMgY2F1c2VzIGFyZSBpbWFnZSBzaXplIGFuZCBhIGxh Y2sgb2YKPiA+ID4gPiBjb25maWd1cmFiaWxpdHkvZmxleGliaWxpdHkgcmVsYXRpbmcgdG8gcmVh bC13b3JsZCBhcHBsaWNhdGlvbiBpLmUuCj4gPiA+ID4gdGhlIG9uZSBpc3N1ZSB3ZSBhbHJlYWR5 IGFncmVlZCB1cG9uOyBIL1cgb3IgZmVhdHVyZXMgdGhhdCBhcmUgdG9vCj4gPiA+ID4gbmV3IChw cmUtcmVsZWFzZSkuCj4gPiA+Cj4gPiA+IFRydWUsIGlmICJwb3RlbnRpYWxseSIuICBJZiBub3Qg cG90ZW50aWFsbHksIHRoZXkgbXVzdCBiZSBpbmNsdWRlZC4KPiA+Cj4gPiBJJ20gbm90IHN1cmUg d2hhdCB5b3UncmUgdHJ5aW5nIHRvIHNheSBoZXJlLiAgV291bGQgeW91IG1pbmQgZWxhYm9yYXRp bmc/Cj4gCj4gSXQgd2FzIGEgY29tbWVudCB0byB5b3VyICIqcG90ZW50aWFsbHkqIHV0aWxpc2Vk IG9uICpzb21lKiBwbGF0Zm9ybXMiLgo+IEl0IGlzIGNsZWFyIHRoZXkgYXJlIG5vdCB1c2VkIG9u IHRoZSBvdGhlciAoIm5vdCAqc29tZSoiKSBwbGF0Zm9ybXMsIGJ1dCB5b3VyCj4gc2VudGVuY2Ug d2FzIHVuY2xlYXIgd2hldGhlciB0aGV5IGFyZSBhbHdheXMgb3Igb25seSBzb21ldGltZXMgdXNl ZCBvbgo+ICIqc29tZSoiIHBsYXRmb3Jtcy4KPiAiYWx3YXlzIiA9PiAibm90IHBvdGVudGlhbGx5 Igo+ICJzb21ldGltZXMiID0+ICJwb3RlbnRpYWxseSIuCj4gCj4gSSBob3BlIHRoaXMgbWFrZXMg aXQgbW9yZSBjbGVhci4KCk5vdCByZWFsbHksIGJ1dCBJJ2xsIHRyeSB0byBjbGVhbiBtaW5lIHVw OgoKVGhlIGFpbSBpcyB0byBoYXZlIGEgc2luZ2xlIGtlcm5lbCAoaW1hZ2UgKyBtb2R1bGVzKSB0 aGF0IGNhbiBiZQpib290ZWQgb24gYSBwbGV0aG9yYSBvZiBwbGF0Zm9ybXMuICBGb3IgdGhlIHNh a2Ugb2YgYXJndW1lbnQgc2F5IDEwLgpMZXQncyBhbHNvIHNheSB0aGF0IGVhY2ggb2YgdGhlIHBs YXRmb3JtcyBhcmUgZXF1YWwgYW5kIHdpbGwgYmUgYm9vdGVkCnRoZSBzYW1lIGFtb3VudCBvZiB0 aW1lcy4KClRha2luZyB0aGUgZXhhbXBsZSBhYm92ZSwgd2hlbiBJIHNheSB0aGF0IHRoZSBIL1cg c3BlY2lmaWMgZHJpdmVycwp3aWxsIG9ubHkgYmUgKnBvdGVudGlhbGx5KiB1dGlsaXNlZCwgSSBt ZWFuIHRoYXQgdGhleSB3aWxsIG9ubHkgYmUKYm91bmQgYW5kIHByb2JlZCAxLzEwIHRpbWVzIGku ZS4gd2hlbiBib290ZWQgb24gdGhlIGFzc29jaWF0ZWQKcGxhdGZvcm0uICBXaGljaCBtZWFucyB0 aGF0IGluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGJvb3RzICg5LzEwKSB0aGV5CndpbGwgbGllIGRv cm1hbnQsIHRha2luZyB1cCB1bm5lY2Vzc2FyeSBzcGFjZS4KCkFub3RoZXIgd2F5IHRvIHNheSB0 aGlzIHdvdWxkIGJlOyB0aGUga2VybmVsIG5lZWRzIHRvIGhhdmUgdGhlCmNhcGFiaWxpdHkgdG8g Ym9vdCBhbGwgb2YgdGhlIHN1cHBvcnRlZCBwbGF0Zm9ybXMsIGJ1dCBpdCB3aWxsIG9ubHkKZXZl ciBiZSB1dGlsaXNlZCBvbiBvbmUgYXQgYSB0aW1lLgoKPiA+ID4gPiBCbG9hdGluZyBhIGdlbmVy aWMga2VybmVsIHdpdGggcG90ZW50aWFsbHkgaHVuZHJlZHMgb2YgdW5uZWNlc3NhcnkKPiA+ID4g PiBkcml2ZXJzIHRoYXQgd2lsbCBuZXZlciBiZSBleGVjdXRlZCBpbiB0aGUgdmFzdCBtYWpvcml0 eSBvZiBpbnN0YW5jZXMKPiA+ID4gPiBkb2Vzbid0IGFjaGlldmUgYW55dGhpbmcuICBJZiB3ZSBo YXZlIGEga2VybmVsIGltYWdlIHRoYXQgaGFzIHRoZQo+ID4gPiA+IGFiaWxpdHkgdG8gYm9vdCBv biAxMCdzIG9mIGFyY2hpdGVjdHVyZXMgd2hpY2ggaGF2ZSAxMCdzIG9mIHBsYXRmb3Jtcwo+ID4g PiA+IGVhY2gsIHRoYXQncyBhIHdob2xlIGhvc3Qgb2YgdW51c2VkL3dhc3RlZCBleGVjdXRhYmxl IHNwYWNlLgo+ID4gPgo+ID4gPiBUaGUga2V5IGhlcmUgaXMgaWYgdGhlIGRyaXZlciBpcyByZXF1 aXJlZCBvciBub3QgdG8gdXNlIHRoZSBwbGF0Zm9ybSwKPiA+ID4gYW5kIHdoeSBpdCBpcyByZXF1 aXJlZC4gIElmIHRoZSByZXF1aXJlbWVudCBjb21lcyBmcm9tIHNvbWUgZGVmaWNpZW5jeQo+ID4g PiBpbiB0aGUga2VybmVsIGNvZGUgb3IgY29uZmlnIHN5c3RlbSwgaXQgc2hvdWxkIGJlIGZpeGVk LCBpZiBwb3NzaWJsZS4KPiA+ID4gQW5kIHRoZSBmaXggc2hvdWxkIGJlIHRlc3RlZC4KPiA+ID4g SWYgaXQgY2Fubm90IGJlIGZpeGVkLCB0aGUgZHJpdmVyIHNob3VsZCBiZSBpbmNsdWRlZCwgZWxz ZSBpdCB3b3VsZAo+ID4gPiBwcmVjbHVkZSBydW5uaW5nIHRoZSBnZW5lcmljIGtlcm5lbCBvbiB0 aGUgYWZmZWN0ZWQgcGxhdGZvcm0uCj4gPgo+ID4gU29ycnksIEknbSBub3QgZm9sbG93aW5nLgo+ IAo+IEl0IGFsbCBkZXBlbmRzIG9uIHdoeSB0aGUgZHJpdmVyIGlzICJyZXF1aXJlZCB0byBiZSBi dWlsdC1pbiIuCj4gRGVwZW5kaW5nIG9uIHRoZSByZWFzb24gYmVoaW5kIHRoYXQgcmVxdWlyZW1l bnQsIHRoZSBkcml2ZXIgY2FuIGJlCj4gY2hhbmdlZCBmcm9tIGJ1aWx0LWluIHRvIG1vZHVsYXIg d2l0aG91dCBpbGwgZWZmZWN0cyBvbiBmdW5jdGlvbmFsaXR5LgoKQWJzb2x1dGVseS4KClRoZXJl IGFyZSBjYXNlcyB3aGVyZSBkcml2ZXJzIHNpbXBseSBjYW4ndCBiZSBidWlsdCBhcyBtb2R1bGVz LiAgVGhlc2UKdW5hdm9pZGFibGUgc2l0dWF0aW9ucyBhcmUgbGVnaXRpbWF0ZSB1c2UtY2FzZXMg YW5kIHRoZSB0ZWNobm9sb2d5Lwpjb2RlLWJhc2Ugd2lsbCBoYXZlIHRvIHdvcmsgYXJvdW5kIHRo ZXNlIGFzIHJlcXVpcmVkLgoKVGhlIGFyZ3VtZW50IGhlcmUgaXMgdGhhdCBpZiB0aGV5IGNhbiBi ZSBzZXBhcmF0ZWQgYW5kIGhhdmUgYmVlbiBzaG93bgp0byB3b3JrIHdlbGwgaW4gZWl0aGVyIHVz ZS1jYXNlLCB0aGVuIGl0IGlzIG15IG9waW5pb24gdGhhdCBwbGFjaW5nIGFuCmFydGlmaWNpYWwg YmFycmllciB1cCBiYXNlZCBtb3N0bHkgb24gcG9saXRpY3MgaXMgbm90IHRoZSBjb3JyZWN0CmFw cHJvYWNoLiAKCi0tIApMZWUgSm9uZXMgW+adjueQvOaWr10KU2VuaW9yIFRlY2huaWNhbCBMZWFk IC0gRGV2ZWxvcGVyIFNlcnZpY2VzCkxpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJl IGZvciBBcm0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==