From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A17648C6; Fri, 18 Feb 2022 11:05:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E038BC340E9; Fri, 18 Feb 2022 11:05:52 +0000 (UTC) Message-ID: <8fc62c9a-4c36-41ab-2551-998962fdfa04@xs4all.nl> Date: Fri, 18 Feb 2022 12:05:51 +0100 Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [RFC v2 0/8] Move HEVC stateless controls out of staging Content-Language: en-US To: Benjamin Gaignard , mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@gmail.com, jonas@kwiboo.se, nicolas@ndufresne.ca Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com, jc@kynesim.co.uk References: <20220215110103.241297-1-benjamin.gaignard@collabora.com> <8ea4b561-2d46-3d40-73a1-2fe4d92c095d@collabora.com> From: Hans Verkuil In-Reply-To: <8ea4b561-2d46-3d40-73a1-2fe4d92c095d@collabora.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 18/02/2022 11:54, Benjamin Gaignard wrote: > > Le 18/02/2022 à 10:59, Hans Verkuil a écrit : >> Hi Benjamin, >> >> On 15/02/2022 12:00, Benjamin Gaignard wrote: >>> This series aims to make HEVC uapi stable and usable for hardware >>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>> and 2 out of the tree drivers (rkvdec and RPI). >>> >>> The 3 first patches are from Hans to implement v4l2 dynamic control >>> feature which is need by patch 7 for V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSET >>> definition. >>> >>> Patch 4 move the existing uapi to stable, including definitions renaming >>> and CID number change to fit with v4l2 naming. >>> >>> Patches 5 and 7 add fields needed for rkvdec and RPI decoders. >>> >>> Patches 6 is cleaning up the uapi of useless field. >>> Patches 8 change one field description and name to define offset by >>> bytes rather than by bits >> I have some housekeeping questions: >> >> I have several older HEVC-related patches from you, which of those are still >> valid? >> >> "[v4,0/9] Additional features for Hantro HEVC": >> https://patchwork.linuxtv.org/project/linux-media/cover/20210625141143.577998-1-benjamin.gaignard@collabora.com/ >> >> "media: hevc: fix pictures lists type": >> https://patchwork.linuxtv.org/project/linux-media/patch/20210823082949.237716-1-benjamin.gaignard@collabora.com/ >> >> "media: hantro: Trace hevc hw cycles performance register": >> https://patchwork.linuxtv.org/project/linux-media/patch/20210823135606.633052-1-benjamin.gaignard@collabora.com/ >> >> "media: hantro: Add support of compressed reference buffers" >> https://patchwork.linuxtv.org/project/linux-media/patch/20210823162916.824336-1-benjamin.gaignard@collabora.com/ >> >> Before moving the HEVC API out of staging I would prefer to have any remaining >> issues fixed. So one series that adds any remaining fixes (i.e. from the older patches >> mentioned above), and a second series on top that moves it out of staging. > > Hi Hans, > > They are all related to Hantro diver and, after post-proc patches, the internal driver design > has change so they won't apply anymore. You can discard them. OK, I'll mark them as Obsoleted. > HEVC UAPI migration isn't not impacted by these patches. > My plan is a finish the HEVC UAPI first, send patches to add features (compression, 10bits, scaling) > to Hantro driver and finally move it out of staging too. > If possible I would like to not make HEVC UAPI topic depends of Hantro features. > > Does that makes sense for you ? Well, only if you are absolutely certain that those features won't impact the uAPI. The easiest way to do that is to implement them and show that it doesn't :-) That's really my main concern: that those additions require uAPI changes. Looking over those patches it appears that this is the only one touching on the uAPI: "media: hevc: fix pictures lists type": https://patchwork.linuxtv.org/project/linux-media/patch/20210823082949.237716-1-benjamin.gaignard@collabora.com/ I haven't read all the comments in details, but it is something that needs to be clarified. Regards, Hans > > Regards, > Benjamin > >> >> That way I can mark the older patches as Superseded, and we have a >> fresh series that we can discuss. >> >> Regards, >> >>     Hans >> >>> Benjamin >>> >>> Benjamin Gaignard (5): >>>    media: uapi: Move HEVC stateless controls out of staging >>>    media: uapi: Add fields needed for RKVDEC driver >>>    media: uapi: Remove bit_size field from v4l2_ctrl_hevc_slice_params >>>    media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSET control >>>    media: uapi: Change data_bit_offset definition >>> >>> Hans Verkuil (3): >>>    videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>>    v4l2-ctrls: add support for dynamically allocated arrays. >>>    vivid: add dynamic array test control >>> >>>   .../userspace-api/media/drivers/hantro.rst    |   5 - >>>   .../media/v4l/ext-ctrls-codec.rst             |  58 ++-- >>>   .../media/v4l/vidioc-queryctrl.rst            |   8 + >>>   .../media/test-drivers/vivid/vivid-ctrls.c    |  15 ++ >>>   drivers/media/v4l2-core/v4l2-ctrls-api.c      | 103 ++++++-- >>>   drivers/media/v4l2-core/v4l2-ctrls-core.c     | 182 ++++++++++--- >>>   drivers/media/v4l2-core/v4l2-ctrls-defs.c     |  32 +-- >>>   drivers/media/v4l2-core/v4l2-ctrls-priv.h     |   3 +- >>>   drivers/media/v4l2-core/v4l2-ctrls-request.c  |  13 +- >>>   drivers/staging/media/hantro/hantro_drv.c     |  27 +- >>>   drivers/staging/media/hantro/hantro_hevc.c    |   8 +- >>>   drivers/staging/media/sunxi/cedrus/cedrus.c   |  24 +- >>>   .../staging/media/sunxi/cedrus/cedrus_dec.c   |  10 +- >>>   .../staging/media/sunxi/cedrus/cedrus_h265.c  |  13 +- >>>   include/linux/hantro-media.h                  |  17 ++ >>>   include/media/hevc-ctrls.h                    | 250 ------------------ >>>   include/media/v4l2-ctrls.h                    |  48 +++- >>>   include/uapi/linux/v4l2-controls.h            | 224 ++++++++++++++++ >>>   include/uapi/linux/videodev2.h                |   8 + >>>   19 files changed, 640 insertions(+), 408 deletions(-) >>>   create mode 100644 include/linux/hantro-media.h >>>   delete mode 100644 include/media/hevc-ctrls.h >>> 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 84368C433F5 for ; Fri, 18 Feb 2022 11:07:20 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Y7ymE4mfTKcsXdF+Sw78+mxF7LfjA+mU7+El5gtRMmI=; b=0AimK3hU28gCYJ icXlxEQpEVlpgIW1+/p9iTB/o3wiGeDkuCVB0qW6l9DGBsVou2Hk3MqMq0K1FKUYiY+Vkm9eeQT6N u+plP9nlCoELL5YFK64lf2p8VVNhOkg4y4Eeoqo/YcLzKAf4hB3Zy6IPTMMMbfBK1UT90M3fD73K/ 0urCdr36JNMz+HpoZENqlQGXvShOzOB2/CVFmjBWNNV+lqThbCxciyLMFTiG3QMexYajoVrd3o3Ab rdH8W1T21egA+oi32WrvAIlpnScOnHsWgos+6Rgy7yjeKUNtlhVmDXulMM/0iMi1nnBBRR1aGCaW8 jfVxkTMPZ9fS54XhyR3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nL15P-00Dwhv-98; Fri, 18 Feb 2022 11:06:03 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nL15K-00Dwfo-PG for linux-arm-kernel@lists.infradead.org; Fri, 18 Feb 2022 11:06:01 +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 48003B825D4; Fri, 18 Feb 2022 11:05:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E038BC340E9; Fri, 18 Feb 2022 11:05:52 +0000 (UTC) Message-ID: <8fc62c9a-4c36-41ab-2551-998962fdfa04@xs4all.nl> Date: Fri, 18 Feb 2022 12:05:51 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [RFC v2 0/8] Move HEVC stateless controls out of staging Content-Language: en-US To: Benjamin Gaignard , mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@gmail.com, jonas@kwiboo.se, nicolas@ndufresne.ca Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com, jc@kynesim.co.uk References: <20220215110103.241297-1-benjamin.gaignard@collabora.com> <8ea4b561-2d46-3d40-73a1-2fe4d92c095d@collabora.com> From: Hans Verkuil In-Reply-To: <8ea4b561-2d46-3d40-73a1-2fe4d92c095d@collabora.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220218_030559_159880_6D29AEB1 X-CRM114-Status: GOOD ( 26.32 ) 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 T24gMTgvMDIvMjAyMiAxMTo1NCwgQmVuamFtaW4gR2FpZ25hcmQgd3JvdGU6Cj4gCj4gTGUgMTgv MDIvMjAyMiDDoCAxMDo1OSwgSGFucyBWZXJrdWlsIGEgw6ljcml0wqA6Cj4+IEhpIEJlbmphbWlu LAo+Pgo+PiBPbiAxNS8wMi8yMDIyIDEyOjAwLCBCZW5qYW1pbiBHYWlnbmFyZCB3cm90ZToKPj4+ IFRoaXMgc2VyaWVzIGFpbXMgdG8gbWFrZSBIRVZDIHVhcGkgc3RhYmxlIGFuZCB1c2FibGUgZm9y IGhhcmR3YXJlCj4+PiBkZWNvZGVyLiBIRVZDIHVhcGkgaXMgdXNlZCBieSAyIG1haW5saW5lZCBk cml2ZXJzIChDZWRydXMgYW5kIEhhbnRybykKPj4+IGFuZCAyIG91dCBvZiB0aGUgdHJlZSBkcml2 ZXJzIChya3ZkZWMgYW5kIFJQSSkuCj4+Pgo+Pj4gVGhlIDMgZmlyc3QgcGF0Y2hlcyBhcmUgZnJv bSBIYW5zIHRvIGltcGxlbWVudCB2NGwyIGR5bmFtaWMgY29udHJvbAo+Pj4gZmVhdHVyZSB3aGlj aCBpcyBuZWVkIGJ5IHBhdGNoIDcgZm9yIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX0VOVFJZX1BP SU5UX09GRlNFVAo+Pj4gZGVmaW5pdGlvbi4KPj4+Cj4+PiBQYXRjaCA0IG1vdmUgdGhlIGV4aXN0 aW5nIHVhcGkgdG8gc3RhYmxlLCBpbmNsdWRpbmcgZGVmaW5pdGlvbnMgcmVuYW1pbmcKPj4+IGFu ZCBDSUQgbnVtYmVyIGNoYW5nZSB0byBmaXQgd2l0aCB2NGwyIG5hbWluZy4KPj4+Cj4+PiBQYXRj aGVzIDUgYW5kIDcgYWRkIGZpZWxkcyBuZWVkZWQgZm9yIHJrdmRlYyBhbmQgUlBJIGRlY29kZXJz Lgo+Pj4KPj4+IFBhdGNoZXMgNiBpcyBjbGVhbmluZyB1cCB0aGUgdWFwaSBvZiB1c2VsZXNzIGZp ZWxkLgo+Pj4gUGF0Y2hlcyA4IGNoYW5nZSBvbmUgZmllbGQgZGVzY3JpcHRpb24gYW5kIG5hbWUg dG8gZGVmaW5lIG9mZnNldCBieQo+Pj4gYnl0ZXMgcmF0aGVyIHRoYW4gYnkgYml0cwo+PiBJIGhh dmUgc29tZSBob3VzZWtlZXBpbmcgcXVlc3Rpb25zOgo+Pgo+PiBJIGhhdmUgc2V2ZXJhbCBvbGRl ciBIRVZDLXJlbGF0ZWQgcGF0Y2hlcyBmcm9tIHlvdSwgd2hpY2ggb2YgdGhvc2UgYXJlIHN0aWxs Cj4+IHZhbGlkPwo+Pgo+PiAiW3Y0LDAvOV0gQWRkaXRpb25hbCBmZWF0dXJlcyBmb3IgSGFudHJv IEhFVkMiOgo+PiBodHRwczovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1l ZGlhL2NvdmVyLzIwMjEwNjI1MTQxMTQzLjU3Nzk5OC0xLWJlbmphbWluLmdhaWduYXJkQGNvbGxh Ym9yYS5jb20vCj4+Cj4+ICJtZWRpYTogaGV2YzogZml4IHBpY3R1cmVzIGxpc3RzIHR5cGUiOgo+ PiBodHRwczovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL3BhdGNo LzIwMjEwODIzMDgyOTQ5LjIzNzcxNi0xLWJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20v Cj4+Cj4+ICJtZWRpYTogaGFudHJvOiBUcmFjZSBoZXZjIGh3IGN5Y2xlcyBwZXJmb3JtYW5jZSBy ZWdpc3RlciI6Cj4+IGh0dHBzOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgt bWVkaWEvcGF0Y2gvMjAyMTA4MjMxMzU2MDYuNjMzMDUyLTEtYmVuamFtaW4uZ2FpZ25hcmRAY29s bGFib3JhLmNvbS8KPj4KPj4gIm1lZGlhOiBoYW50cm86IEFkZCBzdXBwb3J0IG9mIGNvbXByZXNz ZWQgcmVmZXJlbmNlIGJ1ZmZlcnMiCj4+IGh0dHBzOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3By b2plY3QvbGludXgtbWVkaWEvcGF0Y2gvMjAyMTA4MjMxNjI5MTYuODI0MzM2LTEtYmVuamFtaW4u Z2FpZ25hcmRAY29sbGFib3JhLmNvbS8KPj4KPj4gQmVmb3JlIG1vdmluZyB0aGUgSEVWQyBBUEkg b3V0IG9mIHN0YWdpbmcgSSB3b3VsZCBwcmVmZXIgdG8gaGF2ZSBhbnkgcmVtYWluaW5nCj4+IGlz c3VlcyBmaXhlZC4gU28gb25lIHNlcmllcyB0aGF0IGFkZHMgYW55IHJlbWFpbmluZyBmaXhlcyAo aS5lLiBmcm9tIHRoZSBvbGRlciBwYXRjaGVzCj4+IG1lbnRpb25lZCBhYm92ZSksIGFuZCBhIHNl Y29uZCBzZXJpZXMgb24gdG9wIHRoYXQgbW92ZXMgaXQgb3V0IG9mIHN0YWdpbmcuCj4gCj4gSGkg SGFucywKPiAKPiBUaGV5IGFyZSBhbGwgcmVsYXRlZCB0byBIYW50cm8gZGl2ZXIgYW5kLCBhZnRl ciBwb3N0LXByb2MgcGF0Y2hlcywgdGhlIGludGVybmFsIGRyaXZlciBkZXNpZ24KPiBoYXMgY2hh bmdlIHNvIHRoZXkgd29uJ3QgYXBwbHkgYW55bW9yZS4gWW91IGNhbiBkaXNjYXJkIHRoZW0uCgpP SywgSSdsbCBtYXJrIHRoZW0gYXMgT2Jzb2xldGVkLgoKPiBIRVZDIFVBUEkgbWlncmF0aW9uIGlz bid0IG5vdCBpbXBhY3RlZCBieSB0aGVzZSBwYXRjaGVzLgo+IE15IHBsYW4gaXMgYSBmaW5pc2gg dGhlIEhFVkMgVUFQSSBmaXJzdCwgc2VuZCBwYXRjaGVzIHRvIGFkZCBmZWF0dXJlcyAoY29tcHJl c3Npb24sIDEwYml0cywgc2NhbGluZykKPiB0byBIYW50cm8gZHJpdmVyIGFuZCBmaW5hbGx5IG1v dmUgaXQgb3V0IG9mIHN0YWdpbmcgdG9vLgo+IElmIHBvc3NpYmxlIEkgd291bGQgbGlrZSB0byBu b3QgbWFrZSBIRVZDIFVBUEkgdG9waWMgZGVwZW5kcyBvZiBIYW50cm8gZmVhdHVyZXMuCj4gCj4g RG9lcyB0aGF0IG1ha2VzIHNlbnNlIGZvciB5b3UgPwoKV2VsbCwgb25seSBpZiB5b3UgYXJlIGFi c29sdXRlbHkgY2VydGFpbiB0aGF0IHRob3NlIGZlYXR1cmVzIHdvbid0IGltcGFjdCB0aGUgdUFQ SS4KVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gaW1wbGVtZW50IHRoZW0gYW5kIHNo b3cgdGhhdCBpdCBkb2Vzbid0IDotKQoKVGhhdCdzIHJlYWxseSBteSBtYWluIGNvbmNlcm46IHRo YXQgdGhvc2UgYWRkaXRpb25zIHJlcXVpcmUgdUFQSSBjaGFuZ2VzLgoKTG9va2luZyBvdmVyIHRo b3NlIHBhdGNoZXMgaXQgYXBwZWFycyB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgb25lIHRvdWNoaW5n IG9uCnRoZSB1QVBJOgoKIm1lZGlhOiBoZXZjOiBmaXggcGljdHVyZXMgbGlzdHMgdHlwZSI6Cmh0 dHBzOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvcGF0Y2gvMjAy MTA4MjMwODI5NDkuMjM3NzE2LTEtYmVuamFtaW4uZ2FpZ25hcmRAY29sbGFib3JhLmNvbS8KCkkg aGF2ZW4ndCByZWFkIGFsbCB0aGUgY29tbWVudHMgaW4gZGV0YWlscywgYnV0IGl0IGlzIHNvbWV0 aGluZyB0aGF0IG5lZWRzIHRvCmJlIGNsYXJpZmllZC4KClJlZ2FyZHMsCgoJSGFucwoKPiAKPiBS ZWdhcmRzLAo+IEJlbmphbWluCj4gCj4+Cj4+IFRoYXQgd2F5IEkgY2FuIG1hcmsgdGhlIG9sZGVy IHBhdGNoZXMgYXMgU3VwZXJzZWRlZCwgYW5kIHdlIGhhdmUgYQo+PiBmcmVzaCBzZXJpZXMgdGhh dCB3ZSBjYW4gZGlzY3Vzcy4KPj4KPj4gUmVnYXJkcywKPj4KPj4gwqDCoMKgwqBIYW5zCj4+Cj4+ PiBCZW5qYW1pbgo+Pj4KPj4+IEJlbmphbWluIEdhaWduYXJkICg1KToKPj4+IMKgwqAgbWVkaWE6 IHVhcGk6IE1vdmUgSEVWQyBzdGF0ZWxlc3MgY29udHJvbHMgb3V0IG9mIHN0YWdpbmcKPj4+IMKg wqAgbWVkaWE6IHVhcGk6IEFkZCBmaWVsZHMgbmVlZGVkIGZvciBSS1ZERUMgZHJpdmVyCj4+PiDC oMKgIG1lZGlhOiB1YXBpOiBSZW1vdmUgYml0X3NpemUgZmllbGQgZnJvbSB2NGwyX2N0cmxfaGV2 Y19zbGljZV9wYXJhbXMKPj4+IMKgwqAgbWVkaWE6IHVhcGk6IEFkZCBWNEwyX0NJRF9TVEFURUxF U1NfSEVWQ19FTlRSWV9QT0lOVF9PRkZTRVQgY29udHJvbAo+Pj4gwqDCoCBtZWRpYTogdWFwaTog Q2hhbmdlIGRhdGFfYml0X29mZnNldCBkZWZpbml0aW9uCj4+Pgo+Pj4gSGFucyBWZXJrdWlsICgz KToKPj4+IMKgwqAgdmlkZW9kZXYyLmg6IGFkZCBWNEwyX0NUUkxfRkxBR19EWU5BTUlDX0FSUkFZ Cj4+PiDCoMKgIHY0bDItY3RybHM6IGFkZCBzdXBwb3J0IGZvciBkeW5hbWljYWxseSBhbGxvY2F0 ZWQgYXJyYXlzLgo+Pj4gwqDCoCB2aXZpZDogYWRkIGR5bmFtaWMgYXJyYXkgdGVzdCBjb250cm9s Cj4+Pgo+Pj4gwqAgLi4uL3VzZXJzcGFjZS1hcGkvbWVkaWEvZHJpdmVycy9oYW50cm8ucnN0wqDC oMKgIHzCoMKgIDUgLQo+Pj4gwqAgLi4uL21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA1OCArKy0tCj4+PiDCoCAuLi4vbWVkaWEvdjRsL3Zp ZGlvYy1xdWVyeWN0cmwucnN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICsKPj4+IMKg IC4uLi9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuY8KgwqDCoCB8wqAgMTUg KysKPj4+IMKgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtYXBpLmPCoMKgwqDC oMKgIHwgMTAzICsrKysrKy0tCj4+PiDCoCBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0 cmxzLWNvcmUuY8KgwqDCoMKgIHwgMTgyICsrKysrKysrKystLS0KPj4+IMKgIGRyaXZlcnMvbWVk aWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5jwqDCoMKgwqAgfMKgIDMyICstLQo+Pj4gwqAg ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1wcml2LmjCoMKgwqDCoCB8wqDCoCAz ICstCj4+PiDCoCBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXJlcXVlc3QuY8Kg IHzCoCAxMyArLQo+Pj4gwqAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZHJ2 LmPCoMKgwqDCoCB8wqAgMjcgKy0KPj4+IMKgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8v aGFudHJvX2hldmMuY8KgwqDCoCB8wqDCoCA4ICstCj4+PiDCoCBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvc3VueGkvY2VkcnVzL2NlZHJ1cy5jwqDCoCB8wqAgMjQgKy0KPj4+IMKgIC4uLi9zdGFnaW5n L21lZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXNfZGVjLmPCoMKgIHzCoCAxMCArLQo+Pj4gwqAgLi4u L3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19oMjY1LmPCoCB8wqAgMTMgKy0KPj4+ IMKgIGluY2x1ZGUvbGludXgvaGFudHJvLW1lZGlhLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoCAxNyArKwo+Pj4gwqAgaW5jbHVkZS9tZWRpYS9oZXZjLWN0cmxzLmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDI1MCAtLS0tLS0tLS0tLS0tLS0t LS0KPj4+IMKgIGluY2x1ZGUvbWVkaWEvdjRsMi1jdHJscy5owqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQ4ICsrKy0KPj4+IMKgIGluY2x1ZGUvdWFwaS9saW51eC92 NGwyLWNvbnRyb2xzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjI0ICsrKysrKysrKysrKysr KysKPj4+IMKgIGluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoCA4ICsKPj4+IMKgIDE5IGZpbGVzIGNoYW5nZWQsIDY0MCBpbnNl cnRpb25zKCspLCA0MDggZGVsZXRpb25zKC0pCj4+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS9saW51eC9oYW50cm8tbWVkaWEuaAo+Pj4gwqAgZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvbWVkaWEvaGV2Yy1jdHJscy5oCj4+PgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK