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 46AFDC83F12 for ; Mon, 28 Aug 2023 14:14:59 +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:Message-ID:Date: In-reply-to:Subject:Cc:To:From:References:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=FhiB9WGjqBfN7UaEx186RaVQ8rhcIuV+YlQT2ZBTbhs=; b=Dlg0ATX5pn3zKQbTO+A9j67gvX u7UEuheKHnfl4spD3R2oqPO3mfaz/USc5mJXOLe1kyJUrKrU2nCmo8Y6edrVabESktbeJsCV10sg3 wVzVAJQJWOI35BDk7DaIu7y2Fw2pIdQmXjHtLfVmx66eNN/inJrNPsal7ykNkC+VDzyZRKvyZFMVz r4bTgDB6Xq+N8sfg8tYj+H8Im8YObFQZ+WmYKvJDJvnJ0m370cfA8fN0JwTtyifm4h/2tMUxhDp/K f6Yl34QTDY4BGLON9wCfNu2mfFPBxXwJ1k8SbePUuf0gNhWmfeZQJm4I1GxQPOcfxl7/BR60FJcJj 0qy9lw/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qad0b-009hEU-39; Mon, 28 Aug 2023 14:14:25 +0000 Received: from mout-p-102.mailbox.org ([80.241.56.152]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qad0Y-009hDh-21 for linux-arm-kernel@lists.infradead.org; Mon, 28 Aug 2023 14:14:25 +0000 Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4RZCGv27R1z9sr6; Mon, 28 Aug 2023 16:14:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1693232055; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+DO/l19fra2OrFIuBGZ5yUwxn75lwFHs9VDz/dQrv/o=; b=imCfI3Fl0CU6sxkurcZarAexLBD/sw/LLM0LSo6Esc/GeST0+FK1cfygO5a2HcEnwfkNEi hFwUwk0hHFU8cRjeVEUbZod44/7kwx3HpCnFxomHJr4m85AjXX/n6epx5B0tpt5BJ0xgn+ Nl8g6jnmVlh/+fv+SDKCHzlokI+qZ9h9C7dex3HUj2m6lNc44py+pyb83qvsXyxQXXimvd f+Nl52q9f0wtYeJodZ1dlzpuxG6QVt7T+8KmtC/tg2NORSKJVJb6okvtDbhwqDuxF6X8ak uztQy/lOw4qVyus8nZN/wV+MOcXO7Dk2Ls/Kf1IPjUUmj+9qoMM6vX99TPj1Uw== References: <20230825-pll-mipi_keep_rate-v1-0-35bc43570730@oltmanns.dev> <87ledzqhwx.fsf@oltmanns.dev> <878r9yb21b.fsf@oltmanns.dev> From: Frank Oltmanns To: Maxime Ripard Cc: Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , David Airlie , Daniel Vetter , Ondrej Jirman , Icenowy Zheng , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: Re: [PATCH 0/3] Make Allwinner A64's pll-mipi keep its rate when parent rate changes In-reply-to: Date: Mon, 28 Aug 2023 16:14:06 +0200 Message-ID: <87msybuudt.fsf@oltmanns.dev> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4RZCGv27R1z9sr6 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230828_071422_898667_588EEB7D X-CRM114-Status: GOOD ( 61.53 ) 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 Ck9uIDIwMjMtMDgtMjggYXQgMTA6MjU6MDEgKzAyMDAsIE1heGltZSBSaXBhcmQgPG1yaXBhcmRA a2VybmVsLm9yZz4gd3JvdGU6Cj4gT24gU2F0LCBBdWcgMjYsIDIwMjMgYXQgMTE6MTI6MTZBTSAr MDIwMCwgRnJhbmsgT2x0bWFubnMgd3JvdGU6Cj4+Cj4+IE9uIDIwMjMtMDgtMjUgYXQgMTc6MDc6 NTggKzAyMDAsIEZyYW5rIE9sdG1hbm5zIDxmcmFua0BvbHRtYW5ucy5kZXY+IHdyb3RlOgo+PiA+ IFRoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjaywgTWF4aW1lIQo+PiA+Cj4+ID4gT24gMjAyMy0w OC0yNSBhdCAxMDoxMzo1MyArMDIwMCwgTWF4aW1lIFJpcGFyZCA8bXJpcGFyZEBrZXJuZWwub3Jn PiB3cm90ZToKPj4gPj4gW1tQR1AgU2lnbmVkIFBhcnQ6VW5kZWNpZGVkXV0KPj4gPj4gSGksCj4+ ID4+Cj4+ID4+IE9uIEZyaSwgQXVnIDI1LCAyMDIzIGF0IDA3OjM2OjM2QU0gKzAyMDAsIEZyYW5r IE9sdG1hbm5zIHdyb3RlOgo+PiA+Pj4gSSB3b3VsZCBsaWtlIHRvIG1ha2UgdGhlIEFsbHdpbm5l ciBBNjQncyBwbGwtbWlwaSB0byBrZWVwIGl0cyByYXRlIHdoZW4KPj4gPj4+IGl0cyBwYXJlbnQn cyAocGxsLXZpZGVvMCkgcmF0ZSBjaGFuZ2VzLiBLZWVwaW5nIHBsbC1taXBpJ3MgcmF0ZSBpcwo+ PiA+Pj4gcmVxdWlyZWQsIHRvIGxldCB0aGUgQTY0IGRyaXZlIGJvdGggYW4gTENEIGFuZCBIRE1J IGRpc3BsYXkgYXQgdGhlIHNhbWUKPj4gPj4+IHRpbWUsIGJlY2F1c2UgYm90aCBoYXZlIHBsbC12 aWRlbzAgYXMgYW4gYW5jZXN0b3IuCj4+ID4+Pgo+PiA+Pj4gUEFUQ0ggMSBhZGRzIHRoaXMgZnVu Y3Rpb25hbGl0eSBhcyBhIGZlYXR1cmUgaW50byB0aGUgY2xrIGZyYW1ld29yayAobmV3Cj4+ID4+ PiBmbGFnOiBDTEtfS0VFUF9SQVRFKS4KPj4gPj4+Cj4+ID4+PiBDb3JlcyB0aGF0IHVzZSB0aGlz IGZsYWcsIHN0b3JlIGEgcmF0ZSBhcyByZXFfcmF0ZSB3aGVuIGl0IG9yIG9uZSBvZiBpdHMKPj4g Pj4+IGRlc2NlbmRhbnRzIHJlcXVlc3RzIGEgbmV3IHJhdGUuCj4+ID4+Pgo+PiA+Pj4gVGhhdCBy YXRlIGlzIHRoZW4gcmVzdG9yZWQgaW4gdGhlIGNsa19jaGFuZ2VfcmF0ZSByZWN1cnNpb24sIHdo aWNoIHdhbGtzCj4+ID4+PiB0aHJvdWdoIHRoZSB0cmVlLiBJdCB3aWxsIHJlYWNoIHRoZSBmbGFn Z2VkIGNvcmUgKGUuZy4gcGxsLW1pcGkpIGFmdGVyCj4+ID4+PiB0aGUgcGFyZW50J3MgcmF0ZSAo ZS5nLiBwbGwtdmlkZW8wKSBoYXMgYWxyZWFkeSBiZWVuIHNldCB0byB0aGUgbmV3Cj4+ID4+PiBy YXRlLiBJdCB3aWxsIHRoZW4gY2FsbCBkZXRlcm1pbmVfcmF0ZSAod2hpY2ggcmVxdWVzdHMgdGhl IHBhcmVudCdzCj4+ID4+PiBjdXJyZW50LCBpLmUuIG5ldywgcmF0ZSkgdG8gZGV0ZXJtaW5lIGEg cmF0ZSB0aGF0IGlzIGNsb3NlIHRvIHRoZQo+PiA+Pj4gZmxhZ2dlZCBjb3JlJ3MgcHJldmlvdXMg cmF0ZS4gQWZ0ZXJ3YXJkIGl0IHdpbGwgcmUtY2FsY3VsYXRlIHRoZSByYXRlcwo+PiA+Pj4gZm9y IHRoZSBmbGFnZ2VkIGNvcmUncyBzdWJ0cmVlLgo+PiA+Pgo+PiA+PiBJIGRvbid0IHRoaW5rIGl0 J3MgdGhlIHJpZ2h0IHdheSBmb3J3YXJkLiBJdCBtYWtlcyB0aGUgY29yZSBsb2dpYyBtb3JlCj4+ ID4+IGNvbXBsaWNhdGVkLCBmb3Igc29tZXRoaW5nIHRoYXQgaXMgcmVkdW5kYW50IHdpdGggdGhl IG5vdGlmaWVycwo+PiA+PiBtZWNoYW5pc20gdGhhdCBoYXMgYmVlbiB0aGUgZ28tdG8gZm9yIHRo YXQga2luZCBvZiB0aGluZ3Mgc28gZmFyLgo+PiA+Cj4+ID4gWWVhaCwgdGhhdCB3YXMgbXkgaW5p dGlhbCBpZGVhIGFzIHdlbGwuIEJ1dCBJIGNvdWxkbid0IGdldCBpdCB0byB3b3JrLgo+PiA+IFNl ZSBkZXRhaWxzIGJlbG93Lgo+PiA+Cj4+ID4gRG8geW91IGhhdmUgYW4gZXhhbXBsZSBvZiBhIGNs b2NrIHRoYXQgcmVzdG9yZXMgaXRzIHByZXZpb3VzIHJhdGUgYWZ0ZXIKPj4gPiB0aGUgcGFyZW50 IHJhdGUgaGFzIGNoYW5nZWQ/IEkndmUgbG9va2VkIGxlZnQgYW5kIHJpZ2h0LCBidXQgdG8gbWUg aXQKPj4gPiBzZWVtcyB0aGF0IG5vdGlmaWVycyBhcmUgbWFpbmx5IHVzZWQgZm9yIHNldHRpbmcg Y2xvY2tzIGludG8gc29tZSBraW5kCj4+ID4gb2YgInNhZmUgbW9kZSIgcHJpb3IgdG8gdGhlIHJh dGUgY2hhbmdlLiBFeGFtcGxlczoKPj4gPgo+PiA+IHN1bnhpLW5nOgo+PiA+IGh0dHBzOi8vZWxp eGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjQuMTEvc291cmNlL2RyaXZlcnMvY2xrL3N1bnhpLW5n L2NjdV9tdXguYyNMMjczCj4+ID4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjYu NC4xMS9zb3VyY2UvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1X2NvbW1vbi5jI0w2MAo+PiA+Cj4+ ID4gYnV0IGFsc28gb3RoZXJzOgo+PiA+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4 L3Y2LjQuMTEvc291cmNlL2RyaXZlcnMvY2xrL2F0OTEvY2xrLW1hc3Rlci5jI0wyNDgKPj4gPiBo dHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92Ni40LjExL3NvdXJjZS9kcml2ZXJzL2Ns ay9tZXNvbi9tZXNvbjhiLmMjTDM3NTUKPj4gPiBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9s aW51eC92Ni40LjExL3NvdXJjZS9kcml2ZXJzL2Nsay9xY29tL2Nsay1jcHUtODk5Ni5jI0w1NDYK Pj4gPgo+PiA+PiBJdCdzIG5vdCByZWFsbHkgb2J2aW91cyB0byBtZSB3aHkgdGhlIG5vdGlmaWVy cyBkb24ndCB3b3JrIHRoZXJlLgo+PiA+Pgo+PiA+Pj4gVGhpcyB3b3JrIGlzIGluc3BpcmVkIGJ5 IGFuIG91dC1vZi10cmVlIHBhdGNoc2V0IFsxXSBbMl0gWzNdLgo+PiA+Pj4gVW5mb3J0dW5hdGVs eSwgdGhlIHBhdGNoc2V0IHVzZXMgY2xrX3NldF9yYXRlKCkgaW4gYSBub3RpZmllciBjYWxsYmFj aywKPj4gPj4+IHdoaWNoIHRoZSBmb2xsb3dpbmcgY29tbWVudCBvbiBjbGtfbm90aWZpZXJfcmVn aXN0ZXIoKSBmb3JiaWRzOiAiVGhlCj4+ID4+PiBjYWxsYmFja3MgYXNzb2NpYXRlZCB3aXRoIHRo ZSBub3RpZmllciBtdXN0IG5vdCByZS1lbnRlciBpbnRvIHRoZSBjbGsKPj4gPj4+IGZyYW1ld29y ayBieSBjYWxsaW5nIGFueSB0b3AtbGV2ZWwgY2xrIEFQSXMuIiBbNF0gRnVydGhlcm1vcmUsIHRo YXQKPj4gPj4+IG91dC1vZi10cmVlIHBhdGNoc2V0IG5vIGxvbmdlciB3b3JrcyB3aXRoIHRoZSBj dXJyZW50IGxpbnV4LW5leHQsCj4+ID4+PiBiZWNhdXNlIHNldHRpbmcgcGxsLW1pcGkgaXMgbm93 IGFsc28gcmVzZXR0aW5nIHBsbC12aWRlbzAgWzVdLgo+PiA+Pgo+PiA+PiBJcyBpdCBiZWNhdXNl IG9mIHRoZSAiVGhlIGNhbGxiYWNrcyBhc3NvY2lhdGVkIHdpdGggdGhlIG5vdGlmaWVyIG11c3QK Pj4gPj4gbm90IHJlLWVudGVyIGludG8gdGhlIGNsayBmcmFtZXdvcmsgYnkgY2FsbGluZyBhbnkg dG9wLWxldmVsIGNsayBBUElzLiIKPj4gPj4gY29tbWVudD8KPj4gPgo+PiA+IEkgZG9uJ3QgdGhp bmsgdGhhdCdzIHRoZSByZWFzb24uIEknbSBmYWlybHkgY2VydGFpbiB0aGF0IHRoZSBwcm9ibGVt IGlzLAo+PiA+IHRoYXQgcGxsLW1pcGkgdHJpZXMgdG8gc2V0IHRoZSBwYXJlbnQgcmF0ZS4gTWF5 YmUgaXQgc2hvdWxkIGNoZWNrIGlmIHRoZQo+PiA+IHBhcmVudCBpcyBsb2NrZWQsIGJlZm9yZSBk ZXRlcm1pbmluZyBhIHJhdGUgdGhhdCByZXF1aXJlcyB0aGUgcGFyZW50Cj4+ID4gcmF0ZSB0byBj aGFuZ2UuIPCfpJQgQ3VycmVudGx5LCBpdCBvbmx5IGNhbGxzIGNsa19od19jYW5fc2V0X3JhdGVf cGFyZW50KCkKPj4gPiB3aGljaCBvbmx5IGNoZWNrcyB0aGUgZmxhZywgYnV0IGRvZXMgbm90IGNo ZWNrIGlmIGl0IGlzIHJlYWxseSBwb3NzaWJsZQo+PiA+IHRvIGNoYW5nZSB0aGUgcGFyZW50J3Mg cmF0ZS4KPj4gPgo+PiA+IFJlZ2FyZGxlc3MsIHBsZWFzZSBkb24ndCBwcmVtYXR1cmVseSBkaXNt aXNzIG15IHByb3Bvc2FsLiBJdCBoYXMgdGhlCj4+ID4gYWR2YW50YWdlIHRoYXQgaXQgaXMgbm90 IHNwZWNpZmljIGZvciBzdW54aS1uZywgYnV0IGNvdWxkIGJlIHVzZWQgZm9yCj4+ID4gb3RoZXIg ZHJpdmVycyBhcyB3ZWxsLiBNYXliZSB0aGVyZSBvdGhlciBpbnN0YW5jZXMgb2YgZXhjbHVzaXZl IGxvY2tzCj4+ID4gdG9kYXkgd2hlcmUgdGhlIENMS19LRUVQX1JBVEUgZmxhZyBtaWdodCB3b3Jr IGVxdWFsbHkgd2VsbC4g8J+ktwo+PiA+Cj4+ID4+IElmIHNvLCBJIHRoaW5rIHRoZSB0aGluZyB3 ZSBzaG91bGQgZW1waGFzaXplIGlzIHRoYXQgaXQncyBhYm91dCAqYW55Cj4+ID4+IHRvcC1sZXZl bCBjbGsgQVBJKiwgYXMgaW4gY2xrX3NldF9yYXRlKCkgb3IgY2xrX3NldF9wYXJlbnQoKS4KPj4g Pj4KPj4gPj4gVGhlIGlzc3VlIGlzIHRoYXQgYW55IGNvbnN1bWVyLWZhY2luZyBBUEkgaXMgdGFr aW5nIHRoZSBjbGtfcHJlcGFyZSBsb2NrCj4+ID4+IGFuZCB0aHVzIHdlIHdvdWxkIGhhdmUgcmVl bnRyYW5jeS4gQnV0IHdlJ3JlIGEgcHJvdmlkZXIgdGhlcmUsIGFuZCBub25lCj4+ID4+IG9mIHRo ZSBjbGtfaHdfKiBmdW5jdGlvbnMgYXJlIHRha2luZyB0aGF0IGxvY2suIE5laXRoZXIgZG8gb3Vy IG93biBmdW5jdGlvbi4KPj4gPj4KPj4gPj4gU28gd2UgY291bGQgY2FsbCBpbiB0aGF0IG5vdGlm aWVyIG91ciBzZXRfcmF0ZSBjYWxsYmFjayBkaXJlY3RseSwgb3Igd2UKPj4gPj4gY291bGQgY3Jl YXRlIGEgY2xrX2h3X3NldF9yYXRlKCkgZnVuY3Rpb24uCj4+ID4+Cj4+ID4+IFRoZSBmaXJzdCBv bmUgd2lsbCBjcmVhdGUgY2FjaGUgaXNzdWUgYmV0d2VlbiB0aGUgYWN0dWFsIHJhdGUgdGhhdCB0 aGUKPj4gPj4gY29tbW9uIGNsb2NrIGZyYW1ld29yayBpcyBydW5uaW5nIGFuZCB0aGUgb25lIHdl IGFjdHVhbGx5IGVuZm9yY2VkLCBidXQKPj4gPj4gd2UgY291bGQgY3JlYXRlIGEgZnVuY3Rpb24g dG8gZmx1c2ggdGhlIENDRiBjYWNoZS4KPj4gPj4KPj4gPj4gVGhlIHNlY29uZCBvbmUgaXMgcHJv YmFibHkgc2ltcGxlci4KPj4gPgo+PiA+IEknbSBwcm9iYWJseSBtaXNzaW5nIHNvbWV0aGluZywg YmVjYXVzZSBJIGRvbid0IHRoaW5rIHRoaXMgd291bGQgd29yay4KPj4gPiBGb3IgcmVmZXJlbmNl LCB0aGlzIGlzIG91ciB0cmVlOgo+PiA+Cj4+ID4gICAgIHBsbC12aWRlbzAKPj4gPiAgICAgICAg aGRtaS1waHktY2xrCj4+ID4gICAgICAgIGhkbWkKPj4gPiAgICAgICAgdGNvbjEKPj4gPiAgICAg ICAgcGxsLW1pcGkKPj4gPiAgICAgICAgICAgdGNvbjAKPj4gPiAgICAgICAgICAgICAgdGNvbi1k YXRhLWNsb2NrCj4+ID4KPj4gPiBXaGVuIHBsbC12aWRlbzAncyByYXRlIGlzIGNoYW5nZWQgKGUu Zy4gYmVjYXVzZSBhIEhETUkgbW9uaXRvciBpcwo+PiA+IHBsdWdnZWQgaW4pLCB0aGUgcmF0ZXMg b2YgdGhlIGNvbXBsZXRlIHN1YnRyZWUgZm9yIHBsbC12aWRlbzAgYXJlCj4+ID4gcmVjYWxjdWxh dGVkLCBpbmNsdWRpbmcgdGNvbjAgYW5kIHRjb24tZGF0YS1jbG9jay4gVGhlIHJhdGUgb2YgdGNv bjAgaXMKPj4gPiBiYXNlZCBvbiB0aGUgcmF0ZSB0aGF0IHdhcyByZWNhbGN1bGF0ZWQgZm9yIHBs bC1taXBpLCB3aGljaCAtIGluIHR1cm4gLQo+PiA+IHdhcyBvZiBjb3Vyc2UgcmVjYWxjdWxhdGVk IGJhc2VkIG9uIHRoZSBwbGwtdmlkZW8wJ3MgbmV3IHJhdGUuIFRoZXNlCj4+ID4gdmFsdWVzIGFy ZSBzdG9yZWQgYnkgdGhlIGNsayBmcmFtZXdvcmsgaW4gYSBwcml2YXRlIHN0cnVjdC4gVGhleSBh cmUKPj4gPiBjYWxjdWxhdGVkIGJlZm9yZSBhY3R1YWxseSBwZXJmb3JtaW5nIGFueSByYXRlIGNo YW5nZXMuCj4+ID4KPj4gPiBTbywgaWYgYSBub3RpZmllciBzZXRzIHBsbC1taXBpJ3MgcmF0ZSB0 byBzb21ldGhpbmcgZWxzZSB0aGFuIHdhcwo+PiA+IHByZXZpb3VzbHkgcmVjYWxjdWxhdGVkLCB0 aGUgY2xrIGZyYW1ld29yayB3b3VsZCBzdGlsbCB0cnkgdG8gc2V0IHRjb24wCj4+ID4gdG8gdGhl IHZhbHVlIHRoYXQgaXQgcHJldmlvdXNseSBjYWxjdWxhdGVkLgo+PiA+Cj4+ID4gU28sIHdlIHdv dWxkIGhhdmUgdG8gcmVjYWxjdWxhdGUgcGxsLW1pcGkncyBzdWJ0cmVlIGFmdGVyIGNoYW5naW5n IGl0cwo+PiA+IHJhdGUgKHRoYXQncyB3aGF0IFBBVENIIDEgaXMgZG9pbmcpLgo+Pgo+PiBTb3Jy eSwgSSBmb3Jnb3QgdGhhdCB0aGlzIGFjdHVhbGx5IHdhcyBwb3NzaWJsZSBieSBmbGFnZ2luZyBw bGwtbWlwaQo+PiB3aXRoIENMS19SRUNBTENfTkVXX1JBVEVTLiBCdXQgdGhlIHJlYWwgcHJvYmxl bSBJIHdhcyBmaWdodGluZyB3aXRoIHdoZW4KPj4gdHJ5aW5nIHRvIHVzZSB0aGUgbm90aWZpZXJz IGlzIHNvbWV0aGluZyBlbHNlLgo+Pgo+PiBJbml0aWFsbHksIHBsbC12aWRlbzAgaXMgc2V0IGJ5 IHRoZSBib290bG9hZGVyLiBJbiBteSBjYXNlIHVib290IHNldHMgaXQKPj4gdG8gMjk0IE1Iei4g cGxsLW1pcGkgaXMgc2V0IHRvIDU4OCBNSHouCj4+Cj4+IEFmdGVyd2FyZCwgdGhlcmUgYXJlIGFj dHVhbGx5IHR3byB0eXBlcyBvZiBjYWxscyBmb3Igc2V0dGluZyBwbGwtbWlwaSBpbgo+PiBteSBz Y2VuYXJpbzoKPj4gIDEuIGR1cmluZyBib290IHdoZW4gdGNvbi1kYXRhLWNsb2NrIGlzIHNldCB0 byBkcml2ZSB0aGUgTENEIHBhbmVsCj4+ICAyLiB3aGVuIHRoZSBIRE1JIGNhYmxlIGlzIHBsdWdn ZWQgaW4KPgo+IE5vdCByZWFsbHkuIEJvdGggb2YgdGhvc2UgY2xvY2tzIGNhbiBjaGFuZ2UgKG9y IG5vdCkgYXQgYW55IHBvaW50IGluCj4gdGltZS4gV2hhdCB0cmlnZ2VycyB0aGUgcmF0ZSBzZXQg aXMgYSBtb2Rlc2V0IHdoaWNoIG1pZ2h0IG5ldmVyIGhhcHBlbgo+IChpZiB0aGUgZGlzcGxheSBk cml2ZXIgb3Igb3V0cHV0IGlzIGRpc2FibGVkLCBpZiB0aGUgZmJkZXYgZW11bGF0aW9uIGlzCj4g ZGlzYWJsZWQgb3IgaWYgdGhlcmUncyBuZXZlciBhIGNvbXBvc2l0b3Igc3RhcnRpbmcpIG9yIHBv c3NpYmx5IGhhcHBlbgo+IGVhY2ggZnJhbWUgb24gYm90aCBvdXRwdXQgZm9yIGFsbCB5b3Uga25v dy4KCk9rLCB0aGFuayB5b3UgZm9yIHRoZSBleHBsYW5hdGlvbiBhbmQgSSBhcG9sb2dpemUgZm9y IG5vdCBoYXZpbmcgdGhlCnRlcm1pbm9sb2d5IHN0cmFpZ2h0LiBUaGlzIHdvdWxkIG1lYW4gdGhh dCBpbiBteSBkZXNjcmlwdGlvbiBhYm92ZSB0aGVyZQphcmUgdHdvIG1vZGVzZXRzIHRoYXQgdHJp Z2dlciB0aGUgcmF0ZSBzZXQKIDEuIGZvciB0aGUgdGNvbi1kYXRhLWNsb2NrIG9uIGJvb3Qgd2hl biB0aGUgaW50ZXJuYWwgZGlzcGxheSBpcwogICAgYWN0aXZhdGVkIGFuZAogMi4gZm9yIGhkbWkg d2hlbiB0aGUgZXh0ZXJuYWwgbW9uaXRvciBpcyBhY3RpdmF0ZWQuCgpGb3IgcmVmZXJlbmNlOiBJ biBteSBzY2VuYXJpbyBJJ20gdXNpbmcgYSBwaW5lcGhvbmUgd2hpY2ggaGFzIGFuCmludGVybmFs IExDRCBkaXNwbGF5IGFuZCBhbiBIRE1JIGNvbm5lY3RvciAobm90IHN1cHBvcnRlZCBpbiBtYWlu bGluZSkuCgpJIHVuZGVyc3RhbmQgdGhhdCB0aGVyZSBjb3VsZCBiZSBtb3JlLiBMZXQncyBwdXQg YSBwaW4gaW4gdGhhdCwgYmVjYXVzZQpteSB1bmRlcnN0YW5kaWcgaXMsIHRoYXQgdGhpcyBpcyBu b3QgdGhlIHJlbGV2YW50IHBhcnQgaGVyZS4KCj4+IEluIHRoZSBmaXJzdCBjYXNlLCB0aGUgcmF0 ZSBmb3IgcGxsLW1pcGkgaXMgYmFzZWQgb24gdGhlIHJhdGUgdGhhdAo+PiB0Y29uLWRhdGEtY2xv Y2sgcmVxdWVzdHMuIEluIHRoYXQgY2FzZSwgd2UgZG8gbm90IHdhbnQgdG8gcmVzdG9yZSB0aGUK Pj4gcHJldmlvdXMgcmF0ZS4KPj4KPj4gSW4gdGhlIHNlY29uZCBjYXNlLCBwbGwtbWlwaSBzaG91 bGQgdHJ5IHRvIHJlbWFpbiBydW5uaW5nIGF0IHRoZQo+PiBwcmV2aW91cyByYXRlICh0aGUgb25l IHRoYXQgd2FzIHJlcXVlc3RlZCBieSB0Y29uLWRhdGEtY2xvY2spLiBUaGF0J3MKPj4gdGhlIHJl YXNvbiBmb3Igc2V0dGluZyBjb3JlLT5yZXFfcmF0ZSBpbiBQQVRDSCAxLgo+Pgo+PiBVbmZvcnR1 bmF0ZWx5LCB0aGUgbm90aWZpZXIgZG9lcyBub3QgcHJvdmlkZSB1cyB3aXRoIGVub3VnaCBjb250 ZXh0IHRvCj4+IGRpc3Rpbmd1aXNoIHRoZSB0d28gY2FzZXMuCj4KPiBJIGRvbid0IHRoaW5rIGFu eSBwaWVjZSBvZiBjb2RlIHdpbGwgYmUgYWJsZSB0bywgcmVhbGx5LgoKSW4gdGhlIGZpcnN0IGNh c2UsIHNldHRpbmcgdGhlIHBsbC1taXBpIGNsb2NrIHN0YXJ0cyBmcm9tIHRoZSBib3R0b20KKHRj b24tZGF0YS1jbG9jaykgYW5kIHVzZXMgY2xrX2NhbGNfbmV3X3JhdGVzKCkgdG8gZ2V0IHRvIHRo ZSB0b3AtbW9zdApjbG9jayB0aGF0IG5lZWRzIGFuZCBjYW4gYmUgY2hhbmdlZC4gT24gaXQncyB3 YXkgdXAgdG8gcGxsLXZpZGVvMCBpdApwYXNzZXMgcGxsLW1pcGkuIE15IHByb3Bvc2FsIChQQVRD SCAxKSBpcyB0byB1c2UgdGhhdCBtb21lbnQgdG8gc3RvcmUKdGhlIHJhdGUgaW4gcmVxX3JhdGUu CgpJbiBjb250cmFzdCwgaW4gdGhlIHNlY29uZCBjYXNlLCBzZXR0aW5nIHRoZSBwbGwtbWlwaSBj bG9jayBzdGFydHMgZnJvbQp0aGUgdG9wLiBwbGwtdmlkZW8wJ3MgcmF0ZSBpcyBjaGFuZ2VkIGFu ZCB0aGVyZWZvcmUgYSBuZXcgcmF0ZSBpcwpwcm9wYWdhdGUgZm9yIHRoZSB3aG9sZSBzdWJ0cmVl IHdoZXJlLCBvbiBpdHMgd2F5IGRvd24sIGl0IHBhc3NlcwpwbGwtbWlwaS4gTXkgcHJvcG9zYWwg KFBBVENIIDEpIGlzIHRvIHVzZSB0aGF0IG1vbWVudCB0byByZXN0b3JlIHRoZQpyYXRlIGZyb20g cmVxX3JhdGUgdGhhdCB3YXMgcHJldmlvdXNseSAoc2VlIHByYWdyYXBoIGFib3ZlKSBzZXQuCgpT aW5jZSBJIGRpZCBub3Qgc2VlIGEgd2F5IHRvIGFjaGlldmUgdGhpcyB1c2luZyBub3RpZmllcnMg KGFuZCB5b3Ugc2VlbQp0byBhZ3JlZSksIEkgY2hvc2UgdG8gcHJvcG9zZSBhIGRpZmZlcmVudCBw YXRoLgoKPiBZb3VyIGRlZmluaXRpb24gb2YgQ0xLX0tFRVBfUkFURSBpcyB0aGF0IGl0IHdpbGwg InRyeSB0byBrZWVwIHJhdGUsIGlmCj4gcGFyZW50IHJhdGUgY2hhbmdlcyIKPgo+IFdoYXQgaGFw cGVucyBpZiBpdCBmYWlscywgcG9zc2libHkgYmVjYXVzZSBvZiByb3VuZGluZyBsaWtlIHlvdQo+ IG1lbnRpb25lZCBhbHJlYWR5PwoKTWF5YmUgImtlZXAiIGlzIHRvbyBzdHJvbmcgb2YgYSB3b3Jk LiBJJ20gc29ycnkgZm9yIHRoZSBjb25mdXNpb24gbXkKcG9vciBjaG9pY2Ugb2Ygd29yZGluZyBo YXMgY2F1c2VkLgoKV2hhdCBJIHdvdWxkIGxpa2UgaWYgZm9yIGEgY2xvY2sgdG8gZ28gYmFjayBh cyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRvCnRoZSBwcmV2aW91cyByYXRlLiBBbmQgdGhpcyBpcyB3 aGF0IFBBVENIIDEgZG9lcyBieSB1c2luZyB0aGUgY2xvY2tzCmRldGVybWluZV9yYXRlIChvciBy b3VuZF9yYXRlKSBvcGVyYXRpb24uCgo+IEZ1bmRhbWVudGFsbHksIHRoZSBwcm9ibGVtIGlzIHRo YXQgeW91IG5lZWQgZGlmZmVyZW50IHJhdGVzIG9uIHR3bwo+IHN1YnRyZWVzLCBhbmQgd2Ugc2V0 IGJvdGggdG8gaGF2ZSBDTEtfU0VUX1JBVEVfUEFSRU5UIGFuZCBhbGxvdyBib3RoIHRvCj4gY2hh bmdlIHRoZSBwYXJlbnQgcmF0ZSBpZiBuZWVkZWQuCgpUaGlzIHJlYWRzIHRvIG1lIGFzIGlmIHlv dSBhcmUgZW1waGFzaXppbmcgdGhlIHdvcmQgImJvdGgiIGhlcmUuIEknbQphd2FyZSB0aGF0IHlv dSBrbm93LCBidXQgSSBzdGF0ZSBpdCBoZXJlIGZvciB0aGUgYmVuZWZpdCBvZiBvdGhlcnM6IFVw CnVudGlsIGtlcm5lbCA2LjUgb25seSBoZG1pIHJlc2V0cyBwbGwtdmlkZW8wLiBwbGwtbWlwaSBk b2VzIG5vdCBzZXQKcGxsLXZpZGVvMC4gVGhpcyBoYXMgY2hhbmdlZCBpbiBjbGstbmV4dC4gTm93 IGFsc28gcGxsLW1pcGkgc2V0cyB0aGUKcGFyZW50IHJhdGUuCgpJY2Vub3d5J3MgcGF0Y2hlcyBh cmUgYWltZWQgYXQgKGFuZCB3b3JrIGZvcikgdXAgdG8ga2VybmVsIDYuNS4gVGhleQpyZXN0b3Jl IHBsbC1taXBpJ3MgcmF0ZSBhZnRlciBwbGwtdmlkZW8wIGhhcyBiZWVuIGNoYW5nZWQgYnkgaGRt aS4KCj4gV2hhdCB3b3VsZCBoYXBwZW4gaWYgd2UgZm9yY2UgcGxsLXZpZGVvMCB0byBhIGtub3du LCBmaXhlZCwgdmFsdWUgYW5kCj4gcmVtb3ZlIENMS19TRVRfUkFURV9QQVJFTlQgZnJvbSBib3Ro IHRoZSBwbGwtbWlwaSBhbmQgaGRtaSBjbG9ja3M/CgpBcHByb3hpbWF0ZWx5IHRocmVlIG1vbnRo cyBhZ28sIEkgd3JvdGUgIm9uZSBjb3VsZCBhcmd1ZSB0aGF0IHBsbC12aWRlbzAKc2hvdWxkIGJl IHNldCB0byAyOTdNSHogYXQgYm9vdCIsIHRvIHdoaWNoIEplcm5laiByZXNwb25kZWQ6ICJJZGVh bGx5LApjbG9jayByYXRlIHNldHRpbmcgY29kZSBzaG91bGQgYmUgaW1tdW5lIG9uICJpbml0aWFs IiB2YWx1ZXMsIHNldCBieQpib290bG9hZGVyIG9yIGRlZmF1bHQgdmFsdWVzLiBJZiBpdCdzIG5v dCwgdGhlbiBpdCBzaG91bGQgYmUgaW1wcm92ZWQgaW4KdGhlIHdheSB0aGF0IGl0IGlzLiI6Cmh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWNsay80ODMxNzMxLjMxcjNlWVVRZ3hAamVybmVq LWxhcHRvcC8jdAoKVGhhdCdzIHdoYXQgZ290IG1lIHN0YXJ0ZXQgb24gdGhlIHdob2xlIHByb2Nl c3Mgb2YgYWxsb3dpbmcgcGxsLW1pcGkgdG8Kc2V0IGl0J3MgcGFyZW50IGluc3RlYWQgb2Ygc2lt cGx5IHNldHRpbmcgaXQgdG8gYSBrbm93biByYXRlIG9mIDI5NyBNSHouCgpTaG91bGQgSSByZXN1 bWUgdGhlIG90aGVyICgyOTdNSHopIGludmVzdGlnYXRpb24/CgpJIGhhZCBhbm90aGVyIGlkZWEs IGJ1dCBkb24ndCBrbm93IGhvdy9pZiB0aGF0J3MgcG9zc2libGU6IE1heWJlIHdlCmNvdWxkIHVz ZSBhIG5vdGlmaWVyIHRvIG5vdGlmeSBwbGwtbWlwaSAob3IgZXZlbiBiZXR0ZXI6CnRjb24tZGF0 YS1jbG9jaykgYW5kIHVzZSBzb21lIG1lY2hhbmlzbSB0byBkZWZlciBjYWxsaW5nIGNsa19zZXRf cmF0ZSgpCnRvIGEgcG9pbnQgaW4gdGltZSB3aGVuIHRoZSB3aG9sZSBwcm9jZXNzIG9mIHNldHRp bmcgdGhlIGNsb2NrcyBpcwpjb21wbGV0ZS4KCkJlc3QgcmVnYXJkcywKICBGcmFuawoKCj4KPiBN YXhpbWUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK