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 05F29C7EE22 for ; Mon, 15 May 2023 23:37:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type: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=mmXYnPSRa86rlv1QxFxPjmsy9HOr11Bs6CnTJMRFWNk=; b=31rsEACOucnXqiX64svpzkjvdG vDfwSTFAVATTZcLv1CK43k85u8SVwTnKjuz6ERFJF2A79+6mPkjiofc9Lg1aLCUT+0za3hNLR+8AM Yeyzx+vurOM8Fo+2EIKS1Q6MUZqorKBkHjRcECkm3DkBmkZI1POLWBDCDfzo+dqRPuclprHEKSq34 ZCxDgNnugkR5CmQi4L7yr7z4D417110aKqpESBhnS23Zy6RgNthi41eG1cBpdOS1XkGkXWv75kvWo 7tpqMqw717LabCVMfCUwrP+3Br4Eyw5nkILowpHF3yiIHPgmkkcQz4az6Vu80iQ2PtoJ41H2W76uz ytGafHWg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pyhkg-003nA9-2Z; Mon, 15 May 2023 23:37:14 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pyhkc-003n8q-2M; Mon, 15 May 2023 23:37:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type: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-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=mmXYnPSRa86rlv1QxFxPjmsy9HOr11Bs6CnTJMRFWNk=; b=hktow+Y247a/xvs/ail8+nnKgk yxpFViJpD7cwUK5lQNz8CgppIrk5XTbSMp2KLGMfWlko8qFm96q+SvLY6MCwAoPzjc/6WjKy6+Pih NPahI4/73sh0qtBISFgoMrAGw29tjL/mPX2+MYc4Vlo6HTEKTaexHnWC3W+8Gcz5Wr4S0jPpGQAL+ J0CNuOOCoiF3lfJ0zUGE4rR6acaW+shAgl6e0f+hXhkKTG57LPwsOt+HeXsUqAT/e6kpL5dsTWmHz kC5mIUkGcs0n4SvjVXggGSoiHPiGQyEAJg3E9KkCn8yPiBHseLm+HrYcbcfZHdrkSuslT0UfMZU7C c8ucYaUA==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:53826) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pyhk7-0004l1-NG; Tue, 16 May 2023 00:36:39 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1pyhk1-0000Bg-Ks; Tue, 16 May 2023 00:36:33 +0100 Date: Tue, 16 May 2023 00:36:33 +0100 From: "Russell King (Oracle)" To: Vladimir Oltean Cc: Andrew Lunn , AngeloGioacchino Del Regno , Daniel Machon , "David S. Miller" , Eric Dumazet , Felix Fietkau , Florian Fainelli , Heiner Kallweit , Horatiu Vultur , Ioana Ciornei , Jakub Kicinski , John Crispin , Jose Abreu , Lars Povlsen , Lorenzo Bianconi , Marcin Wojtas , Mark Lee , Matthias Brugger , Maxime Chevallier , Paolo Abeni , Sean Wang , Steen Hegelund , Taras Chornyi , Thomas Petazzoni , UNGLinuxDriver@microchip.com, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org Subject: Re: [PATCH RFC] Providing a helper for PCS inband negotiation Message-ID: References: <20230515195616.uwg62f7hw47mktfu@skbuf> <20230515220833.up43pd76zne2suy2@skbuf> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230515220833.up43pd76zne2suy2@skbuf> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230515_163710_929688_0070FC73 X-CRM114-Status: GOOD ( 36.54 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Tue, May 16, 2023 at 01:08:33AM +0300, Vladimir Oltean wrote: > On Mon, May 15, 2023 at 10:45:21PM +0100, Russell King (Oracle) wrote: > > Clause 73.1: > > > > So, my reading of these statements is that the _user_ should be > > able to control via ethtool whether Clause 73 negotiation is > > performed on a 10GBASE-KR (or any other backplane link that > > uses clause 73 negotiation.) Having extracted that from 802.3, > > I now believe it should be treated the same as 1000BASE-X, and > > the Autoneg bit in ethtool should determine whether Clause 73 > > negotiation is used for 10GBASE-KR (and any other Clause 73 > > using protocol.) > > Having said that copper backplane link modes should be treated "the > same" as fiber link modes w.r.t. ethtool -s autoneg, it should also be > said that there are significant differences between clause 37 and 73 > autoneg too. > > Clause 73 negotiates the actual use of 10GBase-KR as a SERDES protocol > through the copper backplane in favor of other "Base-K*" alternative > link modes, so it's not quite proper to say that 10GBase-KR is a clause > 73 using protocol. I believe it is correct to state it as such, because: 72.1: Table 72–1—Physical Layer clauses associated with the 10GBASE-KR PMD 73—Auto-Negotiation for Backplane Ethernet Required Essentially, 802.3 doesn't permit 10GBASE-KR without hardware support for Clause 73 AN (but that AN doesn't have to be enabled by management software.) > To me, the goals of clause 73 autoneg are much more similar to those of > the twisted pair autoneg process - clause 28, which similarly selects > between different media side protocols in the PHY, using a priority > resolution function. For those, we use phylib and the phy_device > structure. What are the merits of using phylink_pcs for copper backplanes > and not phylib? I agree with you on that, because not only does that fit better with our ethernet PHY model, but it also means PHY_INTERFACE_MODE_XLGMII makes sense. However, by that same token, 1000BASE-X should never have been a PHY_INTERFACE_MODE_xxx, and this should also have been treated purely as a PHY. Taking that still further, this means SGMII, which is 1000BASE-X but modified for Cisco's purposes, would effectively be a media converting PHY sat between the MAC/RS and the "real" ethernet PHY. In this case, PHY_INTERFACE_MODE_SGMII might make sense because the "real" ethernet PHY needs to know that. Then there's 1000BASE-X used to connect a "real" ethernet PHY to the MAC/RS, which means 1000BASE-X can't really be any different from SGMII. This all makes the whole thing extremely muddy, but this deviates away from the original topic, because we're now into a "what should we call a PCS" vs "what should we call a PHY" discussion. Then we'll get into a discussion about phylib, difficulties with net_device only being able to have one phylib device, stacked PHYs, and phylib not being able to cope with non-MDIO based devices that we find on embedded platforms (some which don't even offer anything that approximates the 802.3 register set, so could never be a phylib driver.) It even impacts on the DT description, since what does "managed = "in-band-status";" mean if we start considering 1000base-X the same way as 1000base-T and the "PHY" protocol for 1000base-X becomes GMII. A GMII link has no inband AN, so "managed = "in-band-status";" at that point makes no sense. That is definitely a can of worms I do *not* want to open with this discussion - and much of the above has a long history and considerably pre-dates phylink. My original question was more around: how do we decide what we currently have as a PCS should use inband negotiation. For SGMII and close relatives, and 1000BASE-X it's been obvious. For 2500BASE-X less so (due to vendors coming up with it before its been standardised.) We have implementations using this for other protocols, so it's a question that needs answering for these other protocols. However, if we did want to extend this topic, then there are a number of questions that really need to be asked is about the XPCS driver. Such as - what does 1000BASE-KX, 10000BASE-KX4, 10000BASE-KR and 2500BASE-X have to do with USXGMII, and why are there no copper ethtool modes listed when a USXGMII link can definitely support being connected to a copper PHY? (See xpcs_usxgmii_features[]). Why does XPCS think that USXGMII uses Clause 73 AN? (see the first entry in synopsys_xpcs_compat[].) xpcs_sgmii_features[] only mentions copper linkmodes, but as we know, it's common for copper PHYs to also support fibre with an auto- selection mechanism. So, 1000BASE-X is definitely possible if SGMII is supported, so why isn't it listed. As previously said, 1000BASE-X can be connected to a PHY that does 1000BASE-T, so why does xpcs_1000basex_features[] not mention 1000baseT_Full... there's probably more here as well. Interestingly, xpcs_2500basex_features[] _does_ mention both 2500BASE-X and 2500BASE-T, but I think that only does because I happened to comment on it during a review. I think xpcs is another can of worms, but is an easier can of worms to solve than trying to sort out that "what's an ethernet PHY" question we seem to be heading towards (which I think would be a mammoth task, even back when phylink didn't exist, to sort out.) -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last! 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 57202C77B75 for ; Mon, 15 May 2023 23:37:39 +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: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=X1LL8gQ1x0p8MvnNylPc/8mu17riildJjgXH2ix6BUc=; b=OmYIWuy5FuHVHK VGGWWnmYIgWoKKhYzlpCAbUkTf8Zu/nrujN/vnWnADveCGUpQq+IUdEfIqi/jFB2sAaolWDikae2T T1vWo/k4Sai2r3AnYlkiRfKgMCZJZdP9SNSpPmw7JPLmBU/3UARhjIE0qVYCeJTKWu92MMubs2Js2 4WUTPcUzd5XXvdE6dbHzmtZ2Gryn47PXe5Jy4y/C9c0lAs97TgUU0F/3bQIIjtw7s01VYlD5z4he7 EVWd80Aa6qHTdZ4XNotNPCfi7vkFyc48iHNr/1JWDqPTi+KrMOYoz7ccTctF7Qf+DEefPrwdUTGJB 722f0MH0jx3OhkcsbtOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pyhkg-003n9k-11; Mon, 15 May 2023 23:37:14 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pyhkc-003n8q-2M; Mon, 15 May 2023 23:37:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type: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-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=mmXYnPSRa86rlv1QxFxPjmsy9HOr11Bs6CnTJMRFWNk=; b=hktow+Y247a/xvs/ail8+nnKgk yxpFViJpD7cwUK5lQNz8CgppIrk5XTbSMp2KLGMfWlko8qFm96q+SvLY6MCwAoPzjc/6WjKy6+Pih NPahI4/73sh0qtBISFgoMrAGw29tjL/mPX2+MYc4Vlo6HTEKTaexHnWC3W+8Gcz5Wr4S0jPpGQAL+ J0CNuOOCoiF3lfJ0zUGE4rR6acaW+shAgl6e0f+hXhkKTG57LPwsOt+HeXsUqAT/e6kpL5dsTWmHz kC5mIUkGcs0n4SvjVXggGSoiHPiGQyEAJg3E9KkCn8yPiBHseLm+HrYcbcfZHdrkSuslT0UfMZU7C c8ucYaUA==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:53826) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pyhk7-0004l1-NG; Tue, 16 May 2023 00:36:39 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1pyhk1-0000Bg-Ks; Tue, 16 May 2023 00:36:33 +0100 Date: Tue, 16 May 2023 00:36:33 +0100 From: "Russell King (Oracle)" To: Vladimir Oltean Cc: Andrew Lunn , AngeloGioacchino Del Regno , Daniel Machon , "David S. Miller" , Eric Dumazet , Felix Fietkau , Florian Fainelli , Heiner Kallweit , Horatiu Vultur , Ioana Ciornei , Jakub Kicinski , John Crispin , Jose Abreu , Lars Povlsen , Lorenzo Bianconi , Marcin Wojtas , Mark Lee , Matthias Brugger , Maxime Chevallier , Paolo Abeni , Sean Wang , Steen Hegelund , Taras Chornyi , Thomas Petazzoni , UNGLinuxDriver@microchip.com, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org Subject: Re: [PATCH RFC] Providing a helper for PCS inband negotiation Message-ID: References: <20230515195616.uwg62f7hw47mktfu@skbuf> <20230515220833.up43pd76zne2suy2@skbuf> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230515220833.up43pd76zne2suy2@skbuf> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230515_163710_929688_0070FC73 X-CRM114-Status: GOOD ( 36.54 ) 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 T24gVHVlLCBNYXkgMTYsIDIwMjMgYXQgMDE6MDg6MzNBTSArMDMwMCwgVmxhZGltaXIgT2x0ZWFu IHdyb3RlOgo+IE9uIE1vbiwgTWF5IDE1LCAyMDIzIGF0IDEwOjQ1OjIxUE0gKzAxMDAsIFJ1c3Nl bGwgS2luZyAoT3JhY2xlKSB3cm90ZToKPiA+IENsYXVzZSA3My4xOgo+ID4gCj4gPiBTbywgbXkg cmVhZGluZyBvZiB0aGVzZSBzdGF0ZW1lbnRzIGlzIHRoYXQgdGhlIF91c2VyXyBzaG91bGQgYmUK PiA+IGFibGUgdG8gY29udHJvbCB2aWEgZXRodG9vbCB3aGV0aGVyIENsYXVzZSA3MyBuZWdvdGlh dGlvbiBpcwo+ID4gcGVyZm9ybWVkIG9uIGEgMTBHQkFTRS1LUiAob3IgYW55IG90aGVyIGJhY2tw bGFuZSBsaW5rIHRoYXQKPiA+IHVzZXMgY2xhdXNlIDczIG5lZ290aWF0aW9uLikgSGF2aW5nIGV4 dHJhY3RlZCB0aGF0IGZyb20gODAyLjMsCj4gPiBJIG5vdyBiZWxpZXZlIGl0IHNob3VsZCBiZSB0 cmVhdGVkIHRoZSBzYW1lIGFzIDEwMDBCQVNFLVgsIGFuZAo+ID4gdGhlIEF1dG9uZWcgYml0IGlu IGV0aHRvb2wgc2hvdWxkIGRldGVybWluZSB3aGV0aGVyIENsYXVzZSA3Mwo+ID4gbmVnb3RpYXRp b24gaXMgdXNlZCBmb3IgMTBHQkFTRS1LUiAoYW5kIGFueSBvdGhlciBDbGF1c2UgNzMKPiA+IHVz aW5nIHByb3RvY29sLikKPiAKPiBIYXZpbmcgc2FpZCB0aGF0IGNvcHBlciBiYWNrcGxhbmUgbGlu ayBtb2RlcyBzaG91bGQgYmUgdHJlYXRlZCAidGhlCj4gc2FtZSIgYXMgZmliZXIgbGluayBtb2Rl cyB3LnIudC4gZXRodG9vbCAtcyBhdXRvbmVnLCBpdCBzaG91bGQgYWxzbyBiZQo+IHNhaWQgdGhh dCB0aGVyZSBhcmUgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgYmV0d2VlbiBjbGF1c2UgMzcgYW5k IDczCj4gYXV0b25lZyB0b28uCj4gCj4gQ2xhdXNlIDczIG5lZ290aWF0ZXMgdGhlIGFjdHVhbCB1 c2Ugb2YgMTBHQmFzZS1LUiBhcyBhIFNFUkRFUyBwcm90b2NvbAo+IHRocm91Z2ggdGhlIGNvcHBl ciBiYWNrcGxhbmUgaW4gZmF2b3Igb2Ygb3RoZXIgIkJhc2UtSyoiIGFsdGVybmF0aXZlCj4gbGlu ayBtb2Rlcywgc28gaXQncyBub3QgcXVpdGUgcHJvcGVyIHRvIHNheSB0aGF0IDEwR0Jhc2UtS1Ig aXMgYSBjbGF1c2UKPiA3MyB1c2luZyBwcm90b2NvbC4KCkkgYmVsaWV2ZSBpdCBpcyBjb3JyZWN0 IHRvIHN0YXRlIGl0IGFzIHN1Y2gsIGJlY2F1c2U6Cgo3Mi4xOiBUYWJsZSA3MuKAkzHigJRQaHlz aWNhbCBMYXllciBjbGF1c2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgMTBHQkFTRS1LUiBQTUQKCgk3 M+KAlEF1dG8tTmVnb3RpYXRpb24gZm9yIEJhY2twbGFuZSBFdGhlcm5ldCAgICAgICAgICAgICAg UmVxdWlyZWQKCkVzc2VudGlhbGx5LCA4MDIuMyBkb2Vzbid0IHBlcm1pdCAxMEdCQVNFLUtSIHdp dGhvdXQgaGFyZHdhcmUgc3VwcG9ydApmb3IgQ2xhdXNlIDczIEFOIChidXQgdGhhdCBBTiBkb2Vz bid0IGhhdmUgdG8gYmUgZW5hYmxlZCBieSBtYW5hZ2VtZW50CnNvZnR3YXJlLikKCj4gVG8gbWUs IHRoZSBnb2FscyBvZiBjbGF1c2UgNzMgYXV0b25lZyBhcmUgbXVjaCBtb3JlIHNpbWlsYXIgdG8g dGhvc2Ugb2YKPiB0aGUgdHdpc3RlZCBwYWlyIGF1dG9uZWcgcHJvY2VzcyAtIGNsYXVzZSAyOCwg d2hpY2ggc2ltaWxhcmx5IHNlbGVjdHMKPiBiZXR3ZWVuIGRpZmZlcmVudCBtZWRpYSBzaWRlIHBy b3RvY29scyBpbiB0aGUgUEhZLCB1c2luZyBhIHByaW9yaXR5Cj4gcmVzb2x1dGlvbiBmdW5jdGlv bi4gRm9yIHRob3NlLCB3ZSB1c2UgcGh5bGliIGFuZCB0aGUgcGh5X2RldmljZQo+IHN0cnVjdHVy ZS4gV2hhdCBhcmUgdGhlIG1lcml0cyBvZiB1c2luZyBwaHlsaW5rX3BjcyBmb3IgY29wcGVyIGJh Y2twbGFuZXMKPiBhbmQgbm90IHBoeWxpYj8KCkkgYWdyZWUgd2l0aCB5b3Ugb24gdGhhdCwgYmVj YXVzZSBub3Qgb25seSBkb2VzIHRoYXQgZml0IGJldHRlciB3aXRoCm91ciBldGhlcm5ldCBQSFkg bW9kZWwsIGJ1dCBpdCBhbHNvIG1lYW5zIFBIWV9JTlRFUkZBQ0VfTU9ERV9YTEdNSUkKbWFrZXMg c2Vuc2UuCgpIb3dldmVyLCBieSB0aGF0IHNhbWUgdG9rZW4sIDEwMDBCQVNFLVggc2hvdWxkIG5l dmVyIGhhdmUgYmVlbiBhClBIWV9JTlRFUkZBQ0VfTU9ERV94eHgsIGFuZCB0aGlzIHNob3VsZCBh bHNvIGhhdmUgYmVlbiB0cmVhdGVkIHB1cmVseQphcyBhIFBIWS4KClRha2luZyB0aGF0IHN0aWxs IGZ1cnRoZXIsIHRoaXMgbWVhbnMgU0dNSUksIHdoaWNoIGlzIDEwMDBCQVNFLVggYnV0Cm1vZGlm aWVkIGZvciBDaXNjbydzIHB1cnBvc2VzLCB3b3VsZCBlZmZlY3RpdmVseSBiZSBhIG1lZGlhIGNv bnZlcnRpbmcKUEhZIHNhdCBiZXR3ZWVuIHRoZSBNQUMvUlMgYW5kIHRoZSAicmVhbCIgZXRoZXJu ZXQgUEhZLiBJbiB0aGlzIGNhc2UsClBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSBtaWdodCBtYWtl IHNlbnNlIGJlY2F1c2UgdGhlICJyZWFsIiBldGhlcm5ldApQSFkgbmVlZHMgdG8ga25vdyB0aGF0 LgoKVGhlbiB0aGVyZSdzIDEwMDBCQVNFLVggdXNlZCB0byBjb25uZWN0IGEgInJlYWwiIGV0aGVy bmV0IFBIWSB0byB0aGUKTUFDL1JTLCB3aGljaCBtZWFucyAxMDAwQkFTRS1YIGNhbid0IHJlYWxs eSBiZSBhbnkgZGlmZmVyZW50IGZyb20KU0dNSUkuCgpUaGlzIGFsbCBtYWtlcyB0aGUgd2hvbGUg dGhpbmcgZXh0cmVtZWx5IG11ZGR5LCBidXQgdGhpcyBkZXZpYXRlcyBhd2F5CmZyb20gdGhlIG9y aWdpbmFsIHRvcGljLCBiZWNhdXNlIHdlJ3JlIG5vdyBpbnRvIGEgIndoYXQgc2hvdWxkIHdlIGNh bGwKYSBQQ1MiIHZzICJ3aGF0IHNob3VsZCB3ZSBjYWxsIGEgUEhZIiBkaXNjdXNzaW9uLiBUaGVu IHdlJ2xsIGdldCBpbnRvCmEgZGlzY3Vzc2lvbiBhYm91dCBwaHlsaWIsIGRpZmZpY3VsdGllcyB3 aXRoIG5ldF9kZXZpY2Ugb25seSBiZWluZwphYmxlIHRvIGhhdmUgb25lIHBoeWxpYiBkZXZpY2Us IHN0YWNrZWQgUEhZcywgYW5kIHBoeWxpYiBub3QgYmVpbmcKYWJsZSB0byBjb3BlIHdpdGggbm9u LU1ESU8gYmFzZWQgZGV2aWNlcyB0aGF0IHdlIGZpbmQgb24gZW1iZWRkZWQKcGxhdGZvcm1zIChz b21lIHdoaWNoIGRvbid0IGV2ZW4gb2ZmZXIgYW55dGhpbmcgdGhhdCBhcHByb3hpbWF0ZXMgdGhl CjgwMi4zIHJlZ2lzdGVyIHNldCwgc28gY291bGQgbmV2ZXIgYmUgYSBwaHlsaWIgZHJpdmVyLikK Ckl0IGV2ZW4gaW1wYWN0cyBvbiB0aGUgRFQgZGVzY3JpcHRpb24sIHNpbmNlIHdoYXQgZG9lcyAi bWFuYWdlZCA9CiJpbi1iYW5kLXN0YXR1cyI7IiBtZWFuIGlmIHdlIHN0YXJ0IGNvbnNpZGVyaW5n IDEwMDBiYXNlLVggdGhlIHNhbWUKd2F5IGFzIDEwMDBiYXNlLVQgYW5kIHRoZSAiUEhZIiBwcm90 b2NvbCBmb3IgMTAwMGJhc2UtWCBiZWNvbWVzIEdNSUkuCkEgR01JSSBsaW5rIGhhcyBubyBpbmJh bmQgQU4sIHNvICJtYW5hZ2VkID0gImluLWJhbmQtc3RhdHVzIjsiIGF0CnRoYXQgcG9pbnQgbWFr ZXMgbm8gc2Vuc2UuCgpUaGF0IGlzIGRlZmluaXRlbHkgYSBjYW4gb2Ygd29ybXMgSSBkbyAqbm90 KiB3YW50IHRvIG9wZW4gd2l0aCB0aGlzCmRpc2N1c3Npb24gLSBhbmQgbXVjaCBvZiB0aGUgYWJv dmUgaGFzIGEgbG9uZyBoaXN0b3J5IGFuZCBjb25zaWRlcmFibHkKcHJlLWRhdGVzIHBoeWxpbmsu CgpNeSBvcmlnaW5hbCBxdWVzdGlvbiB3YXMgbW9yZSBhcm91bmQ6IGhvdyBkbyB3ZSBkZWNpZGUg d2hhdCB3ZQpjdXJyZW50bHkgaGF2ZSBhcyBhIFBDUyBzaG91bGQgdXNlIGluYmFuZCBuZWdvdGlh dGlvbi4KCkZvciBTR01JSSBhbmQgY2xvc2UgcmVsYXRpdmVzLCBhbmQgMTAwMEJBU0UtWCBpdCdz IGJlZW4gb2J2aW91cy4gRm9yCjI1MDBCQVNFLVggbGVzcyBzbyAoZHVlIHRvIHZlbmRvcnMgY29t aW5nIHVwIHdpdGggaXQgYmVmb3JlIGl0cyBiZWVuCnN0YW5kYXJkaXNlZC4pCgpXZSBoYXZlIGlt cGxlbWVudGF0aW9ucyB1c2luZyB0aGlzIGZvciBvdGhlciBwcm90b2NvbHMsIHNvIGl0J3MKYSBx dWVzdGlvbiB0aGF0IG5lZWRzIGFuc3dlcmluZyBmb3IgdGhlc2Ugb3RoZXIgcHJvdG9jb2xzLgoK Ckhvd2V2ZXIsIGlmIHdlIGRpZCB3YW50IHRvIGV4dGVuZCB0aGlzIHRvcGljLCB0aGVuIHRoZXJl IGFyZSBhIG51bWJlcgpvZiBxdWVzdGlvbnMgdGhhdCByZWFsbHkgbmVlZCB0byBiZSBhc2tlZCBp cyBhYm91dCB0aGUgWFBDUyBkcml2ZXIuClN1Y2ggYXMgLSB3aGF0IGRvZXMgMTAwMEJBU0UtS1gs IDEwMDAwQkFTRS1LWDQsIDEwMDAwQkFTRS1LUiBhbmQKMjUwMEJBU0UtWCBoYXZlIHRvIGRvIHdp dGggVVNYR01JSSwgYW5kIHdoeSBhcmUgdGhlcmUgbm8gY29wcGVyCmV0aHRvb2wgbW9kZXMgbGlz dGVkIHdoZW4gYSBVU1hHTUlJIGxpbmsgY2FuIGRlZmluaXRlbHkgc3VwcG9ydApiZWluZyBjb25u ZWN0ZWQgdG8gYSBjb3BwZXIgUEhZPyAoU2VlIHhwY3NfdXN4Z21paV9mZWF0dXJlc1tdKS4KCldo eSBkb2VzIFhQQ1MgdGhpbmsgdGhhdCBVU1hHTUlJIHVzZXMgQ2xhdXNlIDczIEFOPyAoc2VlIHRo ZSBmaXJzdAplbnRyeSBpbiBzeW5vcHN5c194cGNzX2NvbXBhdFtdLikKCnhwY3Nfc2dtaWlfZmVh dHVyZXNbXSBvbmx5IG1lbnRpb25zIGNvcHBlciBsaW5rbW9kZXMsIGJ1dCBhcyB3ZSBrbm93LApp dCdzIGNvbW1vbiBmb3IgY29wcGVyIFBIWXMgdG8gYWxzbyBzdXBwb3J0IGZpYnJlIHdpdGggYW4g YXV0by0Kc2VsZWN0aW9uIG1lY2hhbmlzbS4gU28sIDEwMDBCQVNFLVggaXMgZGVmaW5pdGVseSBw b3NzaWJsZSBpZiBTR01JSQppcyBzdXBwb3J0ZWQsIHNvIHdoeSBpc24ndCBpdCBsaXN0ZWQuCgpB cyBwcmV2aW91c2x5IHNhaWQsIDEwMDBCQVNFLVggY2FuIGJlIGNvbm5lY3RlZCB0byBhIFBIWSB0 aGF0IGRvZXMKMTAwMEJBU0UtVCwgc28gd2h5IGRvZXMgeHBjc18xMDAwYmFzZXhfZmVhdHVyZXNb XSBub3QgbWVudGlvbgoxMDAwYmFzZVRfRnVsbC4uLiB0aGVyZSdzIHByb2JhYmx5IG1vcmUgaGVy ZSBhcyB3ZWxsLgoKSW50ZXJlc3RpbmdseSwgeHBjc18yNTAwYmFzZXhfZmVhdHVyZXNbXSBfZG9l c18gbWVudGlvbiBib3RoCjI1MDBCQVNFLVggYW5kIDI1MDBCQVNFLVQsIGJ1dCBJIHRoaW5rIHRo YXQgb25seSBkb2VzIGJlY2F1c2UgSQpoYXBwZW5lZCB0byBjb21tZW50IG9uIGl0IGR1cmluZyBh IHJldmlldy4KCkkgdGhpbmsgeHBjcyBpcyBhbm90aGVyIGNhbiBvZiB3b3JtcywgYnV0IGlzIGFu IGVhc2llciBjYW4gb2Ygd29ybXMKdG8gc29sdmUgdGhhbiB0cnlpbmcgdG8gc29ydCBvdXQgdGhh dCAid2hhdCdzIGFuIGV0aGVybmV0IFBIWSIKcXVlc3Rpb24gd2Ugc2VlbSB0byBiZSBoZWFkaW5n IHRvd2FyZHMgKHdoaWNoIEkgdGhpbmsgd291bGQgYmUgYQptYW1tb3RoIHRhc2ssIGV2ZW4gYmFj ayB3aGVuIHBoeWxpbmsgZGlkbid0IGV4aXN0LCB0byBzb3J0IG91dC4pCgotLSAKUk1LJ3MgUGF0 Y2ggc3lzdGVtOiBodHRwczovL3d3dy5hcm1saW51eC5vcmcudWsvZGV2ZWxvcGVyL3BhdGNoZXMv CkZUVFAgaXMgaGVyZSEgODBNYnBzIGRvd24gMTBNYnBzIHVwLiBEZWNlbnQgY29ubmVjdGl2aXR5 IGF0IGxhc3QhCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==