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 X-Spam-Level: X-Spam-Status: No, score=-7.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21B35C4320E for ; Thu, 5 Aug 2021 09:00:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 07B3A610CC for ; Thu, 5 Aug 2021 09:00:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238705AbhHEJAT (ORCPT ); Thu, 5 Aug 2021 05:00:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237227AbhHEJAS (ORCPT ); Thu, 5 Aug 2021 05:00:18 -0400 Received: from mail-il1-x129.google.com (mail-il1-x129.google.com [IPv6:2607:f8b0:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A236C061765; Thu, 5 Aug 2021 02:00:04 -0700 (PDT) Received: by mail-il1-x129.google.com with SMTP id c3so4352875ilh.3; Thu, 05 Aug 2021 02:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=H5iMGvMd+oUOXAVlGMwnWtSBluR6AoWUbfGaJJ1/2eI=; b=UoN6zHY7hOaWz/f9N0RLlNtxpJT0gfLch7bVLR+KA1HTJ5ltcmf4LW0zlXdYrXNw10 mJb64hyVoiMXEtF9gGAg7bYUJatxZ2SQmeBumYdSKGruFixiyXWQjaIgXMS8Ey09r4Gn 5XjdNhrzYEqbc3Birwzhhi5U/KEafTpWK2qJQNyeIhN2/iLsLEQSYCoxkD6Jltatk0o3 tOnykSiloIwa9vEOU4gDcU/KARFivO1Evn40DzC3ci8rd/POfyuyL5lIsFchiweBAv1g pueyxNgpIBXu65vsNPFIzx5RlO3ZsY+p/+fFltyGJ5I1zWQurj3UMy8emNX5dZUvQ2k+ ufYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=H5iMGvMd+oUOXAVlGMwnWtSBluR6AoWUbfGaJJ1/2eI=; b=iIGrulSAZWLqqDxTW2A9ZFL+X8GJgELqlV0DacbcSOZHNCU1aZRYNGgwp3Sk3HCaRq HP6kP9JQU6xEahwlI97DqUlMMcODG/ZqtVo2bs7m5+fOruq9nIhuYPXmVBbfOKXXvK4c pMX3IhPOI8beCUX7wPVu3QzRp0KulRyb4dZuP45NQtfbvjRkQcYNSLBo5c0rp3yUB8ax us/AUfrJ1sr1/nu9c9v2Z2f9ju9gP+F0GHqjSOA1vlj+TXtS7stUkKTn6MluQrYOlebf hvOzSesXJqljzFwRxfnav+lYkY/pXxJT5ChR4SQgv7dcPq3YjIWqC+TfE2Oua4EFi2LK pl8A== X-Gm-Message-State: AOAM5319VTKKYmNxsNVVGsr19yRhgXrxGfwz+Q3HawSY3V7WIGEngtWz 3fQORAmaSXDGp5fL7u3LMFsfNrGt6F7VEshF/44= X-Google-Smtp-Source: ABdhPJwE0mEQQgsx00FJCn61VC5E/yesJwSBtyW+l+PSZuUV0zS3KnVFUWkalmc8XI+pSqyUjI3fKqtUAwxHjGbA2lk= X-Received: by 2002:a92:ddcf:: with SMTP id d15mr116338ilr.184.1628154003627; Thu, 05 Aug 2021 02:00:03 -0700 (PDT) MIME-Version: 1.0 References: <1626341068-20253-1-git-send-email-dillon.minfei@gmail.com> In-Reply-To: <1626341068-20253-1-git-send-email-dillon.minfei@gmail.com> From: Dillon Min Date: Thu, 5 Aug 2021 16:59:27 +0800 Message-ID: Subject: Re: [PATCH v2 0/9] Add support for DMA2D of STMicroelectronics STM32 Soc series To: Mauro Carvalho Chehab , mchehab+huawei@kernel.org, Hans Verkuil , ezequiel@collabora.com, gnurou@gmail.com, Pi-Hsun Shih , Maxime Coquelin , Alexandre TORGUE , Michael Turquette , Stephen Boyd , Rob Herring Cc: Patrice CHOTARD , hugues.fruchet@foss.st.com, linux-media , Linux Kernel Mailing List , linux-stm32@st-md-mailman.stormreply.com, Linux ARM , linux-clk , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Hans, Just a gentle ping, could you help to take a look at patch (6 ~ 9) of this v2 series. Thanks. Best Regards Dillon On Thu, 15 Jul 2021 at 17:24, wrote: > > From: Dillon Min > > This patchset introduces a basic support for DMA2D Interface > of STMicroelectronics STM32 SoC series. > > This first basic support implements R2M, M2M, M2M_PFC > M2M_BLEND support will be added later on. > > This has been tested on STM32469-DISCO board. > > history > > v2: > - update v4l2-compliance to SHA: a4f2e3a6f306 2021-07-13 08:04:15 > the test results at below [1]. > - introduce Documentation/userspace-api/media/drivers/stm32-uapi.rst > to explain the detail of dma2d's ioctl. > - reserved 16 ioctls from v4l2-controls.h for stm32, introduce stm32-medi= a.h. > - collect Reviewed-by tag from Rob Herring. > - update dma2d driver from Hans's review. the details can be found > at related patches. > v1 link: > https://lore.kernel.org/lkml/1621508727-24486-1-git-send-email-dillon.min= fei@gmail.com/ > > v1: > The commit based on kernel(master): c3d0e3fd41b7f0f5d5d5b6022ab7e813f04ea= 727 > > Note for v4l2-compliance tool on nu-mmu platform: > I add two change based on v4l-utils since commit: > f0c7e3d71eaf4182bae7eb3ee0e43b4eeb047ea9 > > - change fork() to vfork() in v4l2-test-controls.cpp > since no-mmu platform don't include fork(). > > - bypass VIDIOC_QUERYCAP nullptr check > I'm not sure if this is the bug from my cross compile tool > which created by buildroot. user area's nullptr can't be > detected by kernel side, i was try to add access_ok() > in v4l2-ioctl.c, but no help > > If this case must be fixed, i will continue to debug it. > the error log: > ... > fail: v4l2-compliance.cpp(623): doioctl(node, VIDIOC_QUERYCAP, nullptr)= !=3D > EFAULT > .. > > My changes on v4l2-compliance: > > diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp > b/utils/v4l2-compliance/v4l2-compliance.cpp > index 90a5036..a25fe4f 100644 > --- a/utils/v4l2-compliance/v4l2-compliance.cpp > +++ b/utils/v4l2-compliance/v4l2-compliance.cpp > @@ -620,7 +620,7 @@ static int testCap(struct node *node) > > memset(&vcap, 0xff, sizeof(vcap)); > // Must always be there > - fail_on_test(doioctl(node, VIDIOC_QUERYCAP, nullptr) !=3D EFAULT)= ; > + //fail_on_test(doioctl(node, VIDIOC_QUERYCAP, nullptr) !=3D EFAUL= T); > fail_on_test(doioctl(node, VIDIOC_QUERYCAP, &vcap)); > fail_on_test(check_ustring(vcap.driver, sizeof(vcap.driver))); > fail_on_test(check_ustring(vcap.card, sizeof(vcap.card))); > > with v4l2-compliance test log (with above modification): > since the stm32f469-disco ram limitation, there are 25 failed on > dma_alloc_coherent() > > Really appreciate if someone can help to test this patch on the STM32429I= -EVAL > evaluation board (https://www.st.com/en/evaluation-tools/stm32429i-eval.h= tml) > 8M x 32-bit SDRAM, 1M x 16-bit SRAM and 8M x 16-bit NOR Flash > > / # free > total used free shared buffers cached > Mem: 15604 6104 9500 0 0 2488 > -/+ buffers/cache: 3616 11988 > > [1] v4l2-compliance test result: > > ./v4l2-compliance -s -f -d /dev/video0 & > [1] 34 ./v4l2-compliance -s -f -d /dev/video0 > / # v4l2-compliance 1.21.0-4831, 32 bits, 32-bit time_t > v4l2-compliance SHA: a4f2e3a6f306 2021-07-13 08:04:15 > > Compliance test for stm-dma2d device /dev/video0: > > Driver Info: > Driver name : stm-dma2d > Card type : stm-dma2d > Bus info : platform:stm-dma2d > Driver version : 5.14.0 > Capabilities : 0x84208000 > Video Memory-to-Memory > Streaming > Extended Pix Format > Device Capabilities > Device Caps : 0x04208000 > Video Memory-to-Memory > Streaming > Extended Pix Format > > Required ioctls: > test VIDIOC_QUERYCAP: OK > test invalid ioctls: OK > > Allow for multiple opens: > test second /dev/video0 open: OK > test VIDIOC_QUERYCAP: OK > test VIDIOC_G/S_PRIORITY: OK > test for unlimited opens: OK > > Debug ioctls: > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) > test VIDIOC_LOG_STATUS: OK (Not Supported) > > Input ioctls: > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) > test VIDIOC_G/S_FREQUENCY: OK (Not Supported) > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) > test VIDIOC_ENUMAUDIO: OK (Not Supported) > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) > test VIDIOC_G/S_AUDIO: OK (Not Supported) > Inputs: 0 Audio Inputs: 0 Tuners: 0 > > Output ioctls: > test VIDIOC_G/S_MODULATOR: OK (Not Supported) > test VIDIOC_G/S_FREQUENCY: OK (Not Supported) > test VIDIOC_ENUMAUDOUT: OK (Not Supported) > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) > test VIDIOC_G/S_AUDOUT: OK (Not Supported) > Outputs: 0 Audio Outputs: 0 Modulators: 0 > > Input/Output configuration ioctls: > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) > test VIDIOC_G/S_EDID: OK (Not Supported)[ > > Control ioctls: > test VIDIOC_QUERY_EX _CTRL/QUERY ENU: 55.029750] stm-dma2d 4002b000.dma2= d: Format not supported: =E2=96=92=E2=96=92=E2=96=92=E2=96=92, use the defa= ult. > OK > test VIDIOC_QUERYCTRL: OK > test VIDIOC_G[S_CTRL: OK > test VIDIOC_G/S/TRY_EXT_CTRLS OK > test VI I C_(UN)SUBSCRIBE_EVENT/DQEVENT: OK > test 55DIOC_G/S_JP.784007] stm-dma2d 4002b000.dma2d: Format not s= upported: =E2=96=92=E2=96=92=E2=96=92=E2=96=92, use the default. > EGCOMP: OK (Not Supported) > Standard Controls: 2 Private[Controls: 2 > > For a ioctls: > 5est VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK0m > test VI.IOC_G/S_PAR5: OK (Not 50538] stm-dma2d 4002b000.dma2d: Fo= rmat not supported: =E2=96=92=E2=96=92=E2=96=92=E2=96=92, use the default. > Supported) > test VIDIOC_G_FBUF: OK (Not Supported) > test[V DIOC_G_FM : OK > test VID5OC_T7Y_FMT: OK > .316175] stm-dma2d 4002b000.dma2d: Format not supported: =E2=96=92=E2=96= =92=E2=96=92=E2=96=92, use the default. > test VIDIOC_S_FMT: OK > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > test Cropping: OK (Not Supported) > test Composing: OK (Not Supported) > test Scaling: OK > > Codec ioctls: > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) > test VIDIOC_G_ENC_INDEX: OK (Not Supported) > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) > > Buffer ioctls: > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK > test VIDIOC_EXPBUF: OK > test Requests: OK (Not Supported) > > Test input 0: > > Streaming ioctls: > test read/write: OK (Not Supported) > test blocking wait: OK > [ 59.905900] use of bytesused =3D=3D 0 is deprecated and will be remove= d in the future, > [ 60.665190] use the actual size instead. > Video Capture: Captured 58 buffers > test MMAP (no poll): OK > Video Capture: Captured 58 buffers > test MMAP (select): OK > Video Capture: Captured 58 buffers > test MMAP (epoll): OK > test USERPTR (no poll): OK (Not Supported) > test USERPTR (select): OK (Not Supported) > test DMABUF: Cannot test, specify --expbuf-device > > Stream using all formats: > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1:= OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1:= OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 1x1 -> AR12 (16-bit ARGB 4-4-4-4) 1x1:= OK > [ 83.015780] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -3235= 84 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> BA24 (32-bit ARGB 8-8-8= -8) 16383x65535: FAIL > [ 83.959807] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -3235= 84 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > BA24 (32-bit ARGB[8-8-8-8) 16383x 553 -> RGB3 (24- it R8B 8-8-84= 16383x65535: FAIL > .899851] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -323584 fai= led > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > BA24 (32-bit ARGB 8-8-8-8)[16383x65535 -> RGBP (16-bit RGB -6-5)= 16383x65535: FA L > 85.848108] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -323584 f= ailed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> AR15 (16-bit ARGB 1-5-5= -5) 16[83x65535: F IL > 86.802223] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -323584= failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> AR12 (16-bit ARGB 4-4-4= -4) 16383x65535: FAIL > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) = 240x320: OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240= x320: OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 240x320 -> RGBP (16-bit RGB 5-6-5) 240= x320: OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) = 240x320: OK > Video Capture: Captured 8 buffers > BA24 (32-bit ARGB 8-8-8-8) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) = 240x320: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 1x1 -> AR12 (16-bit[ARGB 4-4-4-4) 1x1: OK > 89.086437] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -107398= 3488 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGB3 (24-bi[ GB 8-8-8) 16383x65535 > BA24 (32-bit A GB 8-8-8-8)= 16383965505: FA.L > 030474] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -1073983488 = failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > 978755] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -1073983488 = failed035: 31mFAIL > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGB3 (24-bit RGB [-8-8) 16383 65535 -> RGBP (16-bit RGB 5-6-5) 16= 383x65535: FA L > 91.923561] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -10739834= 88 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGB3 (24-bit RGB 8-8-8) 16383x65535 -> AR15 (16-bit ARGB 1-5-5-5)= 16383x65535: FAIL > [ 92.885742] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size -1073= 983488 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGB3 (24-bit RGB 8-8-8) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4)= 16383x65535: FAIL > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240= x320: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x32= 0: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x32= 0: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240= x320: OK > Video Capture: Captured 8 buffers > RGB3 (24-bit RGB 8-8-8) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240= x320: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 1x1 -> AR12 (16-bit AR[B 4-4-4-4) 1x1: OK > 95.008330] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323= 904 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > 50176] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323904 fa= iled83x95535: FAIL > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGBP (16-bit RGB 5-6-[) 16383x65535 -> R B3 (24-bit RG 8-8-8) 16= 383x65535: FAIL9[0m > 6.895671] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323904= failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGBP (16-bit RGB 5-6-5) 16383x65535 -> RGBP (16-bit RGB 5-6-5) 16= 383x65535: FAIL > [ 97.851563] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473= 23904 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGBP (16-bit [GB 5 6-5) 16383x6553 -> AR15 (16-bit ARGB 1-5-5-5)= 16383x69535: FAIL. > = 791193] stm-dma2d 4002b000.dma2d: dma_alloc_coherd > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > RGBP (16-bit RGB 5-6-5) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4)= 16383x65535: FAIL > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240= x320: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x32= 0: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x32= 0: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240= x320: OK > Video Capture: Captured 8 buffers > RGBP (16-bit RGB 5-6-5) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240= x320: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1:= OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1:= OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 1x1 -[ AR12 (16-bit RGB 4-4-4-4) 1x1:= OK > 100.827052] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473239= 04 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR15 (16-bit ARGB 1-5-5-5) 16383[655 5 -> BA24 (32-bit ARGB 8-8-8= -8) 6383x65535: F0IL0m > .764900] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323904 = failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR15 (16-bit ARGB 1-5-5-5)[163 3x65535 -> RGB3 (24- it RGB 8-8-8)= 16383x65535: AIL0[0m > 2.704672] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323904= failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> RGBP (16-bit RGB 5-6-5)= 16383x65535: FAIL > [ 103.656921] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473= 23904 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR15 (16-bit ARGB 1-5-5-5) 16383x65535[-> AR15 (16-bit ARGB 1 5-5= -5) 16383x65535: FAIL > 104.596785] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473239= 04 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> AR12 (16-bit ARGB 4-4-4= -4) 16383x65535: FAIL > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) = 240x320: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240= x320: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 240x320 -> RGBP (16-bit RGB 5-6-5) 240= x320: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) = 240x320: OK > Video Capture: Captured 8 buffers > AR15 (16-bit ARGB 1-5-5-5) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) = 240x320: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1:= OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1:= OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 1x1 -> AR12 (16-bit ARGB[4- -4-4) 1x1:= OK > 106.636958] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323= 904 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR12 (16-bit ARGB[4-4-4-4) 16383x65535 -> BA24 (32-bit ARGB 8 8-8= -8) 16383x65535: [1;31mFAIL > 107.578517] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473239= 04 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR12 (16-bit ARGB 4-4-[ ) 16383x65535 1> R0B3 (24-bit RGB 8-8-88= 16383x65535: FAIL > .527898] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 2147323904 = failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> RGBP (16-bit RGB 5-6-5)= 16383x65535: FAIL > [ 109.495892] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473= 23904 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR12 (16-bit ARGB 4-4-4-4) 1638[x65535 -> AR15 (16-bit ARGB 1-5-5= -5) 16383x6 535: FAIL > 110.449341] stm-dma2d 4002b000.dma2d: dma_alloc_coherent of size 21473239= 04 failed > fail: v4l2-test-buffers.cpp(1300): q.reqbufs(node, 2) > AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> AR12 (16-bit ARGB 4-4-4= -4) 16383x65535: FAIL > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) = 240x320: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240= x320: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 240x320 -> RGBP (16-bit RGB 5-6-5) 240= x320: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) = 240x320: OK > Video Capture: Captured 8 buffers > AR12 (16-bit ARGB 4-4-4-4) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) = 240x320: OK > Total for stm-dma2d device /dev/video0: 127, Succeeded: 102, Failed: 25, = Warnings: 0 > > [1] Done ./v4l2-compliance -s -f -d /dev/video0 > *** BLURB HERE *** > > Dillon Min (9): > media: admin-guide: add stm32-dma2d description > media: dt-bindings: media: add document for STM32 DMA2d bindings > clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after > kernel startup > ARM: dts: stm32: Enable DMA2D support on STM32F429 MCU > ARM: dts: stm32: Enable DMA2D on STM32F469-DISCO board > media: v4l2-mem2mem: add v4l2_m2m_get_unmapped_area for no-mmu > platform > media: docs: add doc for the stm32 dma2d driver > media: v4l: uapi: Add user control base for stm32 dma2d controls > media: stm32-dma2d: STM32 DMA2D driver > > .../admin-guide/media/platform-cardlist.rst | 1 + > .../devicetree/bindings/media/st,stm32-dma2d.yaml | 71 ++ > .../userspace-api/media/drivers/index.rst | 1 + > .../userspace-api/media/drivers/stm32-uapi.rst | 22 + > arch/arm/boot/dts/stm32f429.dtsi | 10 + > arch/arm/boot/dts/stm32f469-disco.dts | 4 + > drivers/clk/clk-stm32f4.c | 7 +- > drivers/media/platform/Kconfig | 9 + > drivers/media/platform/Makefile | 1 + > drivers/media/platform/stm32/Makefile | 2 + > drivers/media/platform/stm32/dma2d/dma2d-hw.c | 143 ++++ > drivers/media/platform/stm32/dma2d/dma2d-regs.h | 113 +++ > drivers/media/platform/stm32/dma2d/dma2d.c | 796 +++++++++++++++= ++++++ > drivers/media/platform/stm32/dma2d/dma2d.h | 136 ++++ > drivers/media/v4l2-core/v4l2-mem2mem.c | 21 + > include/media/v4l2-mem2mem.h | 5 + > include/uapi/linux/stm32-media.h | 12 + > include/uapi/linux/v4l2-controls.h | 5 + > 18 files changed, 1355 insertions(+), 4 deletions(-) > create mode 100644 Documentation/devicetree/bindings/media/st,stm32-dma2= d.yaml > create mode 100644 Documentation/userspace-api/media/drivers/stm32-uapi.= rst > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d-hw.c > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d-regs.h > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d.c > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d.h > create mode 100644 include/uapi/linux/stm32-media.h > > -- > 2.7.4 > 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 X-Spam-Level: X-Spam-Status: No, score=-5.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A787C4338F for ; Thu, 5 Aug 2021 09:02:13 +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 4470861029 for ; Thu, 5 Aug 2021 09:02:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4470861029 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3QaMfY44BQ0slGjEn9QGjd1n/dQXxPLI9ng3qxk0KNs=; b=whjomaRPmnMqFb azCE6G8lb5Ty1C9BOg9NFLwTfDT98MAQracUyXD8NR8vHGwcmGysOyHvtLcrbpG/mWc66sReXzoBS n/HWNsTYm/inew+hKBNEjVx6OcWh/02qMgYEdHXRhkwWdNGYvBZ0gy8AmHhFv0PzuENtDvlL3dOdX P8ZyuEObJMU/cxFFgEuQgJXurivUh3PGzuu7PXPC1ZwnetWtvtJm4c/YHFoqf06MVsTUqnVPx7jP/ lFh3xMR4xKLwHrGkF8RRxgDJNFchf2i8N1ejebHOSHuq6565BW/8SIVvbi0t65iHQ7DJPf3GW5WHc sO6vJC+nMvnaTDEBQMKw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mBZEZ-008ksb-Kt; Thu, 05 Aug 2021 09:00:11 +0000 Received: from mail-il1-x133.google.com ([2607:f8b0:4864:20::133]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mBZES-008kqJ-Rt for linux-arm-kernel@lists.infradead.org; Thu, 05 Aug 2021 09:00:07 +0000 Received: by mail-il1-x133.google.com with SMTP id x7so4345251ilh.10 for ; Thu, 05 Aug 2021 02:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=H5iMGvMd+oUOXAVlGMwnWtSBluR6AoWUbfGaJJ1/2eI=; b=UoN6zHY7hOaWz/f9N0RLlNtxpJT0gfLch7bVLR+KA1HTJ5ltcmf4LW0zlXdYrXNw10 mJb64hyVoiMXEtF9gGAg7bYUJatxZ2SQmeBumYdSKGruFixiyXWQjaIgXMS8Ey09r4Gn 5XjdNhrzYEqbc3Birwzhhi5U/KEafTpWK2qJQNyeIhN2/iLsLEQSYCoxkD6Jltatk0o3 tOnykSiloIwa9vEOU4gDcU/KARFivO1Evn40DzC3ci8rd/POfyuyL5lIsFchiweBAv1g pueyxNgpIBXu65vsNPFIzx5RlO3ZsY+p/+fFltyGJ5I1zWQurj3UMy8emNX5dZUvQ2k+ ufYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=H5iMGvMd+oUOXAVlGMwnWtSBluR6AoWUbfGaJJ1/2eI=; b=UIq2nb2T3hAugRS9dBtD4qEdilQNYyKYve3yfeRTxg5oxUVolnxGmFTp8+ZARlVpOa W2Lk0Eb5mQGlXUEqdUeMkV7La+1KHf8u/kgPi1Ddpq2Y1bv9I2V9gxs6W1wH7N6uTfe1 K+tZly1dNpDvTMQIwqREWjQRWAkSsjPVVPxFt1O5el1xYiKZ8vFiD6K1YYp1ei/dH05p KUAGvfXntf3GtE/nMnxK5JMzCZGERzzhopRrPHon7xbjCqANwzSoG6m0kl8j1OAeUr8Y 6dQTla+7jt7xcOWjlSJd7gWYWxNzou8Wi95nybDxc+qCzrxLJKNe0k+S9ez/MuQXfsH7 QQVQ== X-Gm-Message-State: AOAM5336gLh4PenCgfucW0EBOdc3ZUmv74j0S1B5BpoltPebR5W3/P5n e2cdRrvox5oMh/VgJkmYD/M8BVCLY9F/WOPw9eM= X-Google-Smtp-Source: ABdhPJwE0mEQQgsx00FJCn61VC5E/yesJwSBtyW+l+PSZuUV0zS3KnVFUWkalmc8XI+pSqyUjI3fKqtUAwxHjGbA2lk= X-Received: by 2002:a92:ddcf:: with SMTP id d15mr116338ilr.184.1628154003627; Thu, 05 Aug 2021 02:00:03 -0700 (PDT) MIME-Version: 1.0 References: <1626341068-20253-1-git-send-email-dillon.minfei@gmail.com> In-Reply-To: <1626341068-20253-1-git-send-email-dillon.minfei@gmail.com> From: Dillon Min Date: Thu, 5 Aug 2021 16:59:27 +0800 Message-ID: Subject: Re: [PATCH v2 0/9] Add support for DMA2D of STMicroelectronics STM32 Soc series To: Mauro Carvalho Chehab , mchehab+huawei@kernel.org, Hans Verkuil , ezequiel@collabora.com, gnurou@gmail.com, Pi-Hsun Shih , Maxime Coquelin , Alexandre TORGUE , Michael Turquette , Stephen Boyd , Rob Herring Cc: Patrice CHOTARD , hugues.fruchet@foss.st.com, linux-media , Linux Kernel Mailing List , linux-stm32@st-md-mailman.stormreply.com, Linux ARM , linux-clk , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210805_020004_969841_80729762 X-CRM114-Status: GOOD ( 35.04 ) 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 SGkgSGFucywKCkp1c3QgYSBnZW50bGUgcGluZywgY291bGQgeW91IGhlbHAgdG8gdGFrZSBhIGxv b2sgYXQgcGF0Y2ggKDYgfiA5KSBvZgp0aGlzIHYyIHNlcmllcy4KVGhhbmtzLgoKQmVzdCBSZWdh cmRzCkRpbGxvbgoKT24gVGh1LCAxNSBKdWwgMjAyMSBhdCAxNzoyNCwgPGRpbGxvbi5taW5mZWlA Z21haWwuY29tPiB3cm90ZToKPgo+IEZyb206IERpbGxvbiBNaW4gPGRpbGxvbi5taW5mZWlAZ21h aWwuY29tPgo+Cj4gVGhpcyBwYXRjaHNldCBpbnRyb2R1Y2VzIGEgYmFzaWMgc3VwcG9ydCBmb3Ig RE1BMkQgSW50ZXJmYWNlCj4gb2YgU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMyIFNvQyBzZXJpZXMu Cj4KPiBUaGlzIGZpcnN0IGJhc2ljIHN1cHBvcnQgaW1wbGVtZW50cyBSMk0sIE0yTSwgTTJNX1BG Qwo+IE0yTV9CTEVORCBzdXBwb3J0IHdpbGwgYmUgYWRkZWQgbGF0ZXIgb24uCj4KPiBUaGlzIGhh cyBiZWVuIHRlc3RlZCBvbiBTVE0zMjQ2OS1ESVNDTyBib2FyZC4KPgo+IGhpc3RvcnkKPgo+IHYy Ogo+IC0gdXBkYXRlIHY0bDItY29tcGxpYW5jZSB0byBTSEE6IGE0ZjJlM2E2ZjMwNiAyMDIxLTA3 LTEzIDA4OjA0OjE1Cj4gICB0aGUgdGVzdCByZXN1bHRzIGF0IGJlbG93IFsxXS4KPiAtIGludHJv ZHVjZSBEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvZHJpdmVycy9zdG0zMi11YXBp LnJzdAo+ICAgdG8gZXhwbGFpbiB0aGUgZGV0YWlsIG9mIGRtYTJkJ3MgaW9jdGwuCj4gLSByZXNl cnZlZCAxNiBpb2N0bHMgZnJvbSB2NGwyLWNvbnRyb2xzLmggZm9yIHN0bTMyLCBpbnRyb2R1Y2Ug c3RtMzItbWVkaWEuaC4KPiAtIGNvbGxlY3QgUmV2aWV3ZWQtYnkgdGFnIGZyb20gUm9iIEhlcnJp bmcuCj4gLSB1cGRhdGUgZG1hMmQgZHJpdmVyIGZyb20gSGFucydzIHJldmlldy4gdGhlIGRldGFp bHMgY2FuIGJlIGZvdW5kCj4gICBhdCByZWxhdGVkIHBhdGNoZXMuCj4gdjEgbGluazoKPiBodHRw czovL2xvcmUua2VybmVsLm9yZy9sa21sLzE2MjE1MDg3MjctMjQ0ODYtMS1naXQtc2VuZC1lbWFp bC1kaWxsb24ubWluZmVpQGdtYWlsLmNvbS8KPgo+IHYxOgo+IFRoZSBjb21taXQgYmFzZWQgb24g a2VybmVsKG1hc3Rlcik6IGMzZDBlM2ZkNDFiN2YwZjVkNWQ1YjYwMjJhYjdlODEzZjA0ZWE3MjcK Pgo+IE5vdGUgZm9yIHY0bDItY29tcGxpYW5jZSB0b29sIG9uIG51LW1tdSBwbGF0Zm9ybToKPiBJ IGFkZCB0d28gY2hhbmdlIGJhc2VkIG9uIHY0bC11dGlscyBzaW5jZSBjb21taXQ6Cj4gZjBjN2Uz ZDcxZWFmNDE4MmJhZTdlYjNlZTBlNDNiNGVlYjA0N2VhOQo+Cj4gLSBjaGFuZ2UgZm9yaygpIHRv IHZmb3JrKCkgaW4gdjRsMi10ZXN0LWNvbnRyb2xzLmNwcAo+ICAgc2luY2Ugbm8tbW11IHBsYXRm b3JtIGRvbid0IGluY2x1ZGUgZm9yaygpLgo+Cj4gLSBieXBhc3MgVklESU9DX1FVRVJZQ0FQIG51 bGxwdHIgY2hlY2sKPiAgIEknbSBub3Qgc3VyZSBpZiB0aGlzIGlzIHRoZSBidWcgZnJvbSBteSBj cm9zcyBjb21waWxlIHRvb2wKPiAgIHdoaWNoIGNyZWF0ZWQgYnkgYnVpbGRyb290LiB1c2VyIGFy ZWEncyBudWxscHRyIGNhbid0IGJlCj4gICBkZXRlY3RlZCBieSBrZXJuZWwgc2lkZSwgaSB3YXMg dHJ5IHRvIGFkZCBhY2Nlc3Nfb2soKQo+ICAgaW4gdjRsMi1pb2N0bC5jLCBidXQgbm8gaGVscAo+ Cj4gICBJZiB0aGlzIGNhc2UgbXVzdCBiZSBmaXhlZCwgaSB3aWxsIGNvbnRpbnVlIHRvIGRlYnVn IGl0Lgo+ICAgdGhlIGVycm9yIGxvZzoKPiAgIC4uLgo+ICAgZmFpbDogdjRsMi1jb21wbGlhbmNl LmNwcCg2MjMpOiBkb2lvY3RsKG5vZGUsIFZJRElPQ19RVUVSWUNBUCwgbnVsbHB0cikgIT0KPiAg IEVGQVVMVAo+ICAgLi4KPgo+IE15IGNoYW5nZXMgb24gdjRsMi1jb21wbGlhbmNlOgo+Cj4gZGlm ZiAtLWdpdCBhL3V0aWxzL3Y0bDItY29tcGxpYW5jZS92NGwyLWNvbXBsaWFuY2UuY3BwCj4gYi91 dGlscy92NGwyLWNvbXBsaWFuY2UvdjRsMi1jb21wbGlhbmNlLmNwcAo+IGluZGV4IDkwYTUwMzYu LmEyNWZlNGYgMTAwNjQ0Cj4gLS0tIGEvdXRpbHMvdjRsMi1jb21wbGlhbmNlL3Y0bDItY29tcGxp YW5jZS5jcHAKPiArKysgYi91dGlscy92NGwyLWNvbXBsaWFuY2UvdjRsMi1jb21wbGlhbmNlLmNw cAo+IEBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIGludCB0ZXN0Q2FwKHN0cnVjdCBub2RlICpu b2RlKQo+Cj4gICAgICAgICBtZW1zZXQoJnZjYXAsIDB4ZmYsIHNpemVvZih2Y2FwKSk7Cj4gICAg ICAgICAvLyBNdXN0IGFsd2F5cyBiZSB0aGVyZQo+IC0gICAgICAgZmFpbF9vbl90ZXN0KGRvaW9j dGwobm9kZSwgVklESU9DX1FVRVJZQ0FQLCBudWxscHRyKSAhPSBFRkFVTFQpOwo+ICsgICAgICAg Ly9mYWlsX29uX3Rlc3QoZG9pb2N0bChub2RlLCBWSURJT0NfUVVFUllDQVAsIG51bGxwdHIpICE9 IEVGQVVMVCk7Cj4gICAgICAgICBmYWlsX29uX3Rlc3QoZG9pb2N0bChub2RlLCBWSURJT0NfUVVF UllDQVAsICZ2Y2FwKSk7Cj4gICAgICAgICBmYWlsX29uX3Rlc3QoY2hlY2tfdXN0cmluZyh2Y2Fw LmRyaXZlciwgc2l6ZW9mKHZjYXAuZHJpdmVyKSkpOwo+ICAgICAgICAgZmFpbF9vbl90ZXN0KGNo ZWNrX3VzdHJpbmcodmNhcC5jYXJkLCBzaXplb2YodmNhcC5jYXJkKSkpOwo+Cj4gd2l0aCB2NGwy LWNvbXBsaWFuY2UgdGVzdCBsb2cgKHdpdGggYWJvdmUgbW9kaWZpY2F0aW9uKToKPiBzaW5jZSB0 aGUgc3RtMzJmNDY5LWRpc2NvIHJhbSBsaW1pdGF0aW9uLCB0aGVyZSBhcmUgMjUgZmFpbGVkIG9u Cj4gZG1hX2FsbG9jX2NvaGVyZW50KCkKPgo+IFJlYWxseSBhcHByZWNpYXRlIGlmIHNvbWVvbmUg Y2FuIGhlbHAgdG8gdGVzdCB0aGlzIHBhdGNoIG9uIHRoZSBTVE0zMjQyOUktRVZBTAo+IGV2YWx1 YXRpb24gYm9hcmQgKGh0dHBzOi8vd3d3LnN0LmNvbS9lbi9ldmFsdWF0aW9uLXRvb2xzL3N0bTMy NDI5aS1ldmFsLmh0bWwpCj4gOE0geCAzMi1iaXQgU0RSQU0sIDFNIHggMTYtYml0IFNSQU0gYW5k IDhNIHggMTYtYml0IE5PUiBGbGFzaAo+Cj4gLyAjIGZyZWUKPiAgICAgICAgICAgICB0b3RhbCAg ICAgICB1c2VkICAgICAgIGZyZWUgICAgIHNoYXJlZCAgICBidWZmZXJzICAgICBjYWNoZWQKPiBN ZW06ICAgICAgICAxNTYwNCAgICAgICA2MTA0ICAgICAgIDk1MDAgICAgIDAgICAgICAgICAwICAg ICAgICAgICAyNDg4Cj4gLS8rIGJ1ZmZlcnMvY2FjaGU6ICAgICAgMzYxNiAgICAgICAxMTk4OAo+ Cj4gWzFdIHY0bDItY29tcGxpYW5jZSB0ZXN0IHJlc3VsdDoKPgo+IC4vdjRsMi1jb21wbGlhbmNl IC1zIC1mIC1kIC9kZXYvdmlkZW8wICYKPiBbMV0gMzQgLi92NGwyLWNvbXBsaWFuY2UgLXMgLWYg LWQgL2Rldi92aWRlbzAKPiAvICMgdjRsMi1jb21wbGlhbmNlIDEuMjEuMC00ODMxLCAzMiBiaXRz LCAzMi1iaXQgdGltZV90Cj4gdjRsMi1jb21wbGlhbmNlIFNIQTogYTRmMmUzYTZmMzA2IDIwMjEt MDctMTMgMDg6MDQ6MTUKPgo+IENvbXBsaWFuY2UgdGVzdCBmb3Igc3RtLWRtYTJkIGRldmljZSAv ZGV2L3ZpZGVvMDoKPgo+IERyaXZlciBJbmZvOgo+ICAgICAgICAgRHJpdmVyIG5hbWUgICAgICA6 IHN0bS1kbWEyZAo+ICAgICAgICAgQ2FyZCB0eXBlICAgICAgICA6IHN0bS1kbWEyZAo+ICAgICAg ICAgQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOnN0bS1kbWEyZAo+ICAgICAgICAgRHJpdmVy IHZlcnNpb24gICA6IDUuMTQuMAo+ICAgICAgICAgQ2FwYWJpbGl0aWVzICAgICA6IDB4ODQyMDgw MDAKPiAgICAgICAgICAgICAgICAgVmlkZW8gTWVtb3J5LXRvLU1lbW9yeQo+ICAgICAgICAgICAg ICAgICBTdHJlYW1pbmcKPiAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUGl4IEZvcm1hdAo+ICAg ICAgICAgICAgICAgICBEZXZpY2UgQ2FwYWJpbGl0aWVzCj4gICAgICAgICBEZXZpY2UgQ2FwcyAg ICAgIDogMHgwNDIwODAwMAo+ICAgICAgICAgICAgICAgICBWaWRlbyBNZW1vcnktdG8tTWVtb3J5 Cj4gICAgICAgICAgICAgICAgIFN0cmVhbWluZwo+ICAgICAgICAgICAgICAgICBFeHRlbmRlZCBQ aXggRm9ybWF0Cj4KPiBSZXF1aXJlZCBpb2N0bHM6Cj4gICAgICAgICB0ZXN0IFZJRElPQ19RVUVS WUNBUDogT0sKPiAgICAgICAgIHRlc3QgaW52YWxpZCBpb2N0bHM6IE9LCj4KPiBBbGxvdyBmb3Ig bXVsdGlwbGUgb3BlbnM6Cj4gICAgICAgICB0ZXN0IHNlY29uZCAvZGV2L3ZpZGVvMCBvcGVuOiBP Swo+ICAgICAgICAgdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LCj4gICAgICAgICB0ZXN0IFZJRElP Q19HL1NfUFJJT1JJVFk6IE9LCj4gICAgICAgICB0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9L Cj4KPiBEZWJ1ZyBpb2N0bHM6Cj4gICAgICAgICB0ZXN0IFZJRElPQ19EQkdfRy9TX1JFR0lTVEVS OiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9L IChOb3QgU3VwcG9ydGVkKQo+Cj4gSW5wdXQgaW9jdGxzOgo+ICAgICAgICAgdGVzdCBWSURJT0Nf Ry9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gICAgICAgICB0 ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRl c3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRl c3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gICAgICAgICB0ZXN0IFZJ RElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgVklE SU9DX0cvU19BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gICAgICAgICBJbnB1dHM6IDAgQXVk aW8gSW5wdXRzOiAwIFR1bmVyczogMAo+Cj4gT3V0cHV0IGlvY3RsczoKPiAgICAgICAgIHRlc3Qg VklESU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQo+ICAgICAgICAgdGVzdCBW SURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gICAgICAgICB0ZXN0IFZJ RElPQ19FTlVNQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgVklESU9D X0cvUy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgVklESU9D X0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQo+ICAgICAgICAgT3V0cHV0czogMCBBdWRp byBPdXRwdXRzOiAwIE1vZHVsYXRvcnM6IDAKPgo+IElucHV0L091dHB1dCBjb25maWd1cmF0aW9u IGlvY3RsczoKPiAgICAgICAgIHRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5v dCBTdXBwb3J0ZWQpCj4gICAgICAgICB0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1J TkdTOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgVklESU9DX0RWX1RJTUlOR1Nf Q0FQOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgVklESU9DX0cvU19FRElEOiBP SyAoTm90IFN1cHBvcnRlZClbCj4KPiBDb250cm9sIGlvY3RsczoKPiAgdGVzdCBWSURJT0NfUVVF UllfRVggX0NUUkwvUVVFUlkgRU5VOiA1NS4wMjk3NTBdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEy ZDogRm9ybWF0IG5vdCBzdXBwb3J0ZWQ6IOKWkuKWkuKWkuKWkiwgdXNlIHRoZSBkZWZhdWx0Lgo+ IE9LCj4gICAgICAgICB0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LCj4gICAgICAgICB0ZXN0IFZJ RElPQ19HW1NfQ1RSTDogT0sKPiAgICAgICAgIHRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NUUkxT ICBPSwo+ICAgICAgICAgdGVzdCBWSSBJIENfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBP Swo+ICAgICAgICAgdGVzdCA1NURJT0NfRy9TX0pQLjc4NDAwN10gc3RtLWRtYTJkIDQwMDJiMDAw LmRtYTJkOiBGb3JtYXQgbm90IHN1cHBvcnRlZDog4paS4paS4paS4paSLCB1c2UgdGhlIGRlZmF1 bHQuCj4gRUdDT01QOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIFN0YW5kYXJkIENvbnRy b2xzOiAyIFByaXZhdGVbQ29udHJvbHM6IDIKPgo+IEZvciBhICBpb2N0bHM6Cj4gICAgICAgICA1 ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5URVJWQUxTOiBPSzBtCj4gICAg ICAgICB0ZXN0IFZJLklPQ19HL1NfUEFSNTogT0sgKE5vdCA1MDUzOF0gc3RtLWRtYTJkIDQwMDJi MDAwLmRtYTJkOiBGb3JtYXQgbm90IHN1cHBvcnRlZDog4paS4paS4paS4paSLCB1c2UgdGhlIGRl ZmF1bHQuCj4gU3VwcG9ydGVkKQo+ICAgICAgICAgdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90 IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3RbViBESU9DX0dfRk0gOiBPSwo+ICAgICAgICAgdGVz dCBWSUQ1T0NfVDdZX0ZNVDogT0sKPiAuMzE2MTc1XSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6 IEZvcm1hdCBub3Qgc3VwcG9ydGVkOiDilpLilpLilpLilpIsIHVzZSB0aGUgZGVmYXVsdC4KPiAg ICAgICAgIHRlc3QgVklESU9DX1NfRk1UOiBPSwo+ICAgICAgICAgdGVzdCBWSURJT0NfR19TTElD RURfVkJJX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gICAgICAgICB0ZXN0IENyb3BwaW5nOiBP SyAoTm90IFN1cHBvcnRlZCkKPiAgICAgICAgIHRlc3QgQ29tcG9zaW5nOiBPSyAoTm90IFN1cHBv cnRlZCkKPiAgICAgICAgIHRlc3QgU2NhbGluZzogT0sKPgo+IENvZGVjIGlvY3RsczoKPiAgICAg ICAgIHRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAg ICAgICAgIHRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkKPiAgICAg ICAgIHRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkKPgo+ IEJ1ZmZlciBpb2N0bHM6Cj4gICAgICAgICB0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZT L1FVRVJZQlVGOiBPSwo+ICAgICAgICAgdGVzdCBWSURJT0NfRVhQQlVGOiBPSwo+ICAgICAgICAg dGVzdCBSZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpCj4KPiBUZXN0IGlucHV0IDA6Cj4KPiBT dHJlYW1pbmcgaW9jdGxzOgo+ICAgICAgICAgdGVzdCByZWFkL3dyaXRlOiBPSyAoTm90IFN1cHBv cnRlZCkKPiAgICAgICAgIHRlc3QgYmxvY2tpbmcgd2FpdDogT0sKPiBbICAgNTkuOTA1OTAwXSB1 c2Ugb2YgYnl0ZXN1c2VkID09IDAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGlu IHRoZSBmdXR1cmUsCj4gWyAgIDYwLjY2NTE5MF0gdXNlIHRoZSBhY3R1YWwgc2l6ZSBpbnN0ZWFk Lgo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgNTggYnVmZmVycwo+ICAgICAgICAg dGVzdCBNTUFQIChubyBwb2xsKTogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVk IDU4IGJ1ZmZlcnMKPiAgICAgICAgIHRlc3QgTU1BUCAoc2VsZWN0KTogT0sKPiAgICAgICAgIFZp ZGVvIENhcHR1cmU6IENhcHR1cmVkIDU4IGJ1ZmZlcnMKPiAgICAgICAgIHRlc3QgTU1BUCAoZXBv bGwpOiBPSwo+ICAgICAgICAgdGVzdCBVU0VSUFRSIChubyBwb2xsKTogT0sgKE5vdCBTdXBwb3J0 ZWQpCj4gICAgICAgICB0ZXN0IFVTRVJQVFIgKHNlbGVjdCk6IE9LIChOb3QgU3VwcG9ydGVkKQo+ ICAgICAgICAgdGVzdCBETUFCVUY6IENhbm5vdCB0ZXN0LCBzcGVjaWZ5IC0tZXhwYnVmLWRldmlj ZQo+Cj4gU3RyZWFtIHVzaW5nIGFsbCBmb3JtYXRzOgo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTog Q2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAx eDEgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMXgxOiBPSwo+ICAgICAgICAgVmlkZW8g Q2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4 LTgtOC04KSAxeDEgLT4gUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMXgxOiBPSwo+ICAgICAgICAg VmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBCQTI0ICgzMi1iaXQg QVJHQiA4LTgtOC04KSAxeDEgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMXgxOiBPSwo+ICAg ICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBCQTI0ICgz Mi1iaXQgQVJHQiA4LTgtOC04KSAxeDEgLT4gQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMXgx OiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAg ICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDEgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00 LTQtNCkgMXgxOiBPSwo+IFsgICA4My4wMTU3ODBdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDog ZG1hX2FsbG9jX2NvaGVyZW50IG9mIHNpemUgLTMyMzU4NCBmYWlsZWQKPiAgICAgICAgICAgICAg ICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMobm9kZSwgMikK PiAgICAgICAgIEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDE2MzgzeDY1NTM1IC0+IEJBMjQg KDMyLWJpdCBBUkdCIDgtOC04LTgpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAgIDgzLjk1OTgwN10g c3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAtMzIz NTg0IGZhaWxlZAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAo MTMwMCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgQkEyNCAoMzItYml0IEFSR0JbOC04 LTgtOCkgMTYzODN4IDU1MyAgLT4gUkdCMyAoMjQtIGl0IFI4QiA4LTgtODQgMTYzODN4NjU1MzU6 IEZBSUwKPiAuODk5ODUxXSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRtYV9hbGxvY19jb2hl cmVudCBvZiBzaXplIC0zMjM1ODQgZmFpbGVkCj4gICAgICAgICAgICAgICAgIGZhaWw6IHY0bDIt dGVzdC1idWZmZXJzLmNwcCgxMzAwKTogcS5yZXFidWZzKG5vZGUsIDIpCj4gICAgICAgICBCQTI0 ICgzMi1iaXQgQVJHQiA4LTgtOC04KVsxNjM4M3g2NTUzNSAtPiBSR0JQICgxNi1iaXQgUkdCICAt Ni01KSAxNjM4M3g2NTUzNTogRkEgTAo+IDg1Ljg0ODEwOF0gc3RtLWRtYTJkIDQwMDJiMDAwLmRt YTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAtMzIzNTg0IGZhaWxlZAo+ICAgICAgICAg ICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTMwMCk6IHEucmVxYnVmcyhub2Rl LCAyKQo+ICAgICAgICAgQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMTYzODN4NjU1MzUgLT4g QVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMTZbODN4NjU1MzU6IEYgSUwKPiAgIDg2LjgwMjIy M10gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAt MzIzNTg0IGZhaWxlZAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5j cHAoMTMwMCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgQkEyNCAoMzItYml0IEFSR0Ig OC04LTgtOCkgMTYzODN4NjU1MzUgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMTYzODN4 NjU1MzU6IEZBSUwKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ ICAgICAgICAgQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMjQweDMyMCAtPiBCQTI0ICgzMi1i aXQgQVJHQiA4LTgtOC04KSAyNDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2Fw dHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAyNDB4 MzIwIC0+IFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgzMjA6IE9LCj4gICAgICAgICBWaWRl byBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIEJBMjQgKDMyLWJpdCBBUkdC IDgtOC04LTgpIDI0MHgzMjAgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMjQweDMyMDogT0sK PiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAgICAgQkEy NCAoMzItYml0IEFSR0IgOC04LTgtOCkgMjQweDMyMCAtPiBBUjE1ICgxNi1iaXQgQVJHQiAxLTUt NS01KSAyNDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZm ZXJzCj4gICAgICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAyNDB4MzIwIC0+IEFSMTIg KDE2LWJpdCBBUkdCIDQtNC00LTQpIDI0MHgzMjA6IE9LCj4gICAgICAgICBWaWRlbyBDYXB0dXJl OiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDF4 MSAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDE6IE9LCj4gICAgICAgICBWaWRlbyBD YXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04 LTgpIDF4MSAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAxeDE6IE9LCj4gICAgICAgICBWaWRl byBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIFJHQjMgKDI0LWJpdCBSR0Ig OC04LTgpIDF4MSAtPiBSR0JQICgxNi1iaXQgUkdCIDUtNi01KSAxeDE6IE9LCj4gICAgICAgICBW aWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIFJHQjMgKDI0LWJpdCBS R0IgOC04LTgpIDF4MSAtPiBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxeDE6IE9LCj4gICAg ICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIFJHQjMgKDI0 LWJpdCBSR0IgOC04LTgpIDF4MSAtPiBBUjEyICgxNi1iaXRbQVJHQiA0LTQtNC00KSAxeDE6IE9L Cj4gICA4OS4wODY0MzddIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hX2FsbG9jX2NvaGVy ZW50IG9mIHNpemUgLTEwNzM5ODM0ODggZmFpbGVkCj4gICAgICAgICAgICAgICAgIGZhaWw6IHY0 bDItdGVzdC1idWZmZXJzLmNwcCgxMzAwKTogcS5yZXFidWZzKG5vZGUsIDIpCj4gICAgICAgICBS R0IzICgyNC1iaVsgIEdCIDgtOC04KSAxNjM4M3g2NTUzNSAgPiBCQTI0ICgzMi1iaXQgQSBHQiA4 LTgtOC04KSAxNjM4Mzk2NTUwNTogRkEuTAo+IDAzMDQ3NF0gc3RtLWRtYTJkIDQwMDJiMDAwLmRt YTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAtMTA3Mzk4MzQ4OCBmYWlsZWQKPiAgICAg ICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMo bm9kZSwgMikKPiA5Nzg3NTVdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hX2FsbG9jX2Nv aGVyZW50IG9mIHNpemUgLTEwNzM5ODM0ODggZmFpbGVkMDM1OiAzMW1GQUlMCj4gICAgICAgICAg ICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzAwKTogcS5yZXFidWZzKG5vZGUs IDIpCj4gICAgICAgICBSR0IzICgyNC1iaXQgUkdCIFstOC04KSAxNjM4MyA2NTUzNSAtPiBSR0JQ ICgxNi1iaXQgUkdCIDUtNi01KSAxNjM4M3g2NTUzNTogRkEgTAo+IDkxLjkyMzU2MV0gc3RtLWRt YTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAtMTA3Mzk4MzQ4 OCBmYWlsZWQKPiAgICAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEz MDApOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiAgICAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgp IDE2MzgzeDY1NTM1IC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDE2MzgzeDY1NTM1OiBG QUlMCj4gWyAgIDkyLjg4NTc0Ml0gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2Nf Y29oZXJlbnQgb2Ygc2l6ZSAtMTA3Mzk4MzQ4OCBmYWlsZWQKPiAgICAgICAgICAgICAgICAgZmFp bDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiAgICAg ICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDE2MzgzeDY1NTM1IC0+IEFSMTIgKDE2LWJpdCBB UkdCIDQtNC00LTQpIDE2MzgzeDY1NTM1OiBGQUlMCj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBD YXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgz MjAgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMjQweDMyMDogT0sKPiAgICAgICAgIFZp ZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAgICAgUkdCMyAoMjQtYml0IFJH QiA4LTgtOCkgMjQweDMyMCAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAyNDB4MzIwOiBPSwo+ ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0Iz ICgyNC1iaXQgUkdCIDgtOC04KSAyNDB4MzIwIC0+IFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDI0 MHgzMjA6IE9LCj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAg ICAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgzMjAgLT4gQVIxNSAoMTYtYml0IEFS R0IgMS01LTUtNSkgMjQweDMyMDogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVk IDggYnVmZmVycwo+ICAgICAgICAgUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMjQweDMyMCAtPiBB UjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAyNDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2Fw dHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQICgxNi1iaXQgUkdCIDUtNi01 KSAxeDEgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMXgxOiBPSwo+ICAgICAgICAgVmlk ZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQICgxNi1iaXQgUkdC IDUtNi01KSAxeDEgLT4gUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMXgxOiBPSwo+ICAgICAgICAg VmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQICgxNi1iaXQg UkdCIDUtNi01KSAxeDEgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMXgxOiBPSwo+ICAgICAg ICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQICgxNi1i aXQgUkdCIDUtNi01KSAxeDEgLT4gQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMXgxOiBPSwo+ ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQ ICgxNi1iaXQgUkdCIDUtNi01KSAxeDEgLT4gQVIxMiAoMTYtYml0IEFSW0IgNC00LTQtNCkgMXgx OiBPSwo+ICAgOTUuMDA4MzMwXSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRtYV9hbGxvY19j b2hlcmVudCBvZiBzaXplIDIxNDczMjM5MDQgZmFpbGVkCj4gICAgICAgICAgICAgICAgIGZhaWw6 IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzAwKTogcS5yZXFidWZzKG5vZGUsIDIpCj4gNTAxNzZd IHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hX2FsbG9jX2NvaGVyZW50IG9mIHNpemUgMjE0 NzMyMzkwNCBmYWlsZWQ4M3g5NTUzNTogRkFJTAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwy LXRlc3QtYnVmZmVycy5jcHAoMTMwMCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgUkdC UCAoMTYtYml0IFJHQiA1LTYtWykgMTYzODN4NjU1MzUgLT4gUiBCMyAoMjQtYml0IFJHICA4LTgt OCkgMTYzODN4NjU1MzU6IEZBSUw5WzBtCj4gNi44OTU2NzFdIHN0bS1kbWEyZCA0MDAyYjAwMC5k bWEyZDogZG1hX2FsbG9jX2NvaGVyZW50IG9mIHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiAgICAg ICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMo bm9kZSwgMikKPiAgICAgICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDE2MzgzeDY1NTM1IC0+ IFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAgIDk3Ljg1MTU2 M10gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAy MTQ3MzIzOTA0IGZhaWxlZAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVy cy5jcHAoMTMwMCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgUkdCUCAoMTYtYml0IFtH QiA1IDYtNSkgMTYzODN4NjU1MyAgLT4gQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMTYzODN4 Njk1MzU6IEZBSUwuCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OTExOTNd IHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hX2FsbG9jX2NvaGVyZAo+ICAgICAgICAgICAg ICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTMwMCk6IHEucmVxYnVmcyhub2RlLCAy KQo+ICAgICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMTYzODN4NjU1MzUgLT4gQVIxMiAo MTYtYml0IEFSR0IgNC00LTQtNCkgMTYzODN4NjU1MzU6IEZBSUwKPiAgICAgICAgIFZpZGVvIENh cHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYt NSkgMjQweDMyMCAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAyNDB4MzIwOiBPSwo+ICAg ICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQICgx Ni1iaXQgUkdCIDUtNi01KSAyNDB4MzIwIC0+IFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgz MjA6IE9LCj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAg ICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDI0MHgzMjAgLT4gUkdCUCAoMTYtYml0IFJHQiA1 LTYtNSkgMjQweDMyMDogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVm ZmVycwo+ICAgICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMjQweDMyMCAtPiBBUjE1ICgx Ni1iaXQgQVJHQiAxLTUtNS01KSAyNDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTog Q2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBSR0JQICgxNi1iaXQgUkdCIDUtNi01KSAyNDB4 MzIwIC0+IEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDI0MHgzMjA6IE9LCj4gICAgICAgICBW aWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIEFSMTUgKDE2LWJpdCBB UkdCIDEtNS01LTUpIDF4MSAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDE6IE9LCj4g ICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIEFSMTUg KDE2LWJpdCBBUkdCIDEtNS01LTUpIDF4MSAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAxeDE6 IE9LCj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAg IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDF4MSAtPiBSR0JQICgxNi1iaXQgUkdCIDUtNi01 KSAxeDE6IE9LCj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAg ICAgICAgIEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDF4MSAtPiBBUjE1ICgxNi1iaXQgQVJH QiAxLTUtNS01KSAxeDE6IE9LCj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1 ZmZlcnMKPiAgICAgICAgIEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDF4MSAtWyBBUjEyICgx Ni1iaXQgIFJHQiA0LTQtNC00KSAxeDE6IE9LCj4gMTAwLjgyNzA1Ml0gc3RtLWRtYTJkIDQwMDJi MDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+ ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTMwMCk6IHEucmVx YnVmcyhub2RlLCAyKQo+ICAgICAgICAgQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMTYzODNb NjU1IDUgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgIDYzODN4NjU1MzU6IEYwSUwwbQo+ IC43NjQ5MDBdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hX2FsbG9jX2NvaGVyZW50IG9m IHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiAgICAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0 LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiAgICAgICAgIEFSMTUgKDE2 LWJpdCBBUkdCIDEtNS01LTUpWzE2MyAzeDY1NTM1IC0+IFJHQjMgKDI0LSBpdCBSR0IgOC04LTgp IDE2MzgzeDY1NTM1OiBBSUwwWzBtCj4gMi43MDQ2NzJdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEy ZDogZG1hX2FsbG9jX2NvaGVyZW50IG9mIHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiAgICAgICAg ICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMobm9k ZSwgMikKPiAgICAgICAgIEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDE2MzgzeDY1NTM1IC0+ IFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAgMTAzLjY1Njky MV0gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAy MTQ3MzIzOTA0IGZhaWxlZAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVy cy5jcHAoMTMwMCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgQVIxNSAoMTYtYml0IEFS R0IgMS01LTUtNSkgMTYzODN4NjU1MzVbLT4gQVIxNSAoMTYtYml0IEFSR0IgMSA1LTUtNSkgMTYz ODN4NjU1MzU6IEZBSUwKPiAxMDQuNTk2Nzg1XSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRt YV9hbGxvY19jb2hlcmVudCBvZiBzaXplIDIxNDczMjM5MDQgZmFpbGVkCj4gICAgICAgICAgICAg ICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzAwKTogcS5yZXFidWZzKG5vZGUsIDIp Cj4gICAgICAgICBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxNjM4M3g2NTUzNSAtPiBBUjEy ICgxNi1iaXQgQVJHQiA0LTQtNC00KSAxNjM4M3g2NTUzNTogRkFJTAo+ICAgICAgICAgVmlkZW8g Q2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBBUjE1ICgxNi1iaXQgQVJHQiAx LTUtNS01KSAyNDB4MzIwIC0+IEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDI0MHgzMjA6IE9L Cj4gICAgICAgICBWaWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIEFS MTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDI0MHgzMjAgLT4gUkdCMyAoMjQtYml0IFJHQiA4LTgt OCkgMjQweDMyMDogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVy cwo+ICAgICAgICAgQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMjQweDMyMCAtPiBSR0JQICgx Ni1iaXQgUkdCIDUtNi01KSAyNDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2Fw dHVyZWQgOCBidWZmZXJzCj4gICAgICAgICBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAyNDB4 MzIwIC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDI0MHgzMjA6IE9LCj4gICAgICAgICBW aWRlbyBDYXB0dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIEFSMTUgKDE2LWJpdCBB UkdCIDEtNS01LTUpIDI0MHgzMjAgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMjQweDMy MDogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAg ICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgxIC0+IEJBMjQgKDMyLWJpdCBBUkdCIDgt OC04LTgpIDF4MTogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVy cwo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgxIC0+IFJHQjMgKDI0LWJp dCBSR0IgOC04LTgpIDF4MTogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDgg YnVmZmVycwo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgxIC0+IFJHQlAg KDE2LWJpdCBSR0IgNS02LTUpIDF4MTogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1 cmVkIDggYnVmZmVycwo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgxIC0+ IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDF4MTogT0sKPiAgICAgICAgIFZpZGVvIENhcHR1 cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQt NCkgMXgxIC0+IEFSMTIgKDE2LWJpdCBBUkdCWzQtIC00LTQpIDF4MTogT0sKPiAgMTA2LjYzNjk1 OF0gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAy MTQ3MzIzOTA0IGZhaWxlZAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVy cy5jcHAoMTMwMCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFS R0JbNC00LTQtNCkgMTYzODN4NjU1MzUgLT4gQkEyNCAoMzItYml0IEFSR0IgOCA4LTgtOCkgMTYz ODN4NjU1MzU6ICBbMTszMW1GQUlMCj4gMTA3LjU3ODUxN10gc3RtLWRtYTJkIDQwMDJiMDAwLmRt YTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+ICAgICAg ICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTMwMCk6IHEucmVxYnVmcyhu b2RlLCAyKQo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LVsgICkgMTYzODN4NjU1MzUg MT4gUjBCMyAoMjQtYml0IFJHQiA4LTgtODggMTYzODN4NjU1MzU6IEZBSUwKPiAuNTI3ODk4XSBz dG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRtYV9hbGxvY19jb2hlcmVudCBvZiBzaXplIDIxNDcz MjM5MDQgZmFpbGVkCj4gICAgICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNw cCgxMzAwKTogcS5yZXFidWZzKG5vZGUsIDIpCj4gICAgICAgICBBUjEyICgxNi1iaXQgQVJHQiA0 LTQtNC00KSAxNjM4M3g2NTUzNSAtPiBSR0JQICgxNi1iaXQgUkdCIDUtNi01KSAxNjM4M3g2NTUz NTogRkFJTAo+IFsgIDEwOS40OTU4OTJdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hX2Fs bG9jX2NvaGVyZW50IG9mIHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiAgICAgICAgICAgICAgICAg ZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzMDApOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiAg ICAgICAgIEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDE2MzhbeDY1NTM1IC0+IEFSMTUgKDE2 LWJpdCBBUkdCIDEtNS01LTUpIDE2MzgzeDYgNTM1OiBGQUlMCj4gMTEwLjQ0OTM0MV0gc3RtLWRt YTJkIDQwMDJiMDAwLmRtYTJkOiBkbWFfYWxsb2NfY29oZXJlbnQgb2Ygc2l6ZSAyMTQ3MzIzOTA0 IGZhaWxlZAo+ICAgICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTMw MCk6IHEucmVxYnVmcyhub2RlLCAyKQo+ICAgICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQt NCkgMTYzODN4NjU1MzUgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMTYzODN4NjU1MzU6 IEZBSUwKPiAgICAgICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAg ICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMjQweDMyMCAtPiBCQTI0ICgzMi1iaXQgQVJH QiA4LTgtOC04KSAyNDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQg OCBidWZmZXJzCj4gICAgICAgICBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAyNDB4MzIwIC0+ IFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgzMjA6IE9LCj4gICAgICAgICBWaWRlbyBDYXB0 dXJlOiBDYXB0dXJlZCA4IGJ1ZmZlcnMKPiAgICAgICAgIEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00 LTQpIDI0MHgzMjAgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMjQweDMyMDogT0sKPiAgICAg ICAgIFZpZGVvIENhcHR1cmU6IENhcHR1cmVkIDggYnVmZmVycwo+ICAgICAgICAgQVIxMiAoMTYt Yml0IEFSR0IgNC00LTQtNCkgMjQweDMyMCAtPiBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAy NDB4MzIwOiBPSwo+ICAgICAgICAgVmlkZW8gQ2FwdHVyZTogQ2FwdHVyZWQgOCBidWZmZXJzCj4g ICAgICAgICBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAyNDB4MzIwIC0+IEFSMTIgKDE2LWJp dCBBUkdCIDQtNC00LTQpIDI0MHgzMjA6IE9LCj4gVG90YWwgZm9yIHN0bS1kbWEyZCBkZXZpY2Ug L2Rldi92aWRlbzA6IDEyNywgU3VjY2VlZGVkOiAxMDIsIEZhaWxlZDogMjUsIFdhcm5pbmdzOiAw Cj4KPiBbMV0gRG9uZSAgICAgICAgICAgICAgICAgICAuL3Y0bDItY29tcGxpYW5jZSAtcyAtZiAt ZCAvZGV2L3ZpZGVvMAo+ICoqKiBCTFVSQiBIRVJFICoqKgo+Cj4gRGlsbG9uIE1pbiAoOSk6Cj4g ICBtZWRpYTogYWRtaW4tZ3VpZGU6IGFkZCBzdG0zMi1kbWEyZCBkZXNjcmlwdGlvbgo+ICAgbWVk aWE6IGR0LWJpbmRpbmdzOiBtZWRpYTogYWRkIGRvY3VtZW50IGZvciBTVE0zMiBETUEyZCBiaW5k aW5ncwo+ICAgY2xrOiBzdG0zMjogRml4IGx0ZGMncyBjbG9jayB0dXJuIG9mZiBieSBjbGtfZGlz YWJsZV91bnVzZWQoKSBhZnRlcgo+ICAgICBrZXJuZWwgc3RhcnR1cAo+ICAgQVJNOiBkdHM6IHN0 bTMyOiBFbmFibGUgRE1BMkQgc3VwcG9ydCBvbiBTVE0zMkY0MjkgTUNVCj4gICBBUk06IGR0czog c3RtMzI6IEVuYWJsZSBETUEyRCBvbiBTVE0zMkY0NjktRElTQ08gYm9hcmQKPiAgIG1lZGlhOiB2 NGwyLW1lbTJtZW06IGFkZCB2NGwyX20ybV9nZXRfdW5tYXBwZWRfYXJlYSBmb3Igbm8tbW11Cj4g ICAgIHBsYXRmb3JtCj4gICBtZWRpYTogZG9jczogYWRkIGRvYyBmb3IgdGhlIHN0bTMyIGRtYTJk IGRyaXZlcgo+ICAgbWVkaWE6IHY0bDogdWFwaTogQWRkIHVzZXIgY29udHJvbCBiYXNlIGZvciBz dG0zMiBkbWEyZCBjb250cm9scwo+ICAgbWVkaWE6IHN0bTMyLWRtYTJkOiBTVE0zMiBETUEyRCBk cml2ZXIKPgo+ICAuLi4vYWRtaW4tZ3VpZGUvbWVkaWEvcGxhdGZvcm0tY2FyZGxpc3QucnN0ICAg ICAgICB8ICAgMSArCj4gIC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3N0LHN0bTMyLWRt YTJkLnlhbWwgIHwgIDcxICsrCj4gIC4uLi91c2Vyc3BhY2UtYXBpL21lZGlhL2RyaXZlcnMvaW5k ZXgucnN0ICAgICAgICAgIHwgICAxICsKPiAgLi4uL3VzZXJzcGFjZS1hcGkvbWVkaWEvZHJpdmVy cy9zdG0zMi11YXBpLnJzdCAgICAgfCAgMjIgKwo+ICBhcmNoL2FybS9ib290L2R0cy9zdG0zMmY0 MjkuZHRzaSAgICAgICAgICAgICAgICAgICB8ICAxMCArCj4gIGFyY2gvYXJtL2Jvb3QvZHRzL3N0 bTMyZjQ2OS1kaXNjby5kdHMgICAgICAgICAgICAgIHwgICA0ICsKPiAgZHJpdmVycy9jbGsvY2xr LXN0bTMyZjQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KPiAgZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwo+ICBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4g IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3RtMzIvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAy ICsKPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdG0zMi9kbWEyZC9kbWEyZC1ody5jICAgICAg fCAxNDMgKysrKwo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N0bTMyL2RtYTJkL2RtYTJkLXJl Z3MuaCAgICB8IDExMyArKysKPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdG0zMi9kbWEyZC9k bWEyZC5jICAgICAgICAgfCA3OTYgKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vc3RtMzIvZG1hMmQvZG1hMmQuaCAgICAgICAgIHwgMTM2ICsrKysKPiAgZHJp dmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1tZW0ybWVtLmMgICAgICAgICAgICAgfCAgMjEgKwo+ ICBpbmNsdWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArCj4gIGluY2x1ZGUvdWFwaS9saW51eC9zdG0zMi1tZWRpYS5oICAgICAgICAgICAgICAgICAg IHwgIDEyICsKPiAgaW5jbHVkZS91YXBpL2xpbnV4L3Y0bDItY29udHJvbHMuaCAgICAgICAgICAg ICAgICAgfCAgIDUgKwo+ICAxOCBmaWxlcyBjaGFuZ2VkLCAxMzU1IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvbWVkaWEvc3Qsc3RtMzItZG1hMmQueWFtbAo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL2RyaXZlcnMvc3RtMzItdWFwaS5y c3QKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3RtMzIvZG1h MmQvZG1hMmQtaHcuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9zdG0zMi9kbWEyZC9kbWEyZC1yZWdzLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vc3RtMzIvZG1hMmQvZG1hMmQuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdG0zMi9kbWEyZC9kbWEyZC5oCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL3VhcGkvbGludXgvc3RtMzItbWVkaWEuaAo+Cj4gLS0KPiAyLjcuNAo+ CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==