From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) (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 97B1C2C85 for ; Tue, 16 Nov 2021 13:14:48 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id D0D891F45664 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=collabora.com; s=mail; t=1637068476; bh=a5RLKSmmqx5Mnnmn0wdTu5DPpiBq1GMVZZp/70TqdLE=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=nVyV2rIgrKuOh2G1Cp6yFXxySieCdAW4FacmOPb2QHLVgeTUXUB3uSf2+FPWMyNUE XoFe9Uo4iqP12sIno1vl60EekBVBOxYkDACWtIJMHpKcACC8acgj5Tmq3PnPP/8qiI aE1KKofuwCQ6jkT/H+yPQq4OTS1PSqBN9BbJglADftrordkDN9us8ZV52YcJaQMtCu L801R7//EOrCJ8aJs8TkbdOsnp3hw1XZlz1UmcSW5MHu1e5kmU+8sEiPLIA626Aysh 6W/f3atZfy1pcoVl19aJGwMqAx2OavnZQUXzQv4V5Jq/yIswHd0zsV9x1VodtPxeJC QwFnfixdqqdnA== Subject: Re: [PATCH v7 00/11] VP9 codec V4L2 control interface To: Hans Verkuil , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev Cc: Benjamin Gaignard , Boris Brezillon , Ezequiel Garcia , Fabio Estevam , Greg Kroah-Hartman , Heiko Stuebner , Jernej Skrabec , Mauro Carvalho Chehab , Nicolas Dufresne , NXP Linux Team , Pengutronix Kernel Team , Philipp Zabel , Sascha Hauer , Shawn Guo , kernel@collabora.com References: <20210929160439.6601-1-andrzej.p@collabora.com> <9db47ebc-cb95-872d-feb4-d6432a74f2cb@xs4all.nl> <29f27bad-28ae-12ff-eed6-79902bd5b722@collabora.com> <4da113ef-7b12-3729-0186-f746901c892a@xs4all.nl> From: Andrzej Pietrasiewicz Message-ID: <69f16bb0-4b5a-18b3-e244-60deb029d239@collabora.com> Date: Tue, 16 Nov 2021 14:14:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 Precedence: bulk X-Mailing-List: linux-staging@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In-Reply-To: <4da113ef-7b12-3729-0186-f746901c892a@xs4all.nl> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Hi, W dniu 16.11.2021 o 09:21, Hans Verkuil pisze: > On 16/11/2021 09:09, Andrzej Pietrasiewicz wrote: >> Hi Hans, >> >> W dniu 15.11.2021 o 22:16, Hans Verkuil pisze: >>> On 15/11/2021 18:14, Andrzej Pietrasiewicz wrote: >>>> Hi Hans, >>>> >>>> W dniu 15.11.2021 o 16:07, Hans Verkuil pisze: >>>>> Andrzej, >>>>> >>>>> Can you rebase this series on top of the master branch of >>>>> https://git.linuxtv.org/media_stage.git/ ? Unfortunately this v7 no longer >>>>> applies. Specifically "rkvdec: Add the VP9 backend" failed in a non-trivial >>>>> manner. >>>> >>>> This is a branch for you: >>>> >>>> https://gitlab.collabora.com/linux/for-upstream/-/tree/vp9-uapi >>> >>> I'm getting a bunch of sparse/smatch warnings: >>> >> >> Thanks for finding this, I will re-create the branch and let you know on irc. >> Some of the below are "false positives, namely: >> >> drivers/media/platform/omap3isp/omap3isp.h >> drivers/media/platform/qcom/venus/core.h > > Ah, sorry, I though I had filtered those out. Obviously you can ignore those. > > Please post a v8. That way the series is archived on lore. And it works better > with patchwork. Sure, no problem. Also please see below. > > Regards, > > Hans > >> >> which are not touched by the series. >> >> Regards, >> >> Andrzej >> >>> sparse: >>> rkvdec/rkvdec-vp9.c:190:43: warning: variable 'dec_params' set but not used [-Wunused-but-set-variable] >>> rkvdec/rkvdec-vp9.c:245:43: warning: variable 'dec_params' set but not used [-Wunused-but-set-variable] >>> SPARSE:hantro/hantro_postproc.c hantro/hantro_postproc.c:37:35: warning: symbol 'hantro_g1_postproc_regs' was not declared. Should it be static? >>> >>> smatch: >>> rkvdec/rkvdec-vp9.c:190:43: warning: variable 'dec_params' set but not used [-Wunused-but-set-variable] >>> rkvdec/rkvdec-vp9.c:245:43: warning: variable 'dec_params' set but not used [-Wunused-but-set-variable] >>> rkvdec/rkvdec-vp9.c: rkvdec/rkvdec-vp9.c:236 init_intra_only_probs() error: buffer overflow 'ptr' 90 <= 91 this looks a false positive. A portion of memory pointed to by ptr is indexed with i * 23 + m, where i ranges from 0 to 3, inclusive, and m ranges from 0 to 22, inclusive if i < 3, otherwise m ranges from 0 to 20, inclusive. So the largest index value we compute equals 89 (3 * 23 + 20). Because ptr points to something that is at least 90 bytes large, 89 is a valid index and no greater index will be ever computed. >>> hantro/hantro_g2_vp9_dec.c: hantro/hantro_g2_vp9_dec.c:670 config_probs() error: memcpy() 'adaptive->inter_mode[i]' too small (4 vs 21) >>> hantro/hantro_g2_vp9_dec.c: hantro/hantro_g2_vp9_dec.c:670 config_probs() error: memcpy() 'probs->inter_mode[i]' too small (3 vs 21 >>> >>> Also a bunch of kerneldoc warnings: >>> >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'joint' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'sign' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'classes' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'class0_bit' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'bits' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'class0_fr' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'fr' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'class0_hp' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:30: warning: Function parameter or member 'hp' not described in 'v4l2_vp9_frame_mv_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'tx8' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'tx16' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'tx32' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'coef' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'skip' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'inter_mode' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'interp_filter' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'is_inter' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'comp_mode' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'single_ref' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'comp_ref' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'y_mode' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'uv_mode' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'partition' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:58: warning: Function parameter or member 'mv' not described in 'v4l2_vp9_frame_context' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'partition' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'skip' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'intra_inter' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'tx32p' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'tx16p' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'tx8p' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'y_mode' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'uv_mode' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'comp' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'comp_ref' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'single_ref' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'mv_mode' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'filter' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'mv_joint' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'sign' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'classes' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'class0' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'bits' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'class0_fp' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'fp' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'class0_hp' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'hp' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'coeff' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:93: warning: Function parameter or member 'eob' not described in 'v4l2_vp9_frame_symbol_counts' >>> include/media/v4l2-vp9.h:166: warning: expecting prototype for v4l2_vp9_adapt_coef_probs(). Prototype was for v4l2_vp9_adapt_noncoef_probs() >>> instead >>> drivers/media/platform/omap3isp/omap3isp.h:107: warning: Function parameter or member 'vp_clk_pol' not described in 'isp_ccp2_cfg' >>> drivers/media/platform/omap3isp/omap3isp.h:107: warning: Function parameter or member 'lanecfg' not described in 'isp_ccp2_cfg' >>> drivers/media/platform/qcom/venus/core.h:202: warning: Function parameter or member 'sys_err_done' not described in 'venus_core' >>> drivers/media/platform/qcom/venus/core.h:462: warning: Function parameter or member 'fw_min_cnt' not described in 'venus_inst' >>> drivers/media/platform/qcom/venus/core.h:462: warning: Function parameter or member 'flags' not described in 'venus_inst' >>> drivers/media/platform/qcom/venus/core.h:462: warning: Function parameter or member 'dpb_ids' not described in 'venus_inst' >>> drivers/staging/media/hantro/hantro.h:115: warning: Enum value 'HANTRO_MODE_VP9_DEC' not described in enum 'hantro_codec_mode' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'tile_edge' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'segment_map' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'misc' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'cnts' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'probability_tables' not described in >>> 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'frame_context' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'cur' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'last' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'bsd_ctrl_offset' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'segment_map_size' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'ctx_counters_offset' not described in >>> 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'tile_info_offset' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'tile_r_info' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'tile_c_info' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'last_tile_r' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'last_tile_c' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'last_sbs_r' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'last_sbs_c' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'active_segment' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'feature_enabled' not described in 'hantro_vp9_dec_hw_ctx' >>> drivers/staging/media/hantro/hantro_hw.h:211: warning: Function parameter or member 'feature_data' not described in 'hantro_vp9_dec_hw_ctx' >>> >>> You can test kerneldoc yourself with: scripts/kernel-doc -none include/media/v4l2-vp9.h >>> >>> Regards, >>> >>> Hans >>> >>>> >>>> Regards, >>>> >>>> Andrzej >>>> >>>> >>>>> >>>>> Regards, >>>>> >>>>> Hans >>>>> >>>>> On 29/09/2021 18:04, Andrzej Pietrasiewicz wrote: >>>>>> Dear all, >>>>>> >>>>>> This patch series adds VP9 codec V4L2 control interface and two drivers >>>>>> using the new controls. It is a follow-up of previous v6 series [1]. >>>>>> >>>>>> In this iteration, we've implemented VP9 hardware decoding on two devices: >>>>>> Rockchip VDEC and Hantro G2, and tested on RK3399, i.MX8MQ and i.MX8MP. >>>>>> The i.MX8M driver needs proper power domains support, though, which is a >>>>>> subject of a different effort, but in all 3 cases we were able to run the >>>>>> drivers. >>>>>> >>>>>> GStreamer support is also available, the needed changes have been submitted >>>>>> by Daniel Almeida [2]. This MR is ready to be merged, and just needs the >>>>>> VP9 V4L2 controls to be merged and released. >>>>>> >>>>>> Both rkvdec and hantro drivers are passing a significant number of VP9 tests >>>>>> using Fluster[3]. There are still a few tests that are not passing, due to >>>>>> dynamic frame resize (not yet supported by V4L2) and small size videos >>>>>> (due to IP block limitations). >>>>>> >>>>>> The series adds the VP9 codec V4L2 control API as uAPI, so it aims at being >>>>>> merged without passing through staging, as agreed[4]. The ABI has been checked >>>>>> for padding and verified to contain no holes. >>>>>> >>>>>> [1] https://patchwork.linuxtv.org/project/linux-media/list/?series=6377 >>>>>> [2] https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2144 >>>>>> [3] https://github.com/fluendo/fluster >>>>>> [4] https://lore.kernel.org/linux-media/b8f83c93-67fd-09f5-9314-15746cbfdc61@xs4all.nl/ >>>>>> >>>>>> The series depends on the YUV tiled format support prepared by Ezequiel: >>>>>> https://www.spinics.net/lists/linux-media/msg197047.html >>>>>> >>>>>> Rebased onto latest media_tree. >>>>>> >>>>>> Changes related to v6: >>>>>> - moved setting tile filter and tile bsd auxiliary buffer addresses so >>>>>> that they are always set, even if no tiles are used (thanks, Jernej) >>>>>> - added a comment near the place where the 32-bit DMA mask is applied >>>>>> (thanks, Nicolas) >>>>>> - improved consistency in register names (thanks, Nicolas) >>>>>> >>>>>> Changes related to v5: >>>>>> - improved the doc comments as per Ezequiel's review (thanks, Ezequiel) >>>>>> - improved pdf output of documentation >>>>>> - added Benjamin's Reviewed-by (thanks, Benjamin) >>>>>> >>>>>> Changes related to v4: >>>>>> - removed unused enum v4l2_vp9_intra_prediction_mode >>>>>> - converted remaining enums to defines to follow the convention >>>>>> - improved the documentation, in particular better documented how to use segmentation >>>>>> features >>>>>> >>>>>> Changes related to v3: >>>>>> >>>>>> Apply suggestions from Jernej's review (thanks, Jernej): >>>>>> - renamed a control and two structs: >>>>>> V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR_PROBS => >>>>>> V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR >>>>>> v4l2_ctrl_vp9_compressed_hdr_probs => >>>>>> v4l2_ctrl_vp9_compressed_hdr >>>>>> v4l2_vp9_mv_compressed_hdr_probs => v4l2_vp9_mv_probs >>>>>> - moved tx_mode to v4l2_ctrl_vp9_compressed_hdr >>>>>> - fixed enum v4l2_vp9_ref_frame_sign_bias values (which are used to test a bitfield) >>>>>> - explicitly assigned values to all other vp9 enums >>>>>> >>>>>> Apply suggestion from Nicolas's review (thanks, Nicolas): >>>>>> - explicitly stated that the v4l2_ctrl_vp9_compressed_hdr control is optional >>>>>> and implemented only by drivers which need it >>>>>> >>>>>> Changes related to the RFC v2: >>>>>> >>>>>> - added another driver including a postprocessor to de-tile >>>>>> codec-specific tiling >>>>>> - reworked uAPI structs layout to follow VP8 style >>>>>> - changed validation of loop filter params >>>>>> - changed validation of segmentation params >>>>>> - changed validation of VP9 frame params >>>>>> - removed level lookup array from loop filter struct >>>>>> (can be computed by drivers) >>>>>> - renamed some enum values to match the spec more closely >>>>>> - V4L2 VP9 library changed the 'eob' member of >>>>>> 'struct v4l2_vp9_frame_symbol_counts' so that it is an array >>>>>> of pointers instead of an array of pointers to arrays >>>>>> (IPs such as g2 creatively pass parts of the 'eob' counts in >>>>>> the 'coeff' counts) >>>>>> - factored out several repeated portions of code >>>>>> - minor nitpicks and cleanups >>>>>> >>>>>> Andrzej Pietrasiewicz (6): >>>>>> media: uapi: Add VP9 stateless decoder controls >>>>>> media: Add VP9 v4l2 library >>>>>> media: hantro: Rename registers >>>>>> media: hantro: Prepare for other G2 codecs >>>>>> media: hantro: Support VP9 on the G2 core >>>>>> media: hantro: Support NV12 on the G2 core >>>>>> >>>>>> Boris Brezillon (1): >>>>>> media: rkvdec: Add the VP9 backend >>>>>> >>>>>> Ezequiel Garcia (4): >>>>>> hantro: postproc: Fix motion vector space size >>>>>> hantro: postproc: Introduce struct hantro_postproc_ops >>>>>> hantro: Simplify postprocessor >>>>>> hantro: Add quirk for NV12/NV12_4L4 capture format >>>>>> >>>>>> .../userspace-api/media/v4l/biblio.rst | 10 + >>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 573 +++++ >>>>>> .../media/v4l/pixfmt-compressed.rst | 15 + >>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 8 + >>>>>> .../media/v4l/vidioc-queryctrl.rst | 12 + >>>>>> .../media/videodev2.h.rst.exceptions | 2 + >>>>>> drivers/media/v4l2-core/Kconfig | 4 + >>>>>> drivers/media/v4l2-core/Makefile | 1 + >>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 180 ++ >>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 8 + >>>>>> drivers/media/v4l2-core/v4l2-ioctl.c | 1 + >>>>>> drivers/media/v4l2-core/v4l2-vp9.c | 1850 +++++++++++++++++ >>>>>> drivers/staging/media/hantro/Kconfig | 1 + >>>>>> drivers/staging/media/hantro/Makefile | 7 +- >>>>>> drivers/staging/media/hantro/hantro.h | 40 +- >>>>>> drivers/staging/media/hantro/hantro_drv.c | 23 +- >>>>>> drivers/staging/media/hantro/hantro_g2.c | 27 + >>>>>> .../staging/media/hantro/hantro_g2_hevc_dec.c | 69 +- >>>>>> drivers/staging/media/hantro/hantro_g2_regs.h | 132 +- >>>>>> .../staging/media/hantro/hantro_g2_vp9_dec.c | 980 +++++++++ >>>>>> drivers/staging/media/hantro/hantro_hw.h | 83 +- >>>>>> .../staging/media/hantro/hantro_postproc.c | 79 +- >>>>>> drivers/staging/media/hantro/hantro_v4l2.c | 20 + >>>>>> drivers/staging/media/hantro/hantro_vp9.c | 240 +++ >>>>>> drivers/staging/media/hantro/hantro_vp9.h | 103 + >>>>>> drivers/staging/media/hantro/imx8m_vpu_hw.c | 38 +- >>>>>> .../staging/media/hantro/rockchip_vpu_hw.c | 7 +- >>>>>> .../staging/media/hantro/sama5d4_vdec_hw.c | 3 +- >>>>>> drivers/staging/media/rkvdec/Kconfig | 1 + >>>>>> drivers/staging/media/rkvdec/Makefile | 2 +- >>>>>> drivers/staging/media/rkvdec/rkvdec-vp9.c | 1078 ++++++++++ >>>>>> drivers/staging/media/rkvdec/rkvdec.c | 52 +- >>>>>> drivers/staging/media/rkvdec/rkvdec.h | 12 +- >>>>>> include/media/v4l2-ctrls.h | 4 + >>>>>> include/media/v4l2-vp9.h | 182 ++ >>>>>> include/uapi/linux/v4l2-controls.h | 284 +++ >>>>>> include/uapi/linux/videodev2.h | 6 + >>>>>> 37 files changed, 6033 insertions(+), 104 deletions(-) >>>>>> create mode 100644 drivers/media/v4l2-core/v4l2-vp9.c >>>>>> create mode 100644 drivers/staging/media/hantro/hantro_g2.c >>>>>> create mode 100644 drivers/staging/media/hantro/hantro_g2_vp9_dec.c >>>>>> create mode 100644 drivers/staging/media/hantro/hantro_vp9.c >>>>>> create mode 100644 drivers/staging/media/hantro/hantro_vp9.h >>>>>> create mode 100644 drivers/staging/media/rkvdec/rkvdec-vp9.c >>>>>> create mode 100644 include/media/v4l2-vp9.h >>>>>> >>>>>> >>>>>> base-commit: e4e737bb5c170df6135a127739a9e6148ee3da82 >>>>>> >>>>> >>>> >>> >> > 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 6D378C433F5 for ; Tue, 16 Nov 2021 13:15:02 +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 2B5C16140D for ; Tue, 16 Nov 2021 13:15:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2B5C16140D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com 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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=p0wOSoQvxXp4ZJWD6K46r+8N533i4Xupz4wfVU8Wwd4=; b=u+VHf+6Ii1IMtkamamYhjBK3yF xOf3vvyBUs0MxhEmB38Dm8tdgeaVYlqL4JcBkXMmonx2VJ/iMceizKNuUBuvf40HfT5TjDj1b/3Q0 /zQDOzrIGrpZXE9kw3/ZJs2epU73fMjlfwzryDSA8HYqnxF3K4Qu2hcUe8Zj0ZfoweDurDrAj5UXn nGkaCmJQWApNThDaJLj70roROJJP9qhrRDmYol9e5m+u7B8SVbZ6flm3iSTc8XhNtMobSs7uek9vX CKqV46SL2V4UI2Qvki/HqgQsU0X7elUKiFw/R2GcxE50jnZY0ltQSMxJXnc3Ex7pJ5XHzoBh5hizp E02Oht5A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mmyIb-001mXd-2D; Tue, 16 Nov 2021 13:14:57 +0000 Received: from bhuna.collabora.co.uk ([46.235.227.227]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mmyIM-001mTz-Fs; Tue, 16 Nov 2021 13:14:45 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id D0D891F45664 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=collabora.com; s=mail; t=1637068476; bh=a5RLKSmmqx5Mnnmn0wdTu5DPpiBq1GMVZZp/70TqdLE=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=nVyV2rIgrKuOh2G1Cp6yFXxySieCdAW4FacmOPb2QHLVgeTUXUB3uSf2+FPWMyNUE XoFe9Uo4iqP12sIno1vl60EekBVBOxYkDACWtIJMHpKcACC8acgj5Tmq3PnPP/8qiI aE1KKofuwCQ6jkT/H+yPQq4OTS1PSqBN9BbJglADftrordkDN9us8ZV52YcJaQMtCu L801R7//EOrCJ8aJs8TkbdOsnp3hw1XZlz1UmcSW5MHu1e5kmU+8sEiPLIA626Aysh 6W/f3atZfy1pcoVl19aJGwMqAx2OavnZQUXzQv4V5Jq/yIswHd0zsV9x1VodtPxeJC QwFnfixdqqdnA== Subject: Re: [PATCH v7 00/11] VP9 codec V4L2 control interface To: Hans Verkuil , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev Cc: Benjamin Gaignard , Boris Brezillon , Ezequiel Garcia , Fabio Estevam , Greg Kroah-Hartman , Heiko Stuebner , Jernej Skrabec , Mauro Carvalho Chehab , Nicolas Dufresne , NXP Linux Team , Pengutronix Kernel Team , Philipp Zabel , Sascha Hauer , Shawn Guo , kernel@collabora.com References: <20210929160439.6601-1-andrzej.p@collabora.com> <9db47ebc-cb95-872d-feb4-d6432a74f2cb@xs4all.nl> <29f27bad-28ae-12ff-eed6-79902bd5b722@collabora.com> <4da113ef-7b12-3729-0186-f746901c892a@xs4all.nl> From: Andrzej Pietrasiewicz Message-ID: <69f16bb0-4b5a-18b3-e244-60deb029d239@collabora.com> Date: Tue, 16 Nov 2021 14:14:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <4da113ef-7b12-3729-0186-f746901c892a@xs4all.nl> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211116_051442_829902_E526FEEE X-CRM114-Status: GOOD ( 19.64 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGksCgpXIGRuaXUgMTYuMTEuMjAyMSBvwqAwOToyMSwgSGFucyBWZXJrdWlsIHBpc3plOgo+IE9u IDE2LzExLzIwMjEgMDk6MDksIEFuZHJ6ZWogUGlldHJhc2lld2ljeiB3cm90ZToKPj4gSGkgSGFu cywKPj4KPj4gVyBkbml1IDE1LjExLjIwMjEgb8KgMjI6MTYsIEhhbnMgVmVya3VpbCBwaXN6ZToK Pj4+IE9uIDE1LzExLzIwMjEgMTg6MTQsIEFuZHJ6ZWogUGlldHJhc2lld2ljeiB3cm90ZToKPj4+ PiBIaSBIYW5zLAo+Pj4+Cj4+Pj4gVyBkbml1IDE1LjExLjIwMjEgb8KgMTY6MDcsIEhhbnMgVmVy a3VpbCBwaXN6ZToKPj4+Pj4gQW5kcnplaiwKPj4+Pj4KPj4+Pj4gQ2FuIHlvdSByZWJhc2UgdGhp cyBzZXJpZXMgb24gdG9wIG9mIHRoZSBtYXN0ZXIgYnJhbmNoIG9mCj4+Pj4+IGh0dHBzOi8vZ2l0 LmxpbnV4dHYub3JnL21lZGlhX3N0YWdlLmdpdC8gPyBVbmZvcnR1bmF0ZWx5IHRoaXMgdjcgbm8g bG9uZ2VyCj4+Pj4+IGFwcGxpZXMuIFNwZWNpZmljYWxseSAicmt2ZGVjOiBBZGQgdGhlIFZQOSBi YWNrZW5kIiBmYWlsZWQgaW4gYSBub24tdHJpdmlhbAo+Pj4+PiBtYW5uZXIuCj4+Pj4KPj4+PiBU aGlzIGlzIGEgYnJhbmNoIGZvciB5b3U6Cj4+Pj4KPj4+PiBodHRwczovL2dpdGxhYi5jb2xsYWJv cmEuY29tL2xpbnV4L2Zvci11cHN0cmVhbS8tL3RyZWUvdnA5LXVhcGkKPj4+Cj4+PiBJJ20gZ2V0 dGluZyBhIGJ1bmNoIG9mIHNwYXJzZS9zbWF0Y2ggd2FybmluZ3M6Cj4+Pgo+Pgo+PiBUaGFua3Mg Zm9yIGZpbmRpbmcgdGhpcywgSSB3aWxsIHJlLWNyZWF0ZSB0aGUgYnJhbmNoIGFuZCBsZXQgeW91 IGtub3cgb24gaXJjLgo+PiBTb21lIG9mIHRoZSBiZWxvdyBhcmUgImZhbHNlIHBvc2l0aXZlcywg bmFtZWx5Ogo+Pgo+PiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL29tYXAzaXNwL29tYXAzaXNwLmgK Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2NvcmUuaAo+IAo+IEFoLCBzb3Jy eSwgSSB0aG91Z2ggSSBoYWQgZmlsdGVyZWQgdGhvc2Ugb3V0LiBPYnZpb3VzbHkgeW91IGNhbiBp Z25vcmUgdGhvc2UuCj4gCj4gUGxlYXNlIHBvc3QgYSB2OC4gVGhhdCB3YXkgdGhlIHNlcmllcyBp cyBhcmNoaXZlZCBvbiBsb3JlLiBBbmQgaXQgd29ya3MgYmV0dGVyCj4gd2l0aCBwYXRjaHdvcmsu CgpTdXJlLCBubyBwcm9ibGVtLiBBbHNvIHBsZWFzZSBzZWUgYmVsb3cuCgo+IAo+IFJlZ2FyZHMs Cj4gCj4gCUhhbnMKPiAKPj4KPj4gd2hpY2ggYXJlIG5vdCB0b3VjaGVkIGJ5IHRoZSBzZXJpZXMu Cj4+Cj4+IFJlZ2FyZHMsCj4+Cj4+IEFuZHJ6ZWoKPj4KPj4+IHNwYXJzZToKPj4+IHJrdmRlYy9y a3ZkZWMtdnA5LmM6MTkwOjQzOiB3YXJuaW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1 dCBub3QgdXNlZCBbLVd1bnVzZWQtYnV0LXNldC12YXJpYWJsZV0KPj4+IHJrdmRlYy9ya3ZkZWMt dnA5LmM6MjQ1OjQzOiB3YXJuaW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1dCBub3Qg dXNlZCBbLVd1bnVzZWQtYnV0LXNldC12YXJpYWJsZV0KPj4+IFNQQVJTRTpoYW50cm8vaGFudHJv X3Bvc3Rwcm9jLmMgaGFudHJvL2hhbnRyb19wb3N0cHJvYy5jOjM3OjM1OiB3YXJuaW5nOiBzeW1i b2wgJ2hhbnRyb19nMV9wb3N0cHJvY19yZWdzJyB3YXMgbm90IGRlY2xhcmVkLiBTaG91bGQgaXQg YmUgc3RhdGljPwo+Pj4KPj4+IHNtYXRjaDoKPj4+IHJrdmRlYy9ya3ZkZWMtdnA5LmM6MTkwOjQz OiB3YXJuaW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1dCBub3QgdXNlZCBbLVd1bnVz ZWQtYnV0LXNldC12YXJpYWJsZV0KPj4+IHJrdmRlYy9ya3ZkZWMtdnA5LmM6MjQ1OjQzOiB3YXJu aW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1dCBub3QgdXNlZCBbLVd1bnVzZWQtYnV0 LXNldC12YXJpYWJsZV0KPj4+IHJrdmRlYy9ya3ZkZWMtdnA5LmM6IHJrdmRlYy9ya3ZkZWMtdnA5 LmM6MjM2IGluaXRfaW50cmFfb25seV9wcm9icygpIGVycm9yOiBidWZmZXIgb3ZlcmZsb3cgJ3B0 cicgOTAgPD0gOTEKCnRoaXMgbG9va3MgYSBmYWxzZSBwb3NpdGl2ZS4KCkEgcG9ydGlvbiBvZiBt ZW1vcnkgcG9pbnRlZCB0byBieSBwdHIgaXMgaW5kZXhlZCB3aXRoIGkgKiAyMyArIG0sCndoZXJl IGkgcmFuZ2VzIGZyb20gMCB0byAzLCBpbmNsdXNpdmUsIGFuZCBtIHJhbmdlcyBmcm9tIDAgdG8g MjIsCmluY2x1c2l2ZSBpZiBpIDwgMywgb3RoZXJ3aXNlIG0gcmFuZ2VzIGZyb20gMCB0byAyMCwg aW5jbHVzaXZlLgpTbyB0aGUgbGFyZ2VzdCBpbmRleCB2YWx1ZSB3ZSBjb21wdXRlIGVxdWFscyA4 OSAoMyAqIDIzICsgMjApLgpCZWNhdXNlIHB0ciBwb2ludHMgdG8gc29tZXRoaW5nIHRoYXQgaXMg YXQgbGVhc3QgOTAgYnl0ZXMgbGFyZ2UsCjg5IGlzIGEgdmFsaWQgaW5kZXggYW5kIG5vIGdyZWF0 ZXIgaW5kZXggd2lsbCBiZSBldmVyIGNvbXB1dGVkLgoKPj4+IGhhbnRyby9oYW50cm9fZzJfdnA5 X2RlYy5jOiBoYW50cm8vaGFudHJvX2cyX3ZwOV9kZWMuYzo2NzAgY29uZmlnX3Byb2JzKCkgZXJy b3I6IG1lbWNweSgpICdhZGFwdGl2ZS0+aW50ZXJfbW9kZVtpXScgdG9vIHNtYWxsICg0IHZzIDIx KQo+Pj4gaGFudHJvL2hhbnRyb19nMl92cDlfZGVjLmM6IGhhbnRyby9oYW50cm9fZzJfdnA5X2Rl Yy5jOjY3MCBjb25maWdfcHJvYnMoKSBlcnJvcjogbWVtY3B5KCkgJ3Byb2JzLT5pbnRlcl9tb2Rl W2ldJyB0b28gc21hbGwgKDMgdnMgMjEKPj4+Cj4+PiBBbHNvIGEgYnVuY2ggb2Yga2VybmVsZG9j IHdhcm5pbmdzOgo+Pj4KPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDozMDogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnam9pbnQnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0 bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MzA6 IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3NpZ24nIG5vdCBkZXNjcmli ZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzZXMn IG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRl L21lZGlhL3Y0bDItdnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1i ZXIgJ2NsYXNzMF9iaXQnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRl eHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBh cmFtZXRlciBvciBtZW1iZXIgJ2JpdHMnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1l X212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MzA6IHdhcm5pbmc6IEZ1 bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzMF9mcicgbm90IGRlc2NyaWJlZCBpbiAn djRsMl92cDlfZnJhbWVfbXZfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDoz MDogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnZnInIG5vdCBkZXNjcmli ZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzMF9o cCcgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfbXZfY29udGV4dCcKPj4+IGluY2x1 ZGUvbWVkaWEvdjRsMi12cDkuaDozMDogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1l bWJlciAnaHAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+ PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6NTg6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRl ciBvciBtZW1iZXIgJ3R4OCcgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4 dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAndHgxNicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVf Y29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rp b24gcGFyYW1ldGVyIG9yIG1lbWJlciAndHgzMicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlf ZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnY29lZicgbm90IGRlc2NyaWJlZCBpbiAndjRs Ml92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2Fy bmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnc2tpcCcgbm90IGRlc2NyaWJlZCBp biAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1 ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnaW50ZXJfbW9kZScgbm90 IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEv djRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnaW50 ZXJwX2ZpbHRlcicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+ IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVy IG9yIG1lbWJlciAnaXNfaW50ZXInIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX2Nv bnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6NTg6IHdhcm5pbmc6IEZ1bmN0aW9u IHBhcmFtZXRlciBvciBtZW1iZXIgJ2NvbXBfbW9kZScgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92 cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2Fybmlu ZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnc2luZ2xlX3JlZicgbm90IGRlc2NyaWJl ZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDku aDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnY29tcF9yZWYnIG5v dCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlh L3Y0bDItdnA5Lmg6NTg6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3lf bW9kZScgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1 ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1l bWJlciAndXZfbW9kZScgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcK Pj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1l dGVyIG9yIG1lbWJlciAncGFydGl0aW9uJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFt ZV9jb250ZXh0Jwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjU4OiB3YXJuaW5nOiBGdW5j dGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdtdicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlf ZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo5Mzogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAncGFydGl0aW9uJyBub3QgZGVzY3JpYmVkIGlu ICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZw OS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdza2lwJyBub3Qg ZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9t ZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICdpbnRyYV9pbnRlcicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfc3ltYm9sX2Nv dW50cycKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo5Mzogd2FybmluZzogRnVuY3Rpb24g cGFyYW1ldGVyIG9yIG1lbWJlciAndHgzMnAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2Zy YW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5p bmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3R4MTZwJyBub3QgZGVzY3JpYmVkIGlu ICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZw OS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICd0eDhwJyBub3Qg ZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9t ZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICd5X21vZGUnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMn Cj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFt ZXRlciBvciBtZW1iZXIgJ3V2X21vZGUnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1l X3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6 IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NvbXAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0 bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6 OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NvbXBfcmVmJyBub3Qg ZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9t ZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICdzaW5nbGVfcmVmJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291 bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBw YXJhbWV0ZXIgb3IgbWVtYmVyICdtdl9tb2RlJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9m cmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJu aW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdmaWx0ZXInIG5vdCBkZXNjcmliZWQg aW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ212X2pvaW50 JyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5j bHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3Ig bWVtYmVyICdzaWduJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291 bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBw YXJhbWV0ZXIgb3IgbWVtYmVyICdjbGFzc2VzJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9m cmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJu aW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdjbGFzczAnIG5vdCBkZXNjcmliZWQg aW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2JpdHMnIG5v dCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRl L21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1i ZXIgJ2NsYXNzMF9mcCcgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfc3ltYm9sX2Nv dW50cycKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo5Mzogd2FybmluZzogRnVuY3Rpb24g cGFyYW1ldGVyIG9yIG1lbWJlciAnZnAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1l X3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6 IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzMF9ocCcgbm90IGRlc2NyaWJlZCBp biAndjRsMl92cDlfZnJhbWVfc3ltYm9sX2NvdW50cycKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12 cDkuaDo5Mzogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnaHAnIG5vdCBk ZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21l ZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIg J2NvZWZmJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+ Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0 ZXIgb3IgbWVtYmVyICdlb2InIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJv bF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MTY2OiB3YXJuaW5nOiBleHBl Y3RpbmcgcHJvdG90eXBlIGZvciB2NGwyX3ZwOV9hZGFwdF9jb2VmX3Byb2JzKCkuIFByb3RvdHlw ZSB3YXMgZm9yIHY0bDJfdnA5X2FkYXB0X25vbmNvZWZfcHJvYnMoKQo+Pj4gaW5zdGVhZAo+Pj4g ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9vbWFwM2lzcC5oOjEwNzogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAndnBfY2xrX3BvbCcgbm90IGRlc2NyaWJlZCBp biAnaXNwX2NjcDJfY2ZnJwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9vbWFw M2lzcC5oOjEwNzogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnbGFuZWNm Zycgbm90IGRlc2NyaWJlZCBpbiAnaXNwX2NjcDJfY2ZnJwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9xY29tL3ZlbnVzL2NvcmUuaDoyMDI6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBv ciBtZW1iZXIgJ3N5c19lcnJfZG9uZScgbm90IGRlc2NyaWJlZCBpbiAndmVudXNfY29yZScKPj4+ IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9jb3JlLmg6NDYyOiB3YXJuaW5nOiBG dW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdmd19taW5fY250JyBub3QgZGVzY3JpYmVkIGlu ICd2ZW51c19pbnN0Jwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2NvcmUu aDo0NjI6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2ZsYWdzJyBub3Qg ZGVzY3JpYmVkIGluICd2ZW51c19pbnN0Jwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29t L3ZlbnVzL2NvcmUuaDo0NjI6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIg J2RwYl9pZHMnIG5vdCBkZXNjcmliZWQgaW4gJ3ZlbnVzX2luc3QnCj4+PiBkcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oOjExNTogd2FybmluZzogRW51bSB2YWx1ZSAnSEFOVFJP X01PREVfVlA5X0RFQycgbm90IGRlc2NyaWJlZCBpbiBlbnVtICdoYW50cm9fY29kZWNfbW9kZScK Pj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3Lmg6MjExOiB3YXJuaW5n OiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICd0aWxlX2VkZ2UnIG5vdCBkZXNjcmliZWQg aW4gJ2hhbnRyb192cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50 cm8vaGFudHJvX2h3Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICdzZWdtZW50X21hcCcgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+ Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6 IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ21pc2MnIG5vdCBkZXNjcmliZWQgaW4gJ2hh bnRyb192cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFu dHJvX2h3Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdjbnRz JyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAncHJvYmFiaWxpdHlfdGFibGVzJyBub3QgZGVzY3JpYmVkIGluCj4+ PiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIg J2ZyYW1lX2NvbnRleHQnIG5vdCBkZXNjcmliZWQgaW4gJ2hhbnRyb192cDlfZGVjX2h3X2N0eCcK Pj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3Lmg6MjExOiB3YXJuaW5n OiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdjdXInIG5vdCBkZXNjcmliZWQgaW4gJ2hh bnRyb192cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFu dHJvX2h3Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdsYXN0 JyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAnYnNkX2N0cmxfb2Zmc2V0JyBub3QgZGVzY3JpYmVkIGluICdoYW50 cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRy b19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnc2VnbWVu dF9tYXBfc2l6ZScgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4g ZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1 bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2N0eF9jb3VudGVyc19vZmZzZXQnIG5vdCBkZXNj cmliZWQgaW4KPj4+ICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0YWdpbmcv bWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVy IG9yIG1lbWJlciAndGlsZV9pbmZvX29mZnNldCcgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3Zw OV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcu aDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3RpbGVfcl9pbmZv JyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAndGlsZV9jX2luZm8nIG5vdCBkZXNjcmliZWQgaW4gJ2hhbnRyb192 cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3 Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdsYXN0X3RpbGVf cicgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBh cmFtZXRlciBvciBtZW1iZXIgJ2xhc3RfdGlsZV9jJyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9f dnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19o dy5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnbGFzdF9zYnNf cicgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBh cmFtZXRlciBvciBtZW1iZXIgJ2xhc3Rfc2JzX2MnIG5vdCBkZXNjcmliZWQgaW4gJ2hhbnRyb192 cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3 Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdhY3RpdmVfc2Vn bWVudCcgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVy cy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9u IHBhcmFtZXRlciBvciBtZW1iZXIgJ2ZlYXR1cmVfZW5hYmxlZCcgbm90IGRlc2NyaWJlZCBpbiAn aGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9o YW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2Zl YXR1cmVfZGF0YScgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4K Pj4+IFlvdSBjYW4gdGVzdCBrZXJuZWxkb2MgeW91cnNlbGYgd2l0aDogc2NyaXB0cy9rZXJuZWwt ZG9jIC1ub25lIGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaAo+Pj4KPj4+IFJlZ2FyZHMsCj4+Pgo+ Pj4gCUhhbnMKPj4+Cj4+Pj4KPj4+PiBSZWdhcmRzLAo+Pj4+Cj4+Pj4gQW5kcnplago+Pj4+Cj4+ Pj4KPj4+Pj4KPj4+Pj4gUmVnYXJkcywKPj4+Pj4KPj4+Pj4gCUhhbnMKPj4+Pj4KPj4+Pj4gT24g MjkvMDkvMjAyMSAxODowNCwgQW5kcnplaiBQaWV0cmFzaWV3aWN6IHdyb3RlOgo+Pj4+Pj4gRGVh ciBhbGwsCj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBWUDkgY29kZWMgVjRM MiBjb250cm9sIGludGVyZmFjZSBhbmQgdHdvIGRyaXZlcnMKPj4+Pj4+IHVzaW5nIHRoZSBuZXcg Y29udHJvbHMuIEl0IGlzIGEgZm9sbG93LXVwIG9mIHByZXZpb3VzIHY2IHNlcmllcyBbMV0uCj4+ Pj4+Pgo+Pj4+Pj4gSW4gdGhpcyBpdGVyYXRpb24sIHdlJ3ZlIGltcGxlbWVudGVkIFZQOSBoYXJk d2FyZSBkZWNvZGluZyBvbiB0d28gZGV2aWNlczoKPj4+Pj4+IFJvY2tjaGlwIFZERUMgYW5kIEhh bnRybyBHMiwgYW5kIHRlc3RlZCBvbiBSSzMzOTksIGkuTVg4TVEgYW5kIGkuTVg4TVAuCj4+Pj4+ PiBUaGUgaS5NWDhNIGRyaXZlciBuZWVkcyBwcm9wZXIgcG93ZXIgZG9tYWlucyBzdXBwb3J0LCB0 aG91Z2gsIHdoaWNoIGlzIGEKPj4+Pj4+IHN1YmplY3Qgb2YgYSBkaWZmZXJlbnQgZWZmb3J0LCBi dXQgaW4gYWxsIDMgY2FzZXMgd2Ugd2VyZSBhYmxlIHRvIHJ1biB0aGUKPj4+Pj4+IGRyaXZlcnMu Cj4+Pj4+Pgo+Pj4+Pj4gR1N0cmVhbWVyIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUsIHRoZSBu ZWVkZWQgY2hhbmdlcyBoYXZlIGJlZW4gc3VibWl0dGVkCj4+Pj4+PiBieSBEYW5pZWwgQWxtZWlk YSBbMl0uIFRoaXMgTVIgaXMgcmVhZHkgdG8gYmUgbWVyZ2VkLCBhbmQganVzdCBuZWVkcyB0aGUK Pj4+Pj4+IFZQOSBWNEwyIGNvbnRyb2xzIHRvIGJlIG1lcmdlZCBhbmQgcmVsZWFzZWQuCj4+Pj4+ Pgo+Pj4+Pj4gQm90aCBya3ZkZWMgYW5kIGhhbnRybyBkcml2ZXJzIGFyZSBwYXNzaW5nIGEgc2ln bmlmaWNhbnQgbnVtYmVyIG9mIFZQOSB0ZXN0cwo+Pj4+Pj4gdXNpbmcgRmx1c3RlclszXS4gVGhl cmUgYXJlIHN0aWxsIGEgZmV3IHRlc3RzIHRoYXQgYXJlIG5vdCBwYXNzaW5nLCBkdWUgdG8KPj4+ Pj4+IGR5bmFtaWMgZnJhbWUgcmVzaXplIChub3QgeWV0IHN1cHBvcnRlZCBieSBWNEwyKSBhbmQg c21hbGwgc2l6ZSB2aWRlb3MKPj4+Pj4+IChkdWUgdG8gSVAgYmxvY2sgbGltaXRhdGlvbnMpLgo+ Pj4+Pj4KPj4+Pj4+IFRoZSBzZXJpZXMgYWRkcyB0aGUgVlA5IGNvZGVjIFY0TDIgY29udHJvbCBB UEkgYXMgdUFQSSwgc28gaXQgYWltcyBhdCBiZWluZwo+Pj4+Pj4gbWVyZ2VkIHdpdGhvdXQgcGFz c2luZyB0aHJvdWdoIHN0YWdpbmcsIGFzIGFncmVlZFs0XS4gVGhlIEFCSSBoYXMgYmVlbiBjaGVj a2VkCj4+Pj4+PiBmb3IgcGFkZGluZyBhbmQgdmVyaWZpZWQgdG8gY29udGFpbiBubyBob2xlcy4K Pj4+Pj4+Cj4+Pj4+PiBbMV0gaHR0cHM6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9s aW51eC1tZWRpYS9saXN0Lz9zZXJpZXM9NjM3Nwo+Pj4+Pj4gWzJdIGh0dHBzOi8vZ2l0bGFiLmZy ZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMv MjE0NAo+Pj4+Pj4gWzNdIGh0dHBzOi8vZ2l0aHViLmNvbS9mbHVlbmRvL2ZsdXN0ZXIKPj4+Pj4+ IFs0XSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1tZWRpYS9iOGY4M2M5My02N2ZkLTA5 ZjUtOTMxNC0xNTc0NmNiZmRjNjFAeHM0YWxsLm5sLwo+Pj4+Pj4KPj4+Pj4+IFRoZSBzZXJpZXMg ZGVwZW5kcyBvbiB0aGUgWVVWIHRpbGVkIGZvcm1hdCBzdXBwb3J0IHByZXBhcmVkIGJ5IEV6ZXF1 aWVsOgo+Pj4+Pj4gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtbWVkaWEvbXNn MTk3MDQ3Lmh0bWwKPj4+Pj4+Cj4+Pj4+PiBSZWJhc2VkIG9udG8gbGF0ZXN0IG1lZGlhX3RyZWUu Cj4+Pj4+Pgo+Pj4+Pj4gQ2hhbmdlcyByZWxhdGVkIHRvIHY2Ogo+Pj4+Pj4gLSBtb3ZlZCBzZXR0 aW5nIHRpbGUgZmlsdGVyIGFuZCB0aWxlIGJzZCBhdXhpbGlhcnkgYnVmZmVyIGFkZHJlc3NlcyBz bwo+Pj4+Pj4gdGhhdCB0aGV5IGFyZSBhbHdheXMgc2V0LCBldmVuIGlmIG5vIHRpbGVzIGFyZSB1 c2VkICh0aGFua3MsIEplcm5laikKPj4+Pj4+IC0gYWRkZWQgYSBjb21tZW50IG5lYXIgdGhlIHBs YWNlIHdoZXJlIHRoZSAzMi1iaXQgRE1BIG1hc2sgaXMgYXBwbGllZAo+Pj4+Pj4gICAgICAodGhh bmtzLCBOaWNvbGFzKQo+Pj4+Pj4gLSBpbXByb3ZlZCBjb25zaXN0ZW5jeSBpbiByZWdpc3RlciBu YW1lcyAodGhhbmtzLCBOaWNvbGFzKQo+Pj4+Pj4KPj4+Pj4+IENoYW5nZXMgcmVsYXRlZCB0byB2 NToKPj4+Pj4+IC0gaW1wcm92ZWQgdGhlIGRvYyBjb21tZW50cyBhcyBwZXIgRXplcXVpZWwncyBy ZXZpZXcgKHRoYW5rcywgRXplcXVpZWwpCj4+Pj4+PiAtIGltcHJvdmVkIHBkZiBvdXRwdXQgb2Yg ZG9jdW1lbnRhdGlvbgo+Pj4+Pj4gLSBhZGRlZCBCZW5qYW1pbidzIFJldmlld2VkLWJ5ICh0aGFu a3MsIEJlbmphbWluKQo+Pj4+Pj4KPj4+Pj4+IENoYW5nZXMgcmVsYXRlZCB0byB2NDoKPj4+Pj4+ IC0gcmVtb3ZlZCB1bnVzZWQgZW51bSB2NGwyX3ZwOV9pbnRyYV9wcmVkaWN0aW9uX21vZGUKPj4+ Pj4+IC0gY29udmVydGVkIHJlbWFpbmluZyBlbnVtcyB0byBkZWZpbmVzIHRvIGZvbGxvdyB0aGUg Y29udmVudGlvbgo+Pj4+Pj4gLSBpbXByb3ZlZCB0aGUgZG9jdW1lbnRhdGlvbiwgaW4gcGFydGlj dWxhciBiZXR0ZXIgZG9jdW1lbnRlZCBob3cgdG8gdXNlIHNlZ21lbnRhdGlvbgo+Pj4+Pj4gZmVh dHVyZXMKPj4+Pj4+Cj4+Pj4+PiBDaGFuZ2VzIHJlbGF0ZWQgdG8gdjM6Cj4+Pj4+Pgo+Pj4+Pj4g QXBwbHkgc3VnZ2VzdGlvbnMgZnJvbSBKZXJuZWoncyByZXZpZXcgKHRoYW5rcywgSmVybmVqKToK Pj4+Pj4+IC0gcmVuYW1lZCBhIGNvbnRyb2wgYW5kIHR3byBzdHJ1Y3RzOgo+Pj4+Pj4gCVY0TDJf Q1RSTF9UWVBFX1ZQOV9DT01QUkVTU0VEX0hEUl9QUk9CUyA9Pgo+Pj4+Pj4gCQlWNEwyX0NUUkxf VFlQRV9WUDlfQ09NUFJFU1NFRF9IRFIKPj4+Pj4+IAl2NGwyX2N0cmxfdnA5X2NvbXByZXNzZWRf aGRyX3Byb2JzID0+Cj4+Pj4+PiAJCXY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHIKPj4+Pj4+ IAl2NGwyX3ZwOV9tdl9jb21wcmVzc2VkX2hkcl9wcm9icyA9PiB2NGwyX3ZwOV9tdl9wcm9icwo+ Pj4+Pj4gLSBtb3ZlZCB0eF9tb2RlIHRvIHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHIKPj4+ Pj4+IC0gZml4ZWQgZW51bSB2NGwyX3ZwOV9yZWZfZnJhbWVfc2lnbl9iaWFzIHZhbHVlcyAod2hp Y2ggYXJlIHVzZWQgdG8gdGVzdCBhIGJpdGZpZWxkKQo+Pj4+Pj4gLSBleHBsaWNpdGx5IGFzc2ln bmVkIHZhbHVlcyB0byBhbGwgb3RoZXIgdnA5IGVudW1zCj4+Pj4+Pgo+Pj4+Pj4gQXBwbHkgc3Vn Z2VzdGlvbiBmcm9tIE5pY29sYXMncyByZXZpZXcgKHRoYW5rcywgTmljb2xhcyk6Cj4+Pj4+PiAt IGV4cGxpY2l0bHkgc3RhdGVkIHRoYXQgdGhlIHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHIg Y29udHJvbCBpcyBvcHRpb25hbAo+Pj4+Pj4gYW5kIGltcGxlbWVudGVkIG9ubHkgYnkgZHJpdmVy cyB3aGljaCBuZWVkIGl0Cj4+Pj4+Pgo+Pj4+Pj4gQ2hhbmdlcyByZWxhdGVkIHRvIHRoZSBSRkMg djI6Cj4+Pj4+Pgo+Pj4+Pj4gLSBhZGRlZCBhbm90aGVyIGRyaXZlciBpbmNsdWRpbmcgYSBwb3N0 cHJvY2Vzc29yIHRvIGRlLXRpbGUKPj4+Pj4+ICAgICAgICAgICAgY29kZWMtc3BlY2lmaWMgdGls aW5nCj4+Pj4+PiAtIHJld29ya2VkIHVBUEkgc3RydWN0cyBsYXlvdXQgdG8gZm9sbG93IFZQOCBz dHlsZQo+Pj4+Pj4gLSBjaGFuZ2VkIHZhbGlkYXRpb24gb2YgbG9vcCBmaWx0ZXIgcGFyYW1zCj4+ Pj4+PiAtIGNoYW5nZWQgdmFsaWRhdGlvbiBvZiBzZWdtZW50YXRpb24gcGFyYW1zCj4+Pj4+PiAt IGNoYW5nZWQgdmFsaWRhdGlvbiBvZiBWUDkgZnJhbWUgcGFyYW1zCj4+Pj4+PiAtIHJlbW92ZWQg bGV2ZWwgbG9va3VwIGFycmF5IGZyb20gbG9vcCBmaWx0ZXIgc3RydWN0Cj4+Pj4+PiAgICAgICAg ICAgIChjYW4gYmUgY29tcHV0ZWQgYnkgZHJpdmVycykKPj4+Pj4+IC0gcmVuYW1lZCBzb21lIGVu dW0gdmFsdWVzIHRvIG1hdGNoIHRoZSBzcGVjIG1vcmUgY2xvc2VseQo+Pj4+Pj4gLSBWNEwyIFZQ OSBsaWJyYXJ5IGNoYW5nZWQgdGhlICdlb2InIG1lbWJlciBvZgo+Pj4+Pj4gICAgICAgICAgICAn c3RydWN0IHY0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnIHNvIHRoYXQgaXQgaXMgYW4gYXJy YXkKPj4+Pj4+ICAgICAgICAgICAgb2YgcG9pbnRlcnMgaW5zdGVhZCBvZiBhbiBhcnJheSBvZiBw b2ludGVycyB0byBhcnJheXMKPj4+Pj4+ICAgICAgICAgICAgKElQcyBzdWNoIGFzIGcyIGNyZWF0 aXZlbHkgcGFzcyBwYXJ0cyBvZiB0aGUgJ2VvYicgY291bnRzIGluCj4+Pj4+PiAgICAgICAgICAg IHRoZSAnY29lZmYnIGNvdW50cykKPj4+Pj4+IC0gZmFjdG9yZWQgb3V0IHNldmVyYWwgcmVwZWF0 ZWQgcG9ydGlvbnMgb2YgY29kZQo+Pj4+Pj4gLSBtaW5vciBuaXRwaWNrcyBhbmQgY2xlYW51cHMK Pj4+Pj4+Cj4+Pj4+PiBBbmRyemVqIFBpZXRyYXNpZXdpY3ogKDYpOgo+Pj4+Pj4gICAgICBtZWRp YTogdWFwaTogQWRkIFZQOSBzdGF0ZWxlc3MgZGVjb2RlciBjb250cm9scwo+Pj4+Pj4gICAgICBt ZWRpYTogQWRkIFZQOSB2NGwyIGxpYnJhcnkKPj4+Pj4+ICAgICAgbWVkaWE6IGhhbnRybzogUmVu YW1lIHJlZ2lzdGVycwo+Pj4+Pj4gICAgICBtZWRpYTogaGFudHJvOiBQcmVwYXJlIGZvciBvdGhl ciBHMiBjb2RlY3MKPj4+Pj4+ICAgICAgbWVkaWE6IGhhbnRybzogU3VwcG9ydCBWUDkgb24gdGhl IEcyIGNvcmUKPj4+Pj4+ICAgICAgbWVkaWE6IGhhbnRybzogU3VwcG9ydCBOVjEyIG9uIHRoZSBH MiBjb3JlCj4+Pj4+Pgo+Pj4+Pj4gQm9yaXMgQnJlemlsbG9uICgxKToKPj4+Pj4+ICAgICAgbWVk aWE6IHJrdmRlYzogQWRkIHRoZSBWUDkgYmFja2VuZAo+Pj4+Pj4KPj4+Pj4+IEV6ZXF1aWVsIEdh cmNpYSAoNCk6Cj4+Pj4+PiAgICAgIGhhbnRybzogcG9zdHByb2M6IEZpeCBtb3Rpb24gdmVjdG9y IHNwYWNlIHNpemUKPj4+Pj4+ICAgICAgaGFudHJvOiBwb3N0cHJvYzogSW50cm9kdWNlIHN0cnVj dCBoYW50cm9fcG9zdHByb2Nfb3BzCj4+Pj4+PiAgICAgIGhhbnRybzogU2ltcGxpZnkgcG9zdHBy b2Nlc3Nvcgo+Pj4+Pj4gICAgICBoYW50cm86IEFkZCBxdWlyayBmb3IgTlYxMi9OVjEyXzRMNCBj YXB0dXJlIGZvcm1hdAo+Pj4+Pj4KPj4+Pj4+ICAgICAuLi4vdXNlcnNwYWNlLWFwaS9tZWRpYS92 NGwvYmlibGlvLnJzdCAgICAgICAgfCAgIDEwICsKPj4+Pj4+ICAgICAuLi4vbWVkaWEvdjRsL2V4 dC1jdHJscy1jb2RlYy1zdGF0ZWxlc3MucnN0ICAgfCAgNTczICsrKysrCj4+Pj4+PiAgICAgLi4u L21lZGlhL3Y0bC9waXhmbXQtY29tcHJlc3NlZC5yc3QgICAgICAgICAgIHwgICAxNSArCj4+Pj4+ PiAgICAgLi4uL21lZGlhL3Y0bC92aWRpb2MtZy1leHQtY3RybHMucnN0ICAgICAgICAgIHwgICAg OCArCj4+Pj4+PiAgICAgLi4uL21lZGlhL3Y0bC92aWRpb2MtcXVlcnljdHJsLnJzdCAgICAgICAg ICAgIHwgICAxMiArCj4+Pj4+PiAgICAgLi4uL21lZGlhL3ZpZGVvZGV2Mi5oLnJzdC5leGNlcHRp b25zICAgICAgICAgIHwgICAgMiArCj4+Pj4+PiAgICAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv S2NvbmZpZyAgICAgICAgICAgICAgIHwgICAgNCArCj4+Pj4+PiAgICAgZHJpdmVycy9tZWRpYS92 NGwyLWNvcmUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCj4+Pj4+PiAgICAgZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMgICAgIHwgIDE4MCArKwo+Pj4+Pj4g ICAgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5jICAgICB8ICAgIDgg Kwo+Pj4+Pj4gICAgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItaW9jdGwuYyAgICAgICAg ICB8ICAgIDEgKwo+Pj4+Pj4gICAgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItdnA5LmMg ICAgICAgICAgICB8IDE4NTAgKysrKysrKysrKysrKysrKysKPj4+Pj4+ICAgICBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL0tjb25maWcgICAgICAgICAgfCAgICAxICsKPj4+Pj4+ICAgICBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL01ha2VmaWxlICAgICAgICAgfCAgICA3ICstCj4+ Pj4+PiAgICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8uaCAgICAgICAgIHwg ICA0MCArLQo+Pj4+Pj4gICAgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2Ry di5jICAgICB8ICAgMjMgKy0KPj4+Pj4+ICAgICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJv L2hhbnRyb19nMi5jICAgICAgfCAgIDI3ICsKPj4+Pj4+ICAgICAuLi4vc3RhZ2luZy9tZWRpYS9o YW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMgfCAgIDY5ICstCj4+Pj4+PiAgICAgZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfcmVncy5oIHwgIDEzMiArLQo+Pj4+Pj4gICAg IC4uLi9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfdnA5X2RlYy5jICB8ICA5ODAgKysr KysrKysrCj4+Pj4+PiAgICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcu aCAgICAgIHwgICA4MyArLQo+Pj4+Pj4gICAgIC4uLi9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50 cm9fcG9zdHByb2MuYyAgICB8ICAgNzkgKy0KPj4+Pj4+ICAgICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb192NGwyLmMgICAgfCAgIDIwICsKPj4+Pj4+ICAgICBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb192cDkuYyAgICAgfCAgMjQwICsrKwo+Pj4+Pj4gICAg IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3ZwOS5oICAgICB8ICAxMDMgKwo+ Pj4+Pj4gICAgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMgICB8 ICAgMzggKy0KPj4+Pj4+ICAgICAuLi4vc3RhZ2luZy9tZWRpYS9oYW50cm8vcm9ja2NoaXBfdnB1 X2h3LmMgICAgfCAgICA3ICstCj4+Pj4+PiAgICAgLi4uL3N0YWdpbmcvbWVkaWEvaGFudHJvL3Nh bWE1ZDRfdmRlY19ody5jICAgIHwgICAgMyArLQo+Pj4+Pj4gICAgIGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9ya3ZkZWMvS2NvbmZpZyAgICAgICAgICB8ICAgIDEgKwo+Pj4+Pj4gICAgIGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9ya3ZkZWMvTWFrZWZpbGUgICAgICAgICB8ICAgIDIgKy0KPj4+Pj4+ICAg ICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy12cDkuYyAgICAgfCAxMDc4ICsr KysrKysrKysKPj4+Pj4+ICAgICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy5j ICAgICAgICAgfCAgIDUyICstCj4+Pj4+PiAgICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRl Yy9ya3ZkZWMuaCAgICAgICAgIHwgICAxMiArLQo+Pj4+Pj4gICAgIGluY2x1ZGUvbWVkaWEvdjRs Mi1jdHJscy5oICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwo+Pj4+Pj4gICAgIGluY2x1ZGUv bWVkaWEvdjRsMi12cDkuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxODIgKysKPj4+Pj4+ICAg ICBpbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oICAgICAgICAgICAgfCAgMjg0ICsr Kwo+Pj4+Pj4gICAgIGluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCAgICAgICAgICAgICAg ICB8ICAgIDYgKwo+Pj4+Pj4gICAgIDM3IGZpbGVzIGNoYW5nZWQsIDYwMzMgaW5zZXJ0aW9ucygr KSwgMTA0IGRlbGV0aW9ucygtKQo+Pj4+Pj4gICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3Y0bDItY29yZS92NGwyLXZwOS5jCj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyLmMKPj4+Pj4+ICAgICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfdnA5 X2RlYy5jCj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRp YS9oYW50cm8vaGFudHJvX3ZwOS5jCj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3ZwOS5oCj4+Pj4+PiAgICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvcmt2ZGVjLXZwOS5jCj4+Pj4+ PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaAo+Pj4+Pj4K Pj4+Pj4+Cj4+Pj4+PiBiYXNlLWNvbW1pdDogZTRlNzM3YmI1YzE3MGRmNjEzNWExMjc3MzlhOWU2 MTQ4ZWUzZGE4Mgo+Pj4+Pj4KPj4+Pj4KPj4+Pgo+Pj4KPj4KPiAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxp c3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg== 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 CBF61C433F5 for ; Tue, 16 Nov 2021 13:16:10 +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 8DD0961423 for ; Tue, 16 Nov 2021 13:16:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8DD0961423 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com 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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=TSr/KBlPhsKMQcw54q/cz+XiKyjzTVItTYiztPGq7xM=; b=S2OqXehe3NT4HcKJ111m0SSbc8 Wh5i16F91zsLGlhlcxj6L7ujAnGeGtaOvkAye7Kw8/1GJ5+4XYKrVnrvYgMDRGZQN8LUmcKecKoOW k2xXkCVO0UlTVMF4PTPUIkQGcoRdcXGa4zJdBx5PjYS76JIbIhUa/r91L5CRSgmvO1C61fwjUpR2Y yFqi9J41ItqhuTNMjTKFz6DJRkQF8G0KEvqA9j/+Ftb24ueyHfViVZdkhMaIRmRCR23tEe7k+Wo3i PxPJTRBBV+qnoBsY0BJ4bz58XpB4aGWx+foMjEiZs6EuOXURqPNDgj2OY/Pvbym4UcaG+AsEShBmu 6TgxARTw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mmyIS-001mWI-05; Tue, 16 Nov 2021 13:14:48 +0000 Received: from bhuna.collabora.co.uk ([46.235.227.227]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mmyIM-001mTz-Fs; Tue, 16 Nov 2021 13:14:45 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id D0D891F45664 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=collabora.com; s=mail; t=1637068476; bh=a5RLKSmmqx5Mnnmn0wdTu5DPpiBq1GMVZZp/70TqdLE=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=nVyV2rIgrKuOh2G1Cp6yFXxySieCdAW4FacmOPb2QHLVgeTUXUB3uSf2+FPWMyNUE XoFe9Uo4iqP12sIno1vl60EekBVBOxYkDACWtIJMHpKcACC8acgj5Tmq3PnPP/8qiI aE1KKofuwCQ6jkT/H+yPQq4OTS1PSqBN9BbJglADftrordkDN9us8ZV52YcJaQMtCu L801R7//EOrCJ8aJs8TkbdOsnp3hw1XZlz1UmcSW5MHu1e5kmU+8sEiPLIA626Aysh 6W/f3atZfy1pcoVl19aJGwMqAx2OavnZQUXzQv4V5Jq/yIswHd0zsV9x1VodtPxeJC QwFnfixdqqdnA== Subject: Re: [PATCH v7 00/11] VP9 codec V4L2 control interface To: Hans Verkuil , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev Cc: Benjamin Gaignard , Boris Brezillon , Ezequiel Garcia , Fabio Estevam , Greg Kroah-Hartman , Heiko Stuebner , Jernej Skrabec , Mauro Carvalho Chehab , Nicolas Dufresne , NXP Linux Team , Pengutronix Kernel Team , Philipp Zabel , Sascha Hauer , Shawn Guo , kernel@collabora.com References: <20210929160439.6601-1-andrzej.p@collabora.com> <9db47ebc-cb95-872d-feb4-d6432a74f2cb@xs4all.nl> <29f27bad-28ae-12ff-eed6-79902bd5b722@collabora.com> <4da113ef-7b12-3729-0186-f746901c892a@xs4all.nl> From: Andrzej Pietrasiewicz Message-ID: <69f16bb0-4b5a-18b3-e244-60deb029d239@collabora.com> Date: Tue, 16 Nov 2021 14:14:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <4da113ef-7b12-3729-0186-f746901c892a@xs4all.nl> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211116_051442_829902_E526FEEE X-CRM114-Status: GOOD ( 19.64 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpXIGRuaXUgMTYuMTEuMjAyMSBvwqAwOToyMSwgSGFucyBWZXJrdWlsIHBpc3plOgo+IE9u IDE2LzExLzIwMjEgMDk6MDksIEFuZHJ6ZWogUGlldHJhc2lld2ljeiB3cm90ZToKPj4gSGkgSGFu cywKPj4KPj4gVyBkbml1IDE1LjExLjIwMjEgb8KgMjI6MTYsIEhhbnMgVmVya3VpbCBwaXN6ZToK Pj4+IE9uIDE1LzExLzIwMjEgMTg6MTQsIEFuZHJ6ZWogUGlldHJhc2lld2ljeiB3cm90ZToKPj4+ PiBIaSBIYW5zLAo+Pj4+Cj4+Pj4gVyBkbml1IDE1LjExLjIwMjEgb8KgMTY6MDcsIEhhbnMgVmVy a3VpbCBwaXN6ZToKPj4+Pj4gQW5kcnplaiwKPj4+Pj4KPj4+Pj4gQ2FuIHlvdSByZWJhc2UgdGhp cyBzZXJpZXMgb24gdG9wIG9mIHRoZSBtYXN0ZXIgYnJhbmNoIG9mCj4+Pj4+IGh0dHBzOi8vZ2l0 LmxpbnV4dHYub3JnL21lZGlhX3N0YWdlLmdpdC8gPyBVbmZvcnR1bmF0ZWx5IHRoaXMgdjcgbm8g bG9uZ2VyCj4+Pj4+IGFwcGxpZXMuIFNwZWNpZmljYWxseSAicmt2ZGVjOiBBZGQgdGhlIFZQOSBi YWNrZW5kIiBmYWlsZWQgaW4gYSBub24tdHJpdmlhbAo+Pj4+PiBtYW5uZXIuCj4+Pj4KPj4+PiBU aGlzIGlzIGEgYnJhbmNoIGZvciB5b3U6Cj4+Pj4KPj4+PiBodHRwczovL2dpdGxhYi5jb2xsYWJv cmEuY29tL2xpbnV4L2Zvci11cHN0cmVhbS8tL3RyZWUvdnA5LXVhcGkKPj4+Cj4+PiBJJ20gZ2V0 dGluZyBhIGJ1bmNoIG9mIHNwYXJzZS9zbWF0Y2ggd2FybmluZ3M6Cj4+Pgo+Pgo+PiBUaGFua3Mg Zm9yIGZpbmRpbmcgdGhpcywgSSB3aWxsIHJlLWNyZWF0ZSB0aGUgYnJhbmNoIGFuZCBsZXQgeW91 IGtub3cgb24gaXJjLgo+PiBTb21lIG9mIHRoZSBiZWxvdyBhcmUgImZhbHNlIHBvc2l0aXZlcywg bmFtZWx5Ogo+Pgo+PiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL29tYXAzaXNwL29tYXAzaXNwLmgK Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2NvcmUuaAo+IAo+IEFoLCBzb3Jy eSwgSSB0aG91Z2ggSSBoYWQgZmlsdGVyZWQgdGhvc2Ugb3V0LiBPYnZpb3VzbHkgeW91IGNhbiBp Z25vcmUgdGhvc2UuCj4gCj4gUGxlYXNlIHBvc3QgYSB2OC4gVGhhdCB3YXkgdGhlIHNlcmllcyBp cyBhcmNoaXZlZCBvbiBsb3JlLiBBbmQgaXQgd29ya3MgYmV0dGVyCj4gd2l0aCBwYXRjaHdvcmsu CgpTdXJlLCBubyBwcm9ibGVtLiBBbHNvIHBsZWFzZSBzZWUgYmVsb3cuCgo+IAo+IFJlZ2FyZHMs Cj4gCj4gCUhhbnMKPiAKPj4KPj4gd2hpY2ggYXJlIG5vdCB0b3VjaGVkIGJ5IHRoZSBzZXJpZXMu Cj4+Cj4+IFJlZ2FyZHMsCj4+Cj4+IEFuZHJ6ZWoKPj4KPj4+IHNwYXJzZToKPj4+IHJrdmRlYy9y a3ZkZWMtdnA5LmM6MTkwOjQzOiB3YXJuaW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1 dCBub3QgdXNlZCBbLVd1bnVzZWQtYnV0LXNldC12YXJpYWJsZV0KPj4+IHJrdmRlYy9ya3ZkZWMt dnA5LmM6MjQ1OjQzOiB3YXJuaW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1dCBub3Qg dXNlZCBbLVd1bnVzZWQtYnV0LXNldC12YXJpYWJsZV0KPj4+IFNQQVJTRTpoYW50cm8vaGFudHJv X3Bvc3Rwcm9jLmMgaGFudHJvL2hhbnRyb19wb3N0cHJvYy5jOjM3OjM1OiB3YXJuaW5nOiBzeW1i b2wgJ2hhbnRyb19nMV9wb3N0cHJvY19yZWdzJyB3YXMgbm90IGRlY2xhcmVkLiBTaG91bGQgaXQg YmUgc3RhdGljPwo+Pj4KPj4+IHNtYXRjaDoKPj4+IHJrdmRlYy9ya3ZkZWMtdnA5LmM6MTkwOjQz OiB3YXJuaW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1dCBub3QgdXNlZCBbLVd1bnVz ZWQtYnV0LXNldC12YXJpYWJsZV0KPj4+IHJrdmRlYy9ya3ZkZWMtdnA5LmM6MjQ1OjQzOiB3YXJu aW5nOiB2YXJpYWJsZSAnZGVjX3BhcmFtcycgc2V0IGJ1dCBub3QgdXNlZCBbLVd1bnVzZWQtYnV0 LXNldC12YXJpYWJsZV0KPj4+IHJrdmRlYy9ya3ZkZWMtdnA5LmM6IHJrdmRlYy9ya3ZkZWMtdnA5 LmM6MjM2IGluaXRfaW50cmFfb25seV9wcm9icygpIGVycm9yOiBidWZmZXIgb3ZlcmZsb3cgJ3B0 cicgOTAgPD0gOTEKCnRoaXMgbG9va3MgYSBmYWxzZSBwb3NpdGl2ZS4KCkEgcG9ydGlvbiBvZiBt ZW1vcnkgcG9pbnRlZCB0byBieSBwdHIgaXMgaW5kZXhlZCB3aXRoIGkgKiAyMyArIG0sCndoZXJl IGkgcmFuZ2VzIGZyb20gMCB0byAzLCBpbmNsdXNpdmUsIGFuZCBtIHJhbmdlcyBmcm9tIDAgdG8g MjIsCmluY2x1c2l2ZSBpZiBpIDwgMywgb3RoZXJ3aXNlIG0gcmFuZ2VzIGZyb20gMCB0byAyMCwg aW5jbHVzaXZlLgpTbyB0aGUgbGFyZ2VzdCBpbmRleCB2YWx1ZSB3ZSBjb21wdXRlIGVxdWFscyA4 OSAoMyAqIDIzICsgMjApLgpCZWNhdXNlIHB0ciBwb2ludHMgdG8gc29tZXRoaW5nIHRoYXQgaXMg YXQgbGVhc3QgOTAgYnl0ZXMgbGFyZ2UsCjg5IGlzIGEgdmFsaWQgaW5kZXggYW5kIG5vIGdyZWF0 ZXIgaW5kZXggd2lsbCBiZSBldmVyIGNvbXB1dGVkLgoKPj4+IGhhbnRyby9oYW50cm9fZzJfdnA5 X2RlYy5jOiBoYW50cm8vaGFudHJvX2cyX3ZwOV9kZWMuYzo2NzAgY29uZmlnX3Byb2JzKCkgZXJy b3I6IG1lbWNweSgpICdhZGFwdGl2ZS0+aW50ZXJfbW9kZVtpXScgdG9vIHNtYWxsICg0IHZzIDIx KQo+Pj4gaGFudHJvL2hhbnRyb19nMl92cDlfZGVjLmM6IGhhbnRyby9oYW50cm9fZzJfdnA5X2Rl Yy5jOjY3MCBjb25maWdfcHJvYnMoKSBlcnJvcjogbWVtY3B5KCkgJ3Byb2JzLT5pbnRlcl9tb2Rl W2ldJyB0b28gc21hbGwgKDMgdnMgMjEKPj4+Cj4+PiBBbHNvIGEgYnVuY2ggb2Yga2VybmVsZG9j IHdhcm5pbmdzOgo+Pj4KPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDozMDogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnam9pbnQnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0 bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MzA6 IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3NpZ24nIG5vdCBkZXNjcmli ZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzZXMn IG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRl L21lZGlhL3Y0bDItdnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1i ZXIgJ2NsYXNzMF9iaXQnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRl eHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBh cmFtZXRlciBvciBtZW1iZXIgJ2JpdHMnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1l X212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MzA6IHdhcm5pbmc6IEZ1 bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzMF9mcicgbm90IGRlc2NyaWJlZCBpbiAn djRsMl92cDlfZnJhbWVfbXZfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDoz MDogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnZnInIG5vdCBkZXNjcmli ZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6MzA6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzMF9o cCcgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfbXZfY29udGV4dCcKPj4+IGluY2x1 ZGUvbWVkaWEvdjRsMi12cDkuaDozMDogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1l bWJlciAnaHAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX212X2NvbnRleHQnCj4+ PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6NTg6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRl ciBvciBtZW1iZXIgJ3R4OCcgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4 dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAndHgxNicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVf Y29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rp b24gcGFyYW1ldGVyIG9yIG1lbWJlciAndHgzMicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlf ZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnY29lZicgbm90IGRlc2NyaWJlZCBpbiAndjRs Ml92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2Fy bmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnc2tpcCcgbm90IGRlc2NyaWJlZCBp biAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1 ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnaW50ZXJfbW9kZScgbm90 IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEv djRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnaW50 ZXJwX2ZpbHRlcicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+ IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVy IG9yIG1lbWJlciAnaXNfaW50ZXInIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX2Nv bnRleHQnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6NTg6IHdhcm5pbmc6IEZ1bmN0aW9u IHBhcmFtZXRlciBvciBtZW1iZXIgJ2NvbXBfbW9kZScgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92 cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2Fybmlu ZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnc2luZ2xlX3JlZicgbm90IGRlc2NyaWJl ZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDku aDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnY29tcF9yZWYnIG5v dCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX2NvbnRleHQnCj4+PiBpbmNsdWRlL21lZGlh L3Y0bDItdnA5Lmg6NTg6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3lf bW9kZScgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcKPj4+IGluY2x1 ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1l bWJlciAndXZfbW9kZScgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfY29udGV4dCcK Pj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo1ODogd2FybmluZzogRnVuY3Rpb24gcGFyYW1l dGVyIG9yIG1lbWJlciAncGFydGl0aW9uJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFt ZV9jb250ZXh0Jwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjU4OiB3YXJuaW5nOiBGdW5j dGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdtdicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlf ZnJhbWVfY29udGV4dCcKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo5Mzogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAncGFydGl0aW9uJyBub3QgZGVzY3JpYmVkIGlu ICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZw OS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdza2lwJyBub3Qg ZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9t ZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICdpbnRyYV9pbnRlcicgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfc3ltYm9sX2Nv dW50cycKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo5Mzogd2FybmluZzogRnVuY3Rpb24g cGFyYW1ldGVyIG9yIG1lbWJlciAndHgzMnAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2Zy YW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5p bmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3R4MTZwJyBub3QgZGVzY3JpYmVkIGlu ICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZw OS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICd0eDhwJyBub3Qg ZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9t ZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICd5X21vZGUnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMn Cj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFt ZXRlciBvciBtZW1iZXIgJ3V2X21vZGUnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1l X3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6 IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NvbXAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0 bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6 OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NvbXBfcmVmJyBub3Qg ZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9t ZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICdzaW5nbGVfcmVmJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291 bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBw YXJhbWV0ZXIgb3IgbWVtYmVyICdtdl9tb2RlJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9m cmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJu aW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdmaWx0ZXInIG5vdCBkZXNjcmliZWQg aW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ212X2pvaW50 JyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5j bHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3Ig bWVtYmVyICdzaWduJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291 bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBw YXJhbWV0ZXIgb3IgbWVtYmVyICdjbGFzc2VzJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9m cmFtZV9zeW1ib2xfY291bnRzJwo+Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJu aW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdjbGFzczAnIG5vdCBkZXNjcmliZWQg aW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDIt dnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2JpdHMnIG5v dCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRl L21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1i ZXIgJ2NsYXNzMF9mcCcgbm90IGRlc2NyaWJlZCBpbiAndjRsMl92cDlfZnJhbWVfc3ltYm9sX2Nv dW50cycKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaDo5Mzogd2FybmluZzogRnVuY3Rpb24g cGFyYW1ldGVyIG9yIG1lbWJlciAnZnAnIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1l X3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6 IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2NsYXNzMF9ocCcgbm90IGRlc2NyaWJlZCBp biAndjRsMl92cDlfZnJhbWVfc3ltYm9sX2NvdW50cycKPj4+IGluY2x1ZGUvbWVkaWEvdjRsMi12 cDkuaDo5Mzogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnaHAnIG5vdCBk ZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnCj4+PiBpbmNsdWRlL21l ZGlhL3Y0bDItdnA5Lmg6OTM6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIg J2NvZWZmJyBub3QgZGVzY3JpYmVkIGluICd2NGwyX3ZwOV9mcmFtZV9zeW1ib2xfY291bnRzJwo+ Pj4gaW5jbHVkZS9tZWRpYS92NGwyLXZwOS5oOjkzOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0 ZXIgb3IgbWVtYmVyICdlb2InIG5vdCBkZXNjcmliZWQgaW4gJ3Y0bDJfdnA5X2ZyYW1lX3N5bWJv bF9jb3VudHMnCj4+PiBpbmNsdWRlL21lZGlhL3Y0bDItdnA5Lmg6MTY2OiB3YXJuaW5nOiBleHBl Y3RpbmcgcHJvdG90eXBlIGZvciB2NGwyX3ZwOV9hZGFwdF9jb2VmX3Byb2JzKCkuIFByb3RvdHlw ZSB3YXMgZm9yIHY0bDJfdnA5X2FkYXB0X25vbmNvZWZfcHJvYnMoKQo+Pj4gaW5zdGVhZAo+Pj4g ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9vbWFwM2lzcC5oOjEwNzogd2FybmluZzog RnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAndnBfY2xrX3BvbCcgbm90IGRlc2NyaWJlZCBp biAnaXNwX2NjcDJfY2ZnJwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9vbWFw M2lzcC5oOjEwNzogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnbGFuZWNm Zycgbm90IGRlc2NyaWJlZCBpbiAnaXNwX2NjcDJfY2ZnJwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9xY29tL3ZlbnVzL2NvcmUuaDoyMDI6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBv ciBtZW1iZXIgJ3N5c19lcnJfZG9uZScgbm90IGRlc2NyaWJlZCBpbiAndmVudXNfY29yZScKPj4+ IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9jb3JlLmg6NDYyOiB3YXJuaW5nOiBG dW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdmd19taW5fY250JyBub3QgZGVzY3JpYmVkIGlu ICd2ZW51c19pbnN0Jwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2NvcmUu aDo0NjI6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2ZsYWdzJyBub3Qg ZGVzY3JpYmVkIGluICd2ZW51c19pbnN0Jwo+Pj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29t L3ZlbnVzL2NvcmUuaDo0NjI6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIg J2RwYl9pZHMnIG5vdCBkZXNjcmliZWQgaW4gJ3ZlbnVzX2luc3QnCj4+PiBkcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oOjExNTogd2FybmluZzogRW51bSB2YWx1ZSAnSEFOVFJP X01PREVfVlA5X0RFQycgbm90IGRlc2NyaWJlZCBpbiBlbnVtICdoYW50cm9fY29kZWNfbW9kZScK Pj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3Lmg6MjExOiB3YXJuaW5n OiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICd0aWxlX2VkZ2UnIG5vdCBkZXNjcmliZWQg aW4gJ2hhbnRyb192cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50 cm8vaGFudHJvX2h3Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVy ICdzZWdtZW50X21hcCcgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+ Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6 IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ21pc2MnIG5vdCBkZXNjcmliZWQgaW4gJ2hh bnRyb192cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFu dHJvX2h3Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdjbnRz JyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAncHJvYmFiaWxpdHlfdGFibGVzJyBub3QgZGVzY3JpYmVkIGluCj4+ PiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIg J2ZyYW1lX2NvbnRleHQnIG5vdCBkZXNjcmliZWQgaW4gJ2hhbnRyb192cDlfZGVjX2h3X2N0eCcK Pj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3Lmg6MjExOiB3YXJuaW5n OiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdjdXInIG5vdCBkZXNjcmliZWQgaW4gJ2hh bnRyb192cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFu dHJvX2h3Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdsYXN0 JyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAnYnNkX2N0cmxfb2Zmc2V0JyBub3QgZGVzY3JpYmVkIGluICdoYW50 cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRy b19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnc2VnbWVu dF9tYXBfc2l6ZScgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4g ZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1 bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2N0eF9jb3VudGVyc19vZmZzZXQnIG5vdCBkZXNj cmliZWQgaW4KPj4+ICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0YWdpbmcv bWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVy IG9yIG1lbWJlciAndGlsZV9pbmZvX29mZnNldCcgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3Zw OV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcu aDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ3RpbGVfcl9pbmZv JyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9fdnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19ody5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFy YW1ldGVyIG9yIG1lbWJlciAndGlsZV9jX2luZm8nIG5vdCBkZXNjcmliZWQgaW4gJ2hhbnRyb192 cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3 Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdsYXN0X3RpbGVf cicgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBh cmFtZXRlciBvciBtZW1iZXIgJ2xhc3RfdGlsZV9jJyBub3QgZGVzY3JpYmVkIGluICdoYW50cm9f dnA5X2RlY19od19jdHgnCj4+PiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19o dy5oOjIxMTogd2FybmluZzogRnVuY3Rpb24gcGFyYW1ldGVyIG9yIG1lbWJlciAnbGFzdF9zYnNf cicgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBh cmFtZXRlciBvciBtZW1iZXIgJ2xhc3Rfc2JzX2MnIG5vdCBkZXNjcmliZWQgaW4gJ2hhbnRyb192 cDlfZGVjX2h3X2N0eCcKPj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3 Lmg6MjExOiB3YXJuaW5nOiBGdW5jdGlvbiBwYXJhbWV0ZXIgb3IgbWVtYmVyICdhY3RpdmVfc2Vn bWVudCcgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVy cy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9u IHBhcmFtZXRlciBvciBtZW1iZXIgJ2ZlYXR1cmVfZW5hYmxlZCcgbm90IGRlc2NyaWJlZCBpbiAn aGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9o YW50cm9faHcuaDoyMTE6IHdhcm5pbmc6IEZ1bmN0aW9uIHBhcmFtZXRlciBvciBtZW1iZXIgJ2Zl YXR1cmVfZGF0YScgbm90IGRlc2NyaWJlZCBpbiAnaGFudHJvX3ZwOV9kZWNfaHdfY3R4Jwo+Pj4K Pj4+IFlvdSBjYW4gdGVzdCBrZXJuZWxkb2MgeW91cnNlbGYgd2l0aDogc2NyaXB0cy9rZXJuZWwt ZG9jIC1ub25lIGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaAo+Pj4KPj4+IFJlZ2FyZHMsCj4+Pgo+ Pj4gCUhhbnMKPj4+Cj4+Pj4KPj4+PiBSZWdhcmRzLAo+Pj4+Cj4+Pj4gQW5kcnplago+Pj4+Cj4+ Pj4KPj4+Pj4KPj4+Pj4gUmVnYXJkcywKPj4+Pj4KPj4+Pj4gCUhhbnMKPj4+Pj4KPj4+Pj4gT24g MjkvMDkvMjAyMSAxODowNCwgQW5kcnplaiBQaWV0cmFzaWV3aWN6IHdyb3RlOgo+Pj4+Pj4gRGVh ciBhbGwsCj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBWUDkgY29kZWMgVjRM MiBjb250cm9sIGludGVyZmFjZSBhbmQgdHdvIGRyaXZlcnMKPj4+Pj4+IHVzaW5nIHRoZSBuZXcg Y29udHJvbHMuIEl0IGlzIGEgZm9sbG93LXVwIG9mIHByZXZpb3VzIHY2IHNlcmllcyBbMV0uCj4+ Pj4+Pgo+Pj4+Pj4gSW4gdGhpcyBpdGVyYXRpb24sIHdlJ3ZlIGltcGxlbWVudGVkIFZQOSBoYXJk d2FyZSBkZWNvZGluZyBvbiB0d28gZGV2aWNlczoKPj4+Pj4+IFJvY2tjaGlwIFZERUMgYW5kIEhh bnRybyBHMiwgYW5kIHRlc3RlZCBvbiBSSzMzOTksIGkuTVg4TVEgYW5kIGkuTVg4TVAuCj4+Pj4+ PiBUaGUgaS5NWDhNIGRyaXZlciBuZWVkcyBwcm9wZXIgcG93ZXIgZG9tYWlucyBzdXBwb3J0LCB0 aG91Z2gsIHdoaWNoIGlzIGEKPj4+Pj4+IHN1YmplY3Qgb2YgYSBkaWZmZXJlbnQgZWZmb3J0LCBi dXQgaW4gYWxsIDMgY2FzZXMgd2Ugd2VyZSBhYmxlIHRvIHJ1biB0aGUKPj4+Pj4+IGRyaXZlcnMu Cj4+Pj4+Pgo+Pj4+Pj4gR1N0cmVhbWVyIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUsIHRoZSBu ZWVkZWQgY2hhbmdlcyBoYXZlIGJlZW4gc3VibWl0dGVkCj4+Pj4+PiBieSBEYW5pZWwgQWxtZWlk YSBbMl0uIFRoaXMgTVIgaXMgcmVhZHkgdG8gYmUgbWVyZ2VkLCBhbmQganVzdCBuZWVkcyB0aGUK Pj4+Pj4+IFZQOSBWNEwyIGNvbnRyb2xzIHRvIGJlIG1lcmdlZCBhbmQgcmVsZWFzZWQuCj4+Pj4+ Pgo+Pj4+Pj4gQm90aCBya3ZkZWMgYW5kIGhhbnRybyBkcml2ZXJzIGFyZSBwYXNzaW5nIGEgc2ln bmlmaWNhbnQgbnVtYmVyIG9mIFZQOSB0ZXN0cwo+Pj4+Pj4gdXNpbmcgRmx1c3RlclszXS4gVGhl cmUgYXJlIHN0aWxsIGEgZmV3IHRlc3RzIHRoYXQgYXJlIG5vdCBwYXNzaW5nLCBkdWUgdG8KPj4+ Pj4+IGR5bmFtaWMgZnJhbWUgcmVzaXplIChub3QgeWV0IHN1cHBvcnRlZCBieSBWNEwyKSBhbmQg c21hbGwgc2l6ZSB2aWRlb3MKPj4+Pj4+IChkdWUgdG8gSVAgYmxvY2sgbGltaXRhdGlvbnMpLgo+ Pj4+Pj4KPj4+Pj4+IFRoZSBzZXJpZXMgYWRkcyB0aGUgVlA5IGNvZGVjIFY0TDIgY29udHJvbCBB UEkgYXMgdUFQSSwgc28gaXQgYWltcyBhdCBiZWluZwo+Pj4+Pj4gbWVyZ2VkIHdpdGhvdXQgcGFz c2luZyB0aHJvdWdoIHN0YWdpbmcsIGFzIGFncmVlZFs0XS4gVGhlIEFCSSBoYXMgYmVlbiBjaGVj a2VkCj4+Pj4+PiBmb3IgcGFkZGluZyBhbmQgdmVyaWZpZWQgdG8gY29udGFpbiBubyBob2xlcy4K Pj4+Pj4+Cj4+Pj4+PiBbMV0gaHR0cHM6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9s aW51eC1tZWRpYS9saXN0Lz9zZXJpZXM9NjM3Nwo+Pj4+Pj4gWzJdIGh0dHBzOi8vZ2l0bGFiLmZy ZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMv MjE0NAo+Pj4+Pj4gWzNdIGh0dHBzOi8vZ2l0aHViLmNvbS9mbHVlbmRvL2ZsdXN0ZXIKPj4+Pj4+ IFs0XSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1tZWRpYS9iOGY4M2M5My02N2ZkLTA5 ZjUtOTMxNC0xNTc0NmNiZmRjNjFAeHM0YWxsLm5sLwo+Pj4+Pj4KPj4+Pj4+IFRoZSBzZXJpZXMg ZGVwZW5kcyBvbiB0aGUgWVVWIHRpbGVkIGZvcm1hdCBzdXBwb3J0IHByZXBhcmVkIGJ5IEV6ZXF1 aWVsOgo+Pj4+Pj4gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtbWVkaWEvbXNn MTk3MDQ3Lmh0bWwKPj4+Pj4+Cj4+Pj4+PiBSZWJhc2VkIG9udG8gbGF0ZXN0IG1lZGlhX3RyZWUu Cj4+Pj4+Pgo+Pj4+Pj4gQ2hhbmdlcyByZWxhdGVkIHRvIHY2Ogo+Pj4+Pj4gLSBtb3ZlZCBzZXR0 aW5nIHRpbGUgZmlsdGVyIGFuZCB0aWxlIGJzZCBhdXhpbGlhcnkgYnVmZmVyIGFkZHJlc3NlcyBz bwo+Pj4+Pj4gdGhhdCB0aGV5IGFyZSBhbHdheXMgc2V0LCBldmVuIGlmIG5vIHRpbGVzIGFyZSB1 c2VkICh0aGFua3MsIEplcm5laikKPj4+Pj4+IC0gYWRkZWQgYSBjb21tZW50IG5lYXIgdGhlIHBs YWNlIHdoZXJlIHRoZSAzMi1iaXQgRE1BIG1hc2sgaXMgYXBwbGllZAo+Pj4+Pj4gICAgICAodGhh bmtzLCBOaWNvbGFzKQo+Pj4+Pj4gLSBpbXByb3ZlZCBjb25zaXN0ZW5jeSBpbiByZWdpc3RlciBu YW1lcyAodGhhbmtzLCBOaWNvbGFzKQo+Pj4+Pj4KPj4+Pj4+IENoYW5nZXMgcmVsYXRlZCB0byB2 NToKPj4+Pj4+IC0gaW1wcm92ZWQgdGhlIGRvYyBjb21tZW50cyBhcyBwZXIgRXplcXVpZWwncyBy ZXZpZXcgKHRoYW5rcywgRXplcXVpZWwpCj4+Pj4+PiAtIGltcHJvdmVkIHBkZiBvdXRwdXQgb2Yg ZG9jdW1lbnRhdGlvbgo+Pj4+Pj4gLSBhZGRlZCBCZW5qYW1pbidzIFJldmlld2VkLWJ5ICh0aGFu a3MsIEJlbmphbWluKQo+Pj4+Pj4KPj4+Pj4+IENoYW5nZXMgcmVsYXRlZCB0byB2NDoKPj4+Pj4+ IC0gcmVtb3ZlZCB1bnVzZWQgZW51bSB2NGwyX3ZwOV9pbnRyYV9wcmVkaWN0aW9uX21vZGUKPj4+ Pj4+IC0gY29udmVydGVkIHJlbWFpbmluZyBlbnVtcyB0byBkZWZpbmVzIHRvIGZvbGxvdyB0aGUg Y29udmVudGlvbgo+Pj4+Pj4gLSBpbXByb3ZlZCB0aGUgZG9jdW1lbnRhdGlvbiwgaW4gcGFydGlj dWxhciBiZXR0ZXIgZG9jdW1lbnRlZCBob3cgdG8gdXNlIHNlZ21lbnRhdGlvbgo+Pj4+Pj4gZmVh dHVyZXMKPj4+Pj4+Cj4+Pj4+PiBDaGFuZ2VzIHJlbGF0ZWQgdG8gdjM6Cj4+Pj4+Pgo+Pj4+Pj4g QXBwbHkgc3VnZ2VzdGlvbnMgZnJvbSBKZXJuZWoncyByZXZpZXcgKHRoYW5rcywgSmVybmVqKToK Pj4+Pj4+IC0gcmVuYW1lZCBhIGNvbnRyb2wgYW5kIHR3byBzdHJ1Y3RzOgo+Pj4+Pj4gCVY0TDJf Q1RSTF9UWVBFX1ZQOV9DT01QUkVTU0VEX0hEUl9QUk9CUyA9Pgo+Pj4+Pj4gCQlWNEwyX0NUUkxf VFlQRV9WUDlfQ09NUFJFU1NFRF9IRFIKPj4+Pj4+IAl2NGwyX2N0cmxfdnA5X2NvbXByZXNzZWRf aGRyX3Byb2JzID0+Cj4+Pj4+PiAJCXY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHIKPj4+Pj4+ IAl2NGwyX3ZwOV9tdl9jb21wcmVzc2VkX2hkcl9wcm9icyA9PiB2NGwyX3ZwOV9tdl9wcm9icwo+ Pj4+Pj4gLSBtb3ZlZCB0eF9tb2RlIHRvIHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHIKPj4+ Pj4+IC0gZml4ZWQgZW51bSB2NGwyX3ZwOV9yZWZfZnJhbWVfc2lnbl9iaWFzIHZhbHVlcyAod2hp Y2ggYXJlIHVzZWQgdG8gdGVzdCBhIGJpdGZpZWxkKQo+Pj4+Pj4gLSBleHBsaWNpdGx5IGFzc2ln bmVkIHZhbHVlcyB0byBhbGwgb3RoZXIgdnA5IGVudW1zCj4+Pj4+Pgo+Pj4+Pj4gQXBwbHkgc3Vn Z2VzdGlvbiBmcm9tIE5pY29sYXMncyByZXZpZXcgKHRoYW5rcywgTmljb2xhcyk6Cj4+Pj4+PiAt IGV4cGxpY2l0bHkgc3RhdGVkIHRoYXQgdGhlIHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHIg Y29udHJvbCBpcyBvcHRpb25hbAo+Pj4+Pj4gYW5kIGltcGxlbWVudGVkIG9ubHkgYnkgZHJpdmVy cyB3aGljaCBuZWVkIGl0Cj4+Pj4+Pgo+Pj4+Pj4gQ2hhbmdlcyByZWxhdGVkIHRvIHRoZSBSRkMg djI6Cj4+Pj4+Pgo+Pj4+Pj4gLSBhZGRlZCBhbm90aGVyIGRyaXZlciBpbmNsdWRpbmcgYSBwb3N0 cHJvY2Vzc29yIHRvIGRlLXRpbGUKPj4+Pj4+ICAgICAgICAgICAgY29kZWMtc3BlY2lmaWMgdGls aW5nCj4+Pj4+PiAtIHJld29ya2VkIHVBUEkgc3RydWN0cyBsYXlvdXQgdG8gZm9sbG93IFZQOCBz dHlsZQo+Pj4+Pj4gLSBjaGFuZ2VkIHZhbGlkYXRpb24gb2YgbG9vcCBmaWx0ZXIgcGFyYW1zCj4+ Pj4+PiAtIGNoYW5nZWQgdmFsaWRhdGlvbiBvZiBzZWdtZW50YXRpb24gcGFyYW1zCj4+Pj4+PiAt IGNoYW5nZWQgdmFsaWRhdGlvbiBvZiBWUDkgZnJhbWUgcGFyYW1zCj4+Pj4+PiAtIHJlbW92ZWQg bGV2ZWwgbG9va3VwIGFycmF5IGZyb20gbG9vcCBmaWx0ZXIgc3RydWN0Cj4+Pj4+PiAgICAgICAg ICAgIChjYW4gYmUgY29tcHV0ZWQgYnkgZHJpdmVycykKPj4+Pj4+IC0gcmVuYW1lZCBzb21lIGVu dW0gdmFsdWVzIHRvIG1hdGNoIHRoZSBzcGVjIG1vcmUgY2xvc2VseQo+Pj4+Pj4gLSBWNEwyIFZQ OSBsaWJyYXJ5IGNoYW5nZWQgdGhlICdlb2InIG1lbWJlciBvZgo+Pj4+Pj4gICAgICAgICAgICAn c3RydWN0IHY0bDJfdnA5X2ZyYW1lX3N5bWJvbF9jb3VudHMnIHNvIHRoYXQgaXQgaXMgYW4gYXJy YXkKPj4+Pj4+ICAgICAgICAgICAgb2YgcG9pbnRlcnMgaW5zdGVhZCBvZiBhbiBhcnJheSBvZiBw b2ludGVycyB0byBhcnJheXMKPj4+Pj4+ICAgICAgICAgICAgKElQcyBzdWNoIGFzIGcyIGNyZWF0 aXZlbHkgcGFzcyBwYXJ0cyBvZiB0aGUgJ2VvYicgY291bnRzIGluCj4+Pj4+PiAgICAgICAgICAg IHRoZSAnY29lZmYnIGNvdW50cykKPj4+Pj4+IC0gZmFjdG9yZWQgb3V0IHNldmVyYWwgcmVwZWF0 ZWQgcG9ydGlvbnMgb2YgY29kZQo+Pj4+Pj4gLSBtaW5vciBuaXRwaWNrcyBhbmQgY2xlYW51cHMK Pj4+Pj4+Cj4+Pj4+PiBBbmRyemVqIFBpZXRyYXNpZXdpY3ogKDYpOgo+Pj4+Pj4gICAgICBtZWRp YTogdWFwaTogQWRkIFZQOSBzdGF0ZWxlc3MgZGVjb2RlciBjb250cm9scwo+Pj4+Pj4gICAgICBt ZWRpYTogQWRkIFZQOSB2NGwyIGxpYnJhcnkKPj4+Pj4+ICAgICAgbWVkaWE6IGhhbnRybzogUmVu YW1lIHJlZ2lzdGVycwo+Pj4+Pj4gICAgICBtZWRpYTogaGFudHJvOiBQcmVwYXJlIGZvciBvdGhl ciBHMiBjb2RlY3MKPj4+Pj4+ICAgICAgbWVkaWE6IGhhbnRybzogU3VwcG9ydCBWUDkgb24gdGhl IEcyIGNvcmUKPj4+Pj4+ICAgICAgbWVkaWE6IGhhbnRybzogU3VwcG9ydCBOVjEyIG9uIHRoZSBH MiBjb3JlCj4+Pj4+Pgo+Pj4+Pj4gQm9yaXMgQnJlemlsbG9uICgxKToKPj4+Pj4+ICAgICAgbWVk aWE6IHJrdmRlYzogQWRkIHRoZSBWUDkgYmFja2VuZAo+Pj4+Pj4KPj4+Pj4+IEV6ZXF1aWVsIEdh cmNpYSAoNCk6Cj4+Pj4+PiAgICAgIGhhbnRybzogcG9zdHByb2M6IEZpeCBtb3Rpb24gdmVjdG9y IHNwYWNlIHNpemUKPj4+Pj4+ICAgICAgaGFudHJvOiBwb3N0cHJvYzogSW50cm9kdWNlIHN0cnVj dCBoYW50cm9fcG9zdHByb2Nfb3BzCj4+Pj4+PiAgICAgIGhhbnRybzogU2ltcGxpZnkgcG9zdHBy b2Nlc3Nvcgo+Pj4+Pj4gICAgICBoYW50cm86IEFkZCBxdWlyayBmb3IgTlYxMi9OVjEyXzRMNCBj YXB0dXJlIGZvcm1hdAo+Pj4+Pj4KPj4+Pj4+ICAgICAuLi4vdXNlcnNwYWNlLWFwaS9tZWRpYS92 NGwvYmlibGlvLnJzdCAgICAgICAgfCAgIDEwICsKPj4+Pj4+ICAgICAuLi4vbWVkaWEvdjRsL2V4 dC1jdHJscy1jb2RlYy1zdGF0ZWxlc3MucnN0ICAgfCAgNTczICsrKysrCj4+Pj4+PiAgICAgLi4u L21lZGlhL3Y0bC9waXhmbXQtY29tcHJlc3NlZC5yc3QgICAgICAgICAgIHwgICAxNSArCj4+Pj4+ PiAgICAgLi4uL21lZGlhL3Y0bC92aWRpb2MtZy1leHQtY3RybHMucnN0ICAgICAgICAgIHwgICAg OCArCj4+Pj4+PiAgICAgLi4uL21lZGlhL3Y0bC92aWRpb2MtcXVlcnljdHJsLnJzdCAgICAgICAg ICAgIHwgICAxMiArCj4+Pj4+PiAgICAgLi4uL21lZGlhL3ZpZGVvZGV2Mi5oLnJzdC5leGNlcHRp b25zICAgICAgICAgIHwgICAgMiArCj4+Pj4+PiAgICAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv S2NvbmZpZyAgICAgICAgICAgICAgIHwgICAgNCArCj4+Pj4+PiAgICAgZHJpdmVycy9tZWRpYS92 NGwyLWNvcmUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCj4+Pj4+PiAgICAgZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMgICAgIHwgIDE4MCArKwo+Pj4+Pj4g ICAgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5jICAgICB8ICAgIDgg Kwo+Pj4+Pj4gICAgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItaW9jdGwuYyAgICAgICAg ICB8ICAgIDEgKwo+Pj4+Pj4gICAgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItdnA5LmMg ICAgICAgICAgICB8IDE4NTAgKysrKysrKysrKysrKysrKysKPj4+Pj4+ICAgICBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL0tjb25maWcgICAgICAgICAgfCAgICAxICsKPj4+Pj4+ICAgICBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL01ha2VmaWxlICAgICAgICAgfCAgICA3ICstCj4+ Pj4+PiAgICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8uaCAgICAgICAgIHwg ICA0MCArLQo+Pj4+Pj4gICAgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2Ry di5jICAgICB8ICAgMjMgKy0KPj4+Pj4+ICAgICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJv L2hhbnRyb19nMi5jICAgICAgfCAgIDI3ICsKPj4+Pj4+ICAgICAuLi4vc3RhZ2luZy9tZWRpYS9o YW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMgfCAgIDY5ICstCj4+Pj4+PiAgICAgZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfcmVncy5oIHwgIDEzMiArLQo+Pj4+Pj4gICAg IC4uLi9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfdnA5X2RlYy5jICB8ICA5ODAgKysr KysrKysrCj4+Pj4+PiAgICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcu aCAgICAgIHwgICA4MyArLQo+Pj4+Pj4gICAgIC4uLi9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50 cm9fcG9zdHByb2MuYyAgICB8ICAgNzkgKy0KPj4+Pj4+ICAgICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb192NGwyLmMgICAgfCAgIDIwICsKPj4+Pj4+ICAgICBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb192cDkuYyAgICAgfCAgMjQwICsrKwo+Pj4+Pj4gICAg IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3ZwOS5oICAgICB8ICAxMDMgKwo+ Pj4+Pj4gICAgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMgICB8 ICAgMzggKy0KPj4+Pj4+ICAgICAuLi4vc3RhZ2luZy9tZWRpYS9oYW50cm8vcm9ja2NoaXBfdnB1 X2h3LmMgICAgfCAgICA3ICstCj4+Pj4+PiAgICAgLi4uL3N0YWdpbmcvbWVkaWEvaGFudHJvL3Nh bWE1ZDRfdmRlY19ody5jICAgIHwgICAgMyArLQo+Pj4+Pj4gICAgIGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9ya3ZkZWMvS2NvbmZpZyAgICAgICAgICB8ICAgIDEgKwo+Pj4+Pj4gICAgIGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9ya3ZkZWMvTWFrZWZpbGUgICAgICAgICB8ICAgIDIgKy0KPj4+Pj4+ICAg ICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy12cDkuYyAgICAgfCAxMDc4ICsr KysrKysrKysKPj4+Pj4+ICAgICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy5j ICAgICAgICAgfCAgIDUyICstCj4+Pj4+PiAgICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRl Yy9ya3ZkZWMuaCAgICAgICAgIHwgICAxMiArLQo+Pj4+Pj4gICAgIGluY2x1ZGUvbWVkaWEvdjRs Mi1jdHJscy5oICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwo+Pj4+Pj4gICAgIGluY2x1ZGUv bWVkaWEvdjRsMi12cDkuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxODIgKysKPj4+Pj4+ICAg ICBpbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oICAgICAgICAgICAgfCAgMjg0ICsr Kwo+Pj4+Pj4gICAgIGluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCAgICAgICAgICAgICAg ICB8ICAgIDYgKwo+Pj4+Pj4gICAgIDM3IGZpbGVzIGNoYW5nZWQsIDYwMzMgaW5zZXJ0aW9ucygr KSwgMTA0IGRlbGV0aW9ucygtKQo+Pj4+Pj4gICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3Y0bDItY29yZS92NGwyLXZwOS5jCj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyLmMKPj4+Pj4+ICAgICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfdnA5 X2RlYy5jCj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRp YS9oYW50cm8vaGFudHJvX3ZwOS5jCj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3ZwOS5oCj4+Pj4+PiAgICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvcmt2ZGVjLXZwOS5jCj4+Pj4+ PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbWVkaWEvdjRsMi12cDkuaAo+Pj4+Pj4K Pj4+Pj4+Cj4+Pj4+PiBiYXNlLWNvbW1pdDogZTRlNzM3YmI1YzE3MGRmNjEzNWExMjc3MzlhOWU2 MTQ4ZWUzZGE4Mgo+Pj4+Pj4KPj4+Pj4KPj4+Pgo+Pj4KPj4KPiAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==