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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8AC91C4167B for ; Fri, 9 Dec 2022 16:31:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229604AbiLIQbM (ORCPT ); Fri, 9 Dec 2022 11:31:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229470AbiLIQbK (ORCPT ); Fri, 9 Dec 2022 11:31:10 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 272F285D08; Fri, 9 Dec 2022 08:31:07 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A5AEA62086; Fri, 9 Dec 2022 16:31:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9DD61C433D2; Fri, 9 Dec 2022 16:31:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670603466; bh=CrsN70tzxNPFnIPgooUqIeKbdNwzxazgCygNJ9rpjl0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=TTwjopn4Ryhmuk9UVzJyXCvzn55rgfLfErBS7J80wtyuvdYVH001ybdQ1L14PTu6K aXSE5/Z/EWjmemGnz9KXm1Lv4MpsD2iUFCy/JVBPnISTJ5oq4pvnyQlWUliL9YhgVW uEp2cE3OOm+GC5Wv+iL7OK/v97FAhIOQuipn/Oqin4TbzIXziFFsVL41qUhvUzewFH bH6+fB6u8J7L53Sylx8Kso1xA2+5KEgwV+YI9A5y+zuGEXlMetOCLlfj6Y7wt9dsZA nq2uR6+UiiZOOeWoJL6btts93lHXA9KtOpq+sJeOlgX96kCqmyx5qhtXYyjL3oqF0y U82sWQvMl/hjg== Date: Fri, 9 Dec 2022 08:31:04 -0800 From: Jakub Kicinski To: Maciek Machnikowski Cc: Jiri Pirko , "'Kubalewski, Arkadiusz'" , 'Vadim Fedorenko' , 'Jonathan Lemon' , 'Paolo Abeni' , netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org Subject: Re: [RFC PATCH v4 0/4] Create common DPLL/clock configuration API Message-ID: <20221209083104.2469ebd6@kernel.org> In-Reply-To: References: <20221129213724.10119-1-vfedorenko@novek.ru> <20221206184740.28cb7627@kernel.org> <10bb01d90a45$77189060$6549b120$@gmail.com> <20221207152157.6185b52b@kernel.org> <6e252f6d-283e-7138-164f-092709bc1292@machnikowski.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Fri, 9 Dec 2022 15:09:08 +0100 Maciek Machnikowski wrote: > On 12/9/2022 12:07 PM, Jiri Pirko wrote: > > Looking at the documentation of the chips, they all have mupltiple DPLLs > > on a die. Arkadiusz, in your proposed implementation, do you model each > > DPLL separatelly? If yes, then I understand the urgency of need of a > > shared pin. So all DPLLs sharing the pin are part of the same chip? > >=20 > > Question: can we have an entity, that would be 1:1 mapped to the actual > > device/chip here? Let's call is "a synchronizer". It would contain > > multiple DPLLs, user-facing-sources(input_connector), > > user-facing-outputs(output_connector), i/o pins. > >=20 > > An example: > > SYNCHRONIZER > >=20 > > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=90 > > =E2=94=82 = =E2=94=82 > > =E2=94=82 = =E2=94=82 > > SyncE in connector =E2=94=82 =E2=94=8C=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=90 =E2=94=82 SyncE out connector > > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82in pin 1 =E2=94=82DPLL_1 =E2=94=82 out pin 1=E2=94=82 = =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=90 > > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=A4 =E2=94=9C=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=A4 =E2=94=82 > > =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 > > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 > > =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 > > =E2=94=82 =E2=94=8C=E2=94=80=E2= =94=80=E2=94=A4 =E2=94=82 =E2=94=82 > > GNSS in connector =E2=94=82 =E2=94=82 =E2=94=94= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=98 =E2=94=82 > > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82in pin 2 =E2=94=82 out pin 2=E2=94=82 EXT S= MA connector > > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=98 =E2=94=82 =E2=94=8C=E2=94=80= =E2=94=80=E2=94=80=E2=94=90 > > =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=A4 =E2=94=82 > > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94= =82 =E2=94=82 > > =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 > > =E2=94=82 =E2= =94=82 =E2=94=82 > > EXT SMA connector =E2=94=82 =E2= =94=82 =E2=94=82 > > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=90 mux = =E2=94=82in pin 3 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2= =94=82 > > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=AC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 > > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82DPLL_2 =E2=94=82 =E2=94=82 =E2=94=82 > > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94= =82 =E2=94=82 > > =E2=94=82 =E2=94=82 =E2=94=94=E2= =94=80=E2=94=80=E2=94=A4 =E2=94=9C=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 > > =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 > > EXT SMA connector =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 > > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 > > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=98 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 > > =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 > > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 > >=20 > > Do I get that remotelly correct? =20 >=20 > It looks goot, hence two corrections are needed: > - all inputs can go to all DPLLs, and a single source can drive more > than one DPLL > - The external mux for SMA connector should not be a part of the > Synchronizer subsystem - I believe there's already a separate MUX > subsystem in the kernel and all external connections should be handled > by a devtree or a similar concept. >=20 > The only "muxing" thing that could potentially be modeled is a > synchronizer output to synchronizer input relation. Some synchronizers > does that internally and can use the output of one DPLL as a source for > another. My experience with DT and muxes is rapidly aging, have you worked with those recently? From what I remember the muxes were really.. "embedded" and static compared to what we want here. Using DT may work nicely for defining the topology, but for config we still need a different mechanism. > > synch > > synchronizer_register(synch) > > dpll_1 > > synchronizer_dpll_register(synch, dpll_1) > > dpll_2 > > synchronizer_dpll_register(synch, dpll_2) > > source_pin_1 > > synchronizer_pin_register(synch, source_pin_1) > > output_pin_1 > > synchronizer_pin_register(synch, output_pin_1) > > output_pin_2 > > synchronizer_pin_register(synch, output_pin_2) > >=20 > > synch_board > > synchronizer_board_register(synch_board) > > synch > > synchronizer_board_sync_register(synch_board, synch) > > source_connector_1 > > synchronizer_board_connector_register(synch_board, source_connector_= 1, source_pin_1) > > output_connector_1 > > synchronizer_board_connector_register(synch_board, output_connector_= 1, output_pin_1) > > output_connector_2 > > synchronizer_board_connector_register(synch_board, output_connector_= 2, output_pin_2) =20 >=20 > I'd rather not use pins at all - just stick to sources and outputs. Both > can use some labels to be identifiable. TBH I can't comprehend your suggestion. IIUC you want an object for a source, but my brain can't handle modeling an external object. For instance the source could be GNSS,=20 but this is not the GNSS subsystem. We have a pin connected to GNSS, not the GNSS itself.=20 Maybe a diagram would help? 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 E56F7C4332F for ; Fri, 9 Dec 2022 16:32:19 +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=gjfyuVQeWqnI7aPOhjkEbDKpbkX+4KGKQmtl6lHTs6E=; b=D8X1fBfCG6Vo4s om3EgZBv8WbBApFNM2RNA0x2oxgZbP/0SILz2r/oApWZ0qcxE7DWGxVOUHjl9fHEjQLIrDHBr2gAk FpNTrw6uWHjK+uIU7UdDxQsx8W97xQbnKeOSQSFokD+Z/j8LCGMQHqQk1Lp/HBjYyMrZzbE0bLx7H IJFc3Ia7v8HwpbYCxkOVYpCrvm2UXtXRfeQy7Gvj4A7Z3u3+PqSVrM3eUpTenhMXm/YlnVTZGcb/F /WWYR7gM23GMokFg6aB6J6WDTCNn5klR5c8lKbETetL7Cp6EfZ/vA0DYjsOZ9ySmHzvg518296HK4 t4taLWDB5wb2U2u2yRGg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p3gHI-009V5F-N8; Fri, 09 Dec 2022 16:31:12 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p3gHF-009V37-9p for linux-arm-kernel@lists.infradead.org; Fri, 09 Dec 2022 16:31:11 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 4ECDEB82894; Fri, 9 Dec 2022 16:31:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9DD61C433D2; Fri, 9 Dec 2022 16:31:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670603466; bh=CrsN70tzxNPFnIPgooUqIeKbdNwzxazgCygNJ9rpjl0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=TTwjopn4Ryhmuk9UVzJyXCvzn55rgfLfErBS7J80wtyuvdYVH001ybdQ1L14PTu6K aXSE5/Z/EWjmemGnz9KXm1Lv4MpsD2iUFCy/JVBPnISTJ5oq4pvnyQlWUliL9YhgVW uEp2cE3OOm+GC5Wv+iL7OK/v97FAhIOQuipn/Oqin4TbzIXziFFsVL41qUhvUzewFH bH6+fB6u8J7L53Sylx8Kso1xA2+5KEgwV+YI9A5y+zuGEXlMetOCLlfj6Y7wt9dsZA nq2uR6+UiiZOOeWoJL6btts93lHXA9KtOpq+sJeOlgX96kCqmyx5qhtXYyjL3oqF0y U82sWQvMl/hjg== Date: Fri, 9 Dec 2022 08:31:04 -0800 From: Jakub Kicinski To: Maciek Machnikowski Cc: Jiri Pirko , "'Kubalewski, Arkadiusz'" , 'Vadim Fedorenko' , 'Jonathan Lemon' , 'Paolo Abeni' , netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org Subject: Re: [RFC PATCH v4 0/4] Create common DPLL/clock configuration API Message-ID: <20221209083104.2469ebd6@kernel.org> In-Reply-To: References: <20221129213724.10119-1-vfedorenko@novek.ru> <20221206184740.28cb7627@kernel.org> <10bb01d90a45$77189060$6549b120$@gmail.com> <20221207152157.6185b52b@kernel.org> <6e252f6d-283e-7138-164f-092709bc1292@machnikowski.net> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221209_083109_674140_DAF5E589 X-CRM114-Status: GOOD ( 25.02 ) 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 T24gRnJpLCA5IERlYyAyMDIyIDE1OjA5OjA4ICswMTAwIE1hY2llayBNYWNobmlrb3dza2kgd3Jv dGU6Cj4gT24gMTIvOS8yMDIyIDEyOjA3IFBNLCBKaXJpIFBpcmtvIHdyb3RlOgo+ID4gTG9va2lu ZyBhdCB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgY2hpcHMsIHRoZXkgYWxsIGhhdmUgbXVwbHRp cGxlIERQTExzCj4gPiBvbiBhIGRpZS4gQXJrYWRpdXN6LCBpbiB5b3VyIHByb3Bvc2VkIGltcGxl bWVudGF0aW9uLCBkbyB5b3UgbW9kZWwgZWFjaAo+ID4gRFBMTCBzZXBhcmF0ZWxseT8gSWYgeWVz LCB0aGVuIEkgdW5kZXJzdGFuZCB0aGUgdXJnZW5jeSBvZiBuZWVkIG9mIGEKPiA+IHNoYXJlZCBw aW4uIFNvIGFsbCBEUExMcyBzaGFyaW5nIHRoZSBwaW4gYXJlIHBhcnQgb2YgdGhlIHNhbWUgY2hp cD8KPiA+IAo+ID4gUXVlc3Rpb246IGNhbiB3ZSBoYXZlIGFuIGVudGl0eSwgdGhhdCB3b3VsZCBi ZSAxOjEgbWFwcGVkIHRvIHRoZSBhY3R1YWwKPiA+IGRldmljZS9jaGlwIGhlcmU/IExldCdzIGNh bGwgaXMgImEgc3luY2hyb25pemVyIi4gSXQgd291bGQgY29udGFpbgo+ID4gbXVsdGlwbGUgRFBM THMsIHVzZXItZmFjaW5nLXNvdXJjZXMoaW5wdXRfY29ubmVjdG9yKSwKPiA+IHVzZXItZmFjaW5n LW91dHB1dHMob3V0cHV0X2Nvbm5lY3RvciksIGkvbyBwaW5zLgo+ID4gCj4gPiBBbiBleGFtcGxl Ogo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTkNIUk9OSVpFUgo+ID4gCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIOKUggo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCCj4gPiAgIFN5bmNFIGluIGNvbm5lY3RvciAg ICAgICAgICDilIIgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU kCAgICAgICAgICAgICAg4pSCICAgICBTeW5jRSBvdXQgY29ubmVjdG9yCj4gPiAgICAgICAgICAg ICAgICAg4pSM4pSA4pSA4pSA4pSQICAgICAgICAg4pSCaW4gcGluIDEgICAgICDilIJEUExMXzEg ICDilIIgICAgIG91dCBwaW4gMeKUgiAgICDilIzilIDilIDilIDilJAKPiA+ICAgICAgICAgICAg ICAgICDilIIgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQgICAgICAgICDilJzilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilKQgICDilIIKPiA+ ICAgICAgICAgICAgICAgICDilIIgICDilIIgICAgICAgICDilIIgICAgICAgICAgICAgIOKUgiAg ICAgICAgIOKUgiAgICAgICAgICAgICAg4pSCICAgIOKUgiAgIOKUggo+ID4gICAgICAgICAgICAg ICAgIOKUlOKUgOKUgOKUgOKUmCAgICAgICAgIOKUgiAgICAgICAgICAgICAg4pSCICAgICAgICAg 4pSCICAgICAgICAgICAgICDilIIgICAg4pSU4pSA4pSA4pSA4pSYCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICDilIIgICAgICAgICAgICAgIOKUgiAgICAgICAgIOKUgiAgICAgICAg ICAgICAg4pSCCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAgICAgICAg IOKUjOKUgOKUgOKUpCAgICAgICAgIOKUgiAgICAgICAgICAgICAg4pSCCj4gPiAgICBHTlNTIGlu IGNvbm5lY3RvciAgICAgICAgICDilIIgICAgICAgICAgIOKUgiAg4pSU4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSYICAgICAgICAgICAgICDilIIKPiA+ICAgICAgICAgICAgICAgICDilIzi lIDilIDilIDilJAgICAgICAgICDilIJpbiBwaW4gMiAgIOKUgiAgICAgICAgICAgICAgICAgIG91 dCBwaW4gMuKUgiAgICAgRVhUIFNNQSBjb25uZWN0b3IKPiA+ICAgICAgICAgICAgICAgICDilIIg ICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJggICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAg4pSM4pSA4pSA 4pSA4pSQCj4gPiAgICAgICAgICAgICAgICAg4pSCICAg4pSCICAgICAgICAg4pSCICAgICAgICAg ICAgICAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS8 4pSA4pSA4pSA4pSA4pSkICAg4pSCCj4gPiAgICAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSY ICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgICDilIIg ICAg4pSCICAg4pSCCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAgICAg ICAgICAgICAgICAgICAgICAgICDilIIgICAgICAgICAgIOKUgiAgICDilJTilIDilIDilIDilJgK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAg ICAgICAgIOKUgiAgICAgICAgICAg4pSCCj4gPiAgICBFWFQgU01BIGNvbm5lY3RvciAgICAgICAg ICDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAgICAgICAgIOKUggo+ID4gICAg ICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUkCAgIG11eCAgIOKUgmluIHBpbiAzICAgICAg4pSM 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICDilIIgICAgICAgICAgIOKUggo+ID4gICAg ICAgICAgICAgICAgIOKUgiAgIOKUnOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUvOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAg4pSCICAgICAgICAg4pSCICDilIIgICAg ICAgICAgIOKUggo+ID4gICAgICAgICAgICAgICAgIOKUgiAgIOKUgiAgICDilIIgICAg4pSCICAg ICAgICAgICDilIIgIOKUgkRQTExfMiAgIOKUgiAg4pSCICAgICAgICAgICDilIIKPiA+ICAgICAg ICAgICAgICAgICDilJTilIDilIDilIDilJggICAg4pSCICAgIOKUgiAgICAgICAgICAg4pSCICDi lIIgICAgICAgICDilIIgIOKUgiAgICAgICAgICAg4pSCCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAg4pSCICAgIOKUgiAgICAgICAgICAg4pSU4pSA4pSA4pSkICAgICAgICAg4pSc4pSA4pSA 4pSYICAgICAgICAgICDilIIKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAg4pSC ICAgICAgICAgICAgICDilIIgICAgICAgICDilIIgICAgICAgICAgICAgIOKUggo+ID4gICAgRVhU IFNNQSBjb25uZWN0b3IgICAgIOKUgiAgICDilIIgICAgICAgICAgICAgIOKUgiAgICAgICAgIOKU giAgICAgICAgICAgICAg4pSCCj4gPiAgICAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSQICAg IOKUgiAgICDilIIgICAgICAgICAgICAgIOKUgiAgICAgICAgIOKUgiAgICAgICAgICAgICAg4pSC Cj4gPiAgICAgICAgICAgICAgICAg4pSCICAg4pSc4pSA4pSA4pSA4pSA4pSYICAgIOKUgiAgICAg ICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAgICAgICAgICDi lIIKPiA+ICAgICAgICAgICAgICAgICDilIIgICDilIIgICAgICAgICDilIIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKPiA+ICAgICAgICAgICAgICAgICDilJTilIDi lIDilIDilJggICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilJgKPiA+IAo+ID4gRG8gSSBnZXQgdGhhdCByZW1vdGVs bHkgY29ycmVjdD8gIAo+IAo+IEl0IGxvb2tzIGdvb3QsIGhlbmNlIHR3byBjb3JyZWN0aW9ucyBh cmUgbmVlZGVkOgo+IC0gYWxsIGlucHV0cyBjYW4gZ28gdG8gYWxsIERQTExzLCBhbmQgYSBzaW5n bGUgc291cmNlIGNhbiBkcml2ZSBtb3JlCj4gICB0aGFuIG9uZSBEUExMCj4gLSBUaGUgZXh0ZXJu YWwgbXV4IGZvciBTTUEgY29ubmVjdG9yIHNob3VsZCBub3QgYmUgYSBwYXJ0IG9mIHRoZQo+ICAg U3luY2hyb25pemVyIHN1YnN5c3RlbSAtIEkgYmVsaWV2ZSB0aGVyZSdzIGFscmVhZHkgYSBzZXBh cmF0ZSBNVVgKPiAgIHN1YnN5c3RlbSBpbiB0aGUga2VybmVsIGFuZCBhbGwgZXh0ZXJuYWwgY29u bmVjdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQKPiAgIGJ5IGEgZGV2dHJlZSBvciBhIHNpbWlsYXIg Y29uY2VwdC4KPiAKPiBUaGUgb25seSAibXV4aW5nIiB0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlh bGx5IGJlIG1vZGVsZWQgaXMgYQo+IHN5bmNocm9uaXplciBvdXRwdXQgdG8gc3luY2hyb25pemVy IGlucHV0IHJlbGF0aW9uLiBTb21lIHN5bmNocm9uaXplcnMKPiBkb2VzIHRoYXQgaW50ZXJuYWxs eSBhbmQgY2FuIHVzZSB0aGUgb3V0cHV0IG9mIG9uZSBEUExMIGFzIGEgc291cmNlIGZvcgo+IGFu b3RoZXIuCgpNeSBleHBlcmllbmNlIHdpdGggRFQgYW5kIG11eGVzIGlzIHJhcGlkbHkgYWdpbmcs IGhhdmUgeW91IHdvcmtlZCB3aXRoCnRob3NlIHJlY2VudGx5PyBGcm9tIHdoYXQgSSByZW1lbWJl ciB0aGUgbXV4ZXMgd2VyZSByZWFsbHkuLiAiZW1iZWRkZWQiCmFuZCBzdGF0aWMgY29tcGFyZWQg dG8gd2hhdCB3ZSB3YW50IGhlcmUuCgpVc2luZyBEVCBtYXkgd29yayBuaWNlbHkgZm9yIGRlZmlu aW5nIHRoZSB0b3BvbG9neSwgYnV0IGZvciBjb25maWcgd2UKc3RpbGwgbmVlZCBhIGRpZmZlcmVu dCBtZWNoYW5pc20uCgo+ID4gc3luY2gKPiA+IHN5bmNocm9uaXplcl9yZWdpc3RlcihzeW5jaCkK PiA+ICAgIGRwbGxfMQo+ID4gICAgc3luY2hyb25pemVyX2RwbGxfcmVnaXN0ZXIoc3luY2gsIGRw bGxfMSkKPiA+ICAgIGRwbGxfMgo+ID4gICAgc3luY2hyb25pemVyX2RwbGxfcmVnaXN0ZXIoc3lu Y2gsIGRwbGxfMikKPiA+ICAgIHNvdXJjZV9waW5fMQo+ID4gICAgc3luY2hyb25pemVyX3Bpbl9y ZWdpc3RlcihzeW5jaCwgc291cmNlX3Bpbl8xKQo+ID4gICAgb3V0cHV0X3Bpbl8xCj4gPiAgICBz eW5jaHJvbml6ZXJfcGluX3JlZ2lzdGVyKHN5bmNoLCBvdXRwdXRfcGluXzEpCj4gPiAgICBvdXRw dXRfcGluXzIKPiA+ICAgIHN5bmNocm9uaXplcl9waW5fcmVnaXN0ZXIoc3luY2gsIG91dHB1dF9w aW5fMikKPiA+IAo+ID4gc3luY2hfYm9hcmQKPiA+ICAgIHN5bmNocm9uaXplcl9ib2FyZF9yZWdp c3RlcihzeW5jaF9ib2FyZCkKPiA+ICAgIHN5bmNoCj4gPiAgICBzeW5jaHJvbml6ZXJfYm9hcmRf c3luY19yZWdpc3RlcihzeW5jaF9ib2FyZCwgc3luY2gpCj4gPiAgICBzb3VyY2VfY29ubmVjdG9y XzEKPiA+ICAgIHN5bmNocm9uaXplcl9ib2FyZF9jb25uZWN0b3JfcmVnaXN0ZXIoc3luY2hfYm9h cmQsIHNvdXJjZV9jb25uZWN0b3JfMSwgc291cmNlX3Bpbl8xKQo+ID4gICAgb3V0cHV0X2Nvbm5l Y3Rvcl8xCj4gPiAgICBzeW5jaHJvbml6ZXJfYm9hcmRfY29ubmVjdG9yX3JlZ2lzdGVyKHN5bmNo X2JvYXJkLCBvdXRwdXRfY29ubmVjdG9yXzEsIG91dHB1dF9waW5fMSkKPiA+ICAgIG91dHB1dF9j b25uZWN0b3JfMgo+ID4gICAgc3luY2hyb25pemVyX2JvYXJkX2Nvbm5lY3Rvcl9yZWdpc3Rlcihz eW5jaF9ib2FyZCwgb3V0cHV0X2Nvbm5lY3Rvcl8yLCBvdXRwdXRfcGluXzIpICAKPiAKPiBJJ2Qg cmF0aGVyIG5vdCB1c2UgcGlucyBhdCBhbGwgLSBqdXN0IHN0aWNrIHRvIHNvdXJjZXMgYW5kIG91 dHB1dHMuIEJvdGgKPiBjYW4gdXNlIHNvbWUgbGFiZWxzIHRvIGJlIGlkZW50aWZpYWJsZS4KClRC SCBJIGNhbid0IGNvbXByZWhlbmQgeW91ciBzdWdnZXN0aW9uLgpJSVVDIHlvdSB3YW50IGFuIG9i amVjdCBmb3IgYSBzb3VyY2UsIGJ1dCBteSBicmFpbiBjYW4ndCBoYW5kbGUKbW9kZWxpbmcgYW4g ZXh0ZXJuYWwgb2JqZWN0LiBGb3IgaW5zdGFuY2UgdGhlIHNvdXJjZSBjb3VsZCBiZSBHTlNTLCAK YnV0IHRoaXMgaXMgbm90IHRoZSBHTlNTIHN1YnN5c3RlbS4gV2UgaGF2ZSBhIHBpbiBjb25uZWN0 ZWQgdG8gR05TUywKbm90IHRoZSBHTlNTIGl0c2VsZi4gCk1heWJlIGEgZGlhZ3JhbSB3b3VsZCBo ZWxwPwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=