Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wHSgw-007C3i-0k for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Apr 2026 20:36:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHSgu-00F5XE-1L for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Apr 2026 20:36:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wHSgj-00F5Wo-06 for pgsql-hackers@lists.postgresql.org; Mon, 27 Apr 2026 20:36:28 +0000 Received: from mail-yx1-xb130.google.com ([2607:f8b0:4864:20::b130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHSgb-000000035D2-3S4q for pgsql-hackers@lists.postgresql.org; Mon, 27 Apr 2026 20:36:12 +0000 Received: by mail-yx1-xb130.google.com with SMTP id 956f58d0204a3-652f220595fso10795944d50.0 for ; Mon, 27 Apr 2026 13:36:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777322169; cv=none; d=google.com; s=arc-20240605; b=P5h+AgsJWnT7Dg2KCA0Bjgj8lUZvN58isAUyVenubRqACXL1nr86UMJG3kPAqLnJAh 6JQ0KEQH7Fc4dHykg3DyIfTiAF5/1/ugqyjmGZZdTaY7XYKOr2SfgHtyvLdd0CeARMDp x7wVGgr3d3A5PwWR2hxA456XmEWcud8jOZdhMWNDOVzkxxT6huRNHJVKYi0Qi/u29e5a WiUI5vfy1bUqorniYflHrbAS/4iw1eouGg4syuj+9oc04Vh1ijBq2Jj+LNVbHw/wXYO5 9oTxJbhIVK6Ah2nAnpRI/n2X9r8/RPDpT/p45Jk1W204faOhGQ95CxSZPZT0kViqD2qA Fx4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Kf48E24E/6XEX5Awj44KsLlpJbrpU/FiWPjnFCw6GO4=; fh=Ro8ZfxfFX6jg4q03nD/y8IGSouzA+idymNZ7xA3GioI=; b=dGKk8bJG7FTnzHqnNfA+mQNhW60rYUKFxaNnigTPcQ/O3oE8W8KzQhuayyL4d+SZma eWg7GfOtBzAp3UaPh50X1bkEiCD+wENa1I3O/7yl8DDw1rVd6oQ7GFOygB937kW2YeXQ 2YVTRi8cK33pP06Un4zp5nRwVDHN1wqWkSiO/BJ7ya+V+ZO5GBO9vkUc9QQRtrdtaU71 Q1hLwFEO077hwGcOqtduDJW5TvTgzLvJYN2L4HD2tO1cBkkHk2urJMaJXW+Q2jDRIl02 epctj48jTzU/yK3m5Spbv/f4h0jORacok234YstaZyoCg2tflRBkMLpCMkZ1H9RfgoDr rAdw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777322169; x=1777926969; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Kf48E24E/6XEX5Awj44KsLlpJbrpU/FiWPjnFCw6GO4=; b=fpipYXutCWBwfCp1GZ45e2F/LFn0m1hsonsrZf9CMufRhy8MQ/uc+9fxaQuexy2g0Z kRFdULf5vmDLv2ieUxRzdk8bXK0xZRT5LS/1EJynyUr+aO25ovL3YX28pz5jw8rOpcgP qWopyp8wYhvgW50Q4dgXDcBoyTZdoasLgNwkcykqq7gHcuQ68EdrNzYofbr0FcHP8gF2 IYK1To4tSqnAkGps4g6nUZfvtfRmRRzk+EYvPFcBBk/Wzcrhq+5uvJxJEyvs+8HPaMz4 erOcqaYbg4igAA1ms3vKrKlRMNSTQ3pIWiCCTfsqhEFi5glJtVdzDqE0l969dsHm1Kvs fanQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777322169; x=1777926969; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Kf48E24E/6XEX5Awj44KsLlpJbrpU/FiWPjnFCw6GO4=; b=iyo+noR2nuvziN/n3V+PrkgHfcPfhbUVZUAZh6z/yeAjT10QE7AMEwCBwb4xhWe46b u7qsfUFP98QGYTx11tlfZBPTnChgwqtL+U+J49tR37KtBgkluLXGAcVJivdo6p4NjKmM q+bU665N6QlHW+7d3lW7mK5zfp0TXTThTpxz9SXPY9iXT1ozBelhkFC5rAwOJJ0eD65U lnfyHetikNO2eaThCpusn+zuYBjkX2NTIGX8AODwaDvYxDvfrMqiQgPqIbNJlxpe7TPe du4B0bA0G/r1N5JrKGyn4N9P+9dj0brnIMMH6lJg+QktlQLwiTFpprPFSeyxvwduBLT7 Z/Mw== X-Forwarded-Encrypted: i=1; AFNElJ8HTUwYStlHLvFVa99nRCYRqF8OUzfHzzQWD1SPSBuJng+iLHm/mOFRS2GNqEtmw7Xze5LRY8COJYobytmd@lists.postgresql.org X-Gm-Message-State: AOJu0YzYtw+aWtdALcFCvVoZYIBvlbu3kQaibPrcavEhEch83NGvsVUd GODyS541G89r37C3Q67EBPlYSo25z/xc9g2IqMi6/z1ApP8Vs/ut3nuj7g238/NkYOh207kjL7R JG4neAIABTNc4dnl2JasKA6HMP8vpVz8= X-Gm-Gg: AeBDievsJl/3HY9EA0OykHNKo65jQP9g/H2FfHx+IOg3NHQCcTZ3pJg/t/W+AS82ujg K+V5oYcCGM0kngqYMGpWby/9+9EuBd0ceEPteqMe6xuUSxvjYexOrdsaiCnk29jNQiBJtwxF3Mv sgTJbvwOC74AWVT9sv5PoYkvRMS7Ur5Kb22NvaDwIK4GTGxAUGIgAvNyKy6qwy4gIfNEFSjpZ0U d8ygZE28exjdfj5XQ9kOQ+KrC/LrBLHcZPqFfz6ycVVu2iX9F6He9uPdyt7+vz+fqxvNOOkucis rRTZt5/4ppXSWsFSsPDQrJ2St2YpD6ixP2ParubxN3CvfgSUdlBLLG4C1g58tg== X-Received: by 2002:a05:690e:124c:b0:651:ccc1:b4f1 with SMTP id 956f58d0204a3-65beed3a0c8mr102913d50.2.1777322169238; Mon, 27 Apr 2026 13:36:09 -0700 (PDT) MIME-Version: 1.0 References: <87r0hmvuvr.fsf@163.com> <8102ff5b-b156-409e-a48f-e53e63a39b36@eisentraut.org> <8734t6c5rh.fsf@163.com> <87o7bn7z56.fsf@163.com> <875xx197bp.fsf@163.com> <87ttk0lgcx.fsf@163.com> <8734m5fua1.fsf@163.com> <87a5dx4cfb.fsf@163.com> <7487A577-7BDC-4B94-9FFA-741E95439BFC@gmail.com> <873417fgc0.fsf@163.com> <87eckqz5i9.fsf@163.com> In-Reply-To: From: Haibo Yan Date: Mon, 27 Apr 2026 13:35:57 -0700 X-Gm-Features: AVHnY4KHIXaStuMm7ORC7cmw_qgy3GyR_cG2-I6cInDlblQ3no5RC0RsU55JbCk Message-ID: Subject: Re: Extract numeric filed in JSONB more effectively To: Andy Fan Cc: Dmitry Dolgov <9erthalion6@gmail.com>, David Rowley , Peter Eisentraut , Amit Langote , Alvaro Herrera , jian he , Chapman Flack , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000008cd82706507710bc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008cd82706507710bc Content-Type: multipart/alternative; boundary="0000000000008cd82706507710ba" --0000000000008cd82706507710ba Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Apr 26, 2026 at 10:01=E2=80=AFPM Haibo Yan = wrote: > On Fri, Apr 10, 2026 at 2:48=E2=80=AFPM Haibo Yan = wrote: > >> On Wed, Apr 8, 2026 at 12:50=E2=80=AFPM Haibo Yan wrote: >> >>> On Tue, Apr 7, 2026 at 6:21=E2=80=AFPM Haibo Yan wrote: >>> >>>> On Tue, Apr 7, 2026 at 5:00=E2=80=AFPM Andy Fan wrote: >>>> >>>>> Haibo Yan writes: >>>>> >>>>> Hi Haibo, >>>>> >>>>> > I agree that if this approach is extended to the full matrix naivel= y, >>>>> > duplication will become a real issue. >>>>> >>>>> Could you summary how it would be? I think it would be helpful for >>>>> others to review. Otherwise every reviewer needs to count them many >>>>> times. >>>>> >>>>> -- >>>>> Best Regards >>>>> Andy Fan >>>>> >>>> Hi Andy, >>>> Sure. >>>> >>>> My current thought is to extend it in stages, rather than trying to >>>> solve the full matrix in a single patch. >>>> >>>> A rough plan would be: >>>> >>>> 1. Keep the current stage-1 patch small and validate the basic approac= h >>>> first >>>> >>>> >>>> - >>>> >>>> jsonb_object_field / -> / equivalent subscripting form >>>> - >>>> >>>> casts to numeric and bool >>>> - >>>> >>>> support-function rewrite directly to explicit typed extractor >>>> functions >>>> >>>> 2. Extend target types before extending extractor families >>>> >>>> >>>> - >>>> >>>> add int4 / int8 / float8 for the same object-field family first >>>> - >>>> >>>> keep the SQL-visible rewrite targets explicit, e.g. >>>> >>>> - >>>> >>>> jsonb_object_field_int4 >>>> - >>>> >>>> jsonb_object_field_int8 >>>> - >>>> >>>> jsonb_object_field_float8 >>>> >>>> - >>>> >>>> avoid the previous numeric-intermediate rewrite shape >>>> >>>> 3. Then extend to other extractor families with the same overall patte= rn >>>> >>>> >>>> - >>>> >>>> likely starting with jsonb_array_element and jsonb_extract_path >>>> - >>>> >>>> and possibly jsonb_path_query_first later >>>> - >>>> >>>> each family would still rewrite to explicit typed extractor entry >>>> points, e.g. >>>> >>>> - >>>> >>>> jsonb_array_element_numeric >>>> - >>>> >>>> jsonb_extract_path_bool >>>> - >>>> >>>> jsonb_path_query_first_int4 >>>> >>>> >>>> 4. Keep duplication manageable by sharing the implementation underneat= h >>>> >>>> >>>> - >>>> >>>> keep the SQL/catalog-level rewrite targets explicit for readability >>>> and reviewability >>>> - >>>> >>>> but factor the C implementation into: >>>> >>>> - >>>> >>>> extractor-family lookup helpers >>>> - >>>> >>>> target-type conversion helpers >>>> - >>>> >>>> thin wrappers, possibly generated with small macros >>>> >>>> So the idea would be: explicit rewrite targets at the SQL/catalog >>>> level, but shared lookup/conversion code underneath, instead of going = back >>>> to the earlier start/finish/internal pipeline. >>>> >>>> I agree that if this is extended naively across the full matrix, >>>> duplication will become a real issue. My reason for keeping the curren= t >>>> patch narrow is that I wanted to first validate this simpler rewrite s= hape >>>> on a small subset before deciding how best to scale it further. >>>> >>>> Regards, >>>> >>>> Haibo >>>> >>>> Hi all, >>> >>> Following up on our previous discussion, I want to clarify the current >>> patch plan together with the updated first patch. >>> >>> Earlier I described this work roughly as a 4-patch line. After iteratin= g >>> on the implementation and trying to keep each step reviewable, I now th= ink >>> the cleaner split is a 5-patch series: >>> >>> >>> 1. >>> >>> object-field casts to scalar types >>> 2. >>> >>> array-element casts to scalar types >>> 3. >>> >>> extract-path casts to scalar types >>> 4. >>> >>> multi-subscript casts via extract-path lowering >>> 5. >>> >>> jsonpath-first casts to scalar types (jsonb_path_query_first and _tz= ) >>> >>> The overall design is unchanged: use the cast function=E2=80=99s suppor= t hook to >>> recognize cast(extract(...)) over scalar-returning jsonb extraction >>> functions, and rewrite that directly to explicit typed extractor calls. >>> >>> Supported target types remain: >>> >>> >>> - numeric >>> - bool >>> - int4 >>> - int8 >>> - float8 >>> >>> One point I also want to make explicit is that I do not plan to include >>> jsonb_path_query in this series. >>> >>> After looking at it more carefully, I do not think it fits the same >>> model as the rest of the series. The patches here are all about >>> scalar-returning extraction functions, where the cast prosupport hook c= an >>> see and rewrite a scalar expression pair. jsonb_path_query is >>> set-returning, so optimizing casts over it would likely need a differen= t >>> mechanism, probably at planner or executor level, rather than one more >>> patch in this prosupport-based series. >>> >>> Attached here is the updated first patch in the current plan. >>> >>> This patch covers object-field extraction only: >>> >>> >>> - jsonb_object_field >>> - -> with text key >>> - key subscripting >>> >>> and rewrites casts to: >>> >>> >>> - numeric >>> - bool >>> - int4 >>> - int8 >>> - float8 >>> >>> to direct typed extractor calls. >>> >>> Thanks again for the earlier comments. I plan to send the remaining >>> patches in follow-up emails in the order above. >>> >>> Regards, >>> Haibo >>> >> >> Hi all, >> Following up on the earlier thread, I am continuing with the same overal= l >> plan and sending the next two patches in the series together. >> The design is still the same as before: use the cast function=E2=80=99s = support >> hook to recognize cast(extract(...)) over scalar-returning jsonb extract= ion >> functions, and rewrite that directly to explicit typed extractor calls, >> without changing normal SQL syntax. >> At this point, I have also folded int2 and float4 into the per-family >> patches, so each patch now carries the full target-type coverage for the >> functionality it introduces. >> The supported target types are now: >> numeric >> >> - bool >> - int2 >> - int4 >> - int8 >> - float4 >> - float8 >> >> I am still keeping jsonb_path_query out of scope for this series. The >> series is focused on scalar-returning extraction functions, where the ca= st >> prosupport hook can see and rewrite a scalar expression pair. >> jsonb_path_query is set-returning, so optimizing casts over it looks lik= e a >> different planner/executor problem rather than one more patch in this >> prosupport-based line. >> >> With that in mind, the current 5-patch plan is: >> >> 1. object-field casts to scalar types >> 2. array-element casts to scalar types >> 3. extract-path casts to scalar types >> 4. multi-subscript casts via extract-path lowering >> 5. jsonpath-first casts to scalar types (jsonb_path_query_first and >> _tz) >> >> In this email I am sending the first two patches: >> >> - patch 1: object-field casts to scalar types >> - patch 2: array-element casts to scalar types >> >> Patch 1 covers: >> >> - jsonb_object_field >> - -> with text key >> - key subscripting >> >> Patch 2 covers: >> >> - jsonb_array_element >> - -> with integer RHS >> - single-index array subscripting >> >> Both patches now support the full target-type set listed above. >> Thanks again for the earlier comments. I plan to continue with the >> remaining patches in follow-up emails in the same order. >> >> Regards, >> Haibo >> > Hi all, > > I spent some time reworking this patch series into a shape that I think i= s > easier to review and easier to reason about patch-by-patch. > > The goal of the series is still the same: optimize casts over > scalar-returning jsonb extraction functions by using the cast function=E2= =80=99s > support hook to recognize: > > - cast(extract(...)) > > and rewrite that directly to explicit typed extractor calls. > > That keeps ordinary SQL syntax unchanged, but avoids the extra jsonb > scalar wrapping/unwrapping on the optimized path. > > At this point the series is organized as 5 patches: > > 1. object-field casts to scalar types > 2. array-element casts to scalar types > 3. extract-path casts to scalar types > 4. multi-subscript casts via extract-path lowering > 5. jsonpath-first casts to scalar types > > The supported target types are: > > - numeric > - bool > - int2 > - int4 > - int8 > - float4 > - float8 > > The covered scalar-returning extraction families/forms are: > > - jsonb_object_field > - -> with text key > - equivalent key subscripting > - jsonb_array_element > - -> with integer RHS > - single-index array subscripting > - jsonb_extract_path > - #> > - direct jsonb_extract_path(...) > - multi-subscript jsonb subscripting (lowered to extract-path) > - jsonb_path_query_first > - jsonb_path_query_first_tz > > A few points about the current shape of the series: > > - I intentionally stayed with the support-function rewrite model and > did not introduce new user-visible operators. > - I also did not go back to the earlier start/finish/internal pipeline > approach. The current version rewrites directly to explicit typed extr= actor > functions. > - I folded int2 and float4 into the same family-based design, since > they are the remaining natural numeric-family targets that fit the sam= e > conversion model. > - I kept the multi-subscript patch conservative. It lowers through the > existing extract-path family, but it does not try to turn this into a > broader executor-side subscripting redesign. > > One explicit boundary of the series is that it does *not* try to optimize > jsonb_path_query. > > After looking at that more carefully, I do not think it belongs in the > same patch line. This series is about scalar-returning extraction > functions, where the cast prosupport hook can see and rewrite a scalar > expression pair. jsonb_path_query is set-returning, so optimizing casts > over it would likely require a different mechanism, probably at planner o= r > executor level, rather than one more patch in this prosupport-based serie= s. > > Another explicit boundary is that the series stops at the current > numeric/bool scalar targets. I did not try to extend it to > text/date/uuid-like conversions, because those would require different > semantics such as full jsonb serialization or string parsing, rather than > the direct scalar conversion pattern used here. > > I expect one likely question will be the catalog footprint, since this > approach adds a noticeable number of typed extractor builtins. I think th= at > is the cleanest tradeoff in this case: SQL is statically typed, and > explicit typed extractors keep the rewrite path simple, predictable, and > reviewable. The implementation-side boilerplate is kept under control wit= h > shared helpers and thin family-specific macros. > > Thanks in advance for any review and feedback. > > Regards, > Haibo > Hi all, I saw that CI failed on the latest version of the series, in the jsonb_path_query_first / jsonb_path_query_first_tz typed-extractor path. The failure does not look like an expected-output issue. The more likely problem is in how the typed jsonpath-first helper is obtaining or returning the first JsonbValue from the jsonpath execution result. At the moment my working suspicion is one of these: 1. the code is returning a dangling / no-longer-valid JsonbValue *, for example a pointer into a temporary JsonValueList or other local container whose contents are no longer stable by the time the conversion helper inspects it; or 2. the code is not actually passing the correct result JsonbValue to the conversion helper, and is instead interpreting some other internal structure as a JsonbValue, which would explain the bogus unknown jsonb type failure seen in CI. Sending the new patches. Regards, Haibo --0000000000008cd82706507710ba Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Sun, Apr 26, 2026 at 10:01=E2=80=AFPM = Haibo Yan <tristan.yim@gmail.co= m> wrote:
On Fri, Apr 10, 2026 at 2:48=E2=80=AFPM Haibo Yan <tristan.yim@gmail.com> wr= ote:
On Wed, Apr 8, 2026 at 12:50= =E2=80=AFPM Haibo Yan <tristan.yim@gmail.com> wrote:
On Tue, Apr 7, 2026 at 6:21=E2=80=AFPM Haibo Yan <tristan.yim@gmail.com> wrote:
Haibo Yan <<= a href=3D"mailto:tristan.yim@gmail.com" target=3D"_blank">tristan.yim@gmail= .com> writes:

Hi Haibo,

> I agree that if this approach is extended to the full matrix naively,<= br> > duplication will become a real issue.

Could you summary how it would be? I think it would be helpful for
others to review.=C2=A0 Otherwise every reviewer needs to count them many times.

--
Best Regards
Andy Fan
Hi Andy,
Sure.

My current thought is to extend it in stages, rather than trying to solv= e the full matrix in a single patch.

A rough plan would be:

1. Keep the current stage-1 patch small and validate th= e basic approach first

  • jsonb_object_field / -> / equivalent subscr= ipting form

  • casts to numeric and bool

  • support-function rewrite directly to explicit typed extractor functions<= /p>

2. Extend target types before extending extractor families

<= span>

  • add int4 / int8 / float8 for the = same object-field family first

  • keep the SQL-visible rewrite targets explicit, e.g.

    • jsonb_object_field_int4

    • jsonb_object_field_int8

    • jsonb_object_field_float8

  • avoid the previous numeric-intermediate rewrite shape

3. Th= en extend to other extractor families with the same overall pattern

  • likely starting with jsonb_array_element and j= sonb_extract_path

  • and possibly jsonb_path_query_first later

  • each family would still rewrite to explicit typed extractor entry points= , e.g.

    • jsonb_array_element_numeric

    • jsonb_extract_path_bool

    • jsonb_path_query_first_int4

4. Keep duplication manageable by sharing the implementati= on underneath

  • keep the SQL/catalog-level rewrite targets explicit for readability and = reviewability

  • but factor the C implementation into:

    • extractor-family lookup helpers

    • target-type conversion helpers

    • thin wrappers, possibly generated with small macros

  • So the idea would be: explicit rewrite targets at the SQL/catalog level,= but shared lookup/conversion code underneath, instead of going back to the= earlier start/finish/internal pipeline.

    I agree that if this is extended naively across the full matrix, duplica= tion will become a real issue. My reason for keeping the current patch narr= ow is that I wanted to first validate this simpler rewrite shape on a small= subset before deciding how best to scale it further.

    Regards,

    Haibo


Hi all,

Following up on our previous discussion, I want to clarify the current p= atch plan together with the updated first patch.

Earlier I described this work roughly as a 4-patch line. After iterating= on the implementation and trying to keep each step reviewable, I now think= the cleaner split is a 5-patch series:

  1. object-field casts to scalar types

  2. array-element casts to scalar types

  3. extract-path casts to scalar types

  4. multi-subscript casts via extract-path lowering

  5. jsonpath-first casts to scalar types (jsonb_path_query_first and _tz)

The overall design is unchanged: use the cast function=E2=80=99s support= hook to recognize cast(extract(...)) over scalar-returning jsonb extraction functions, and rewrite that directly to explici= t typed extractor calls.

Supported target types remain:

  • numeric
  • bool
  • int4
  • int8<= /li>
  • float8

One point I also want to make explicit is that I do not pla= n to include jsonb_path_query in this series.

After looking at it more carefully, I do not think it fits the same mode= l as the rest of the series. The patches here are all about scalar-returnin= g extraction functions, where the cast prosupport hook can see and rewrite = a scalar expression pair. jsonb_path_query is set-returning, s= o optimizing casts over it would likely need a different mechanism, probabl= y at planner or executor level, rather than one more patch in this prosuppo= rt-based series.

Attached here is the updated first patch in the current plan.

This patch covers object-field extraction only:

  • jsonb_object_field
  • -> w= ith text key
  • key subscripting

and rewrites casts to:

  • numeric
  • bool
  • int4
  • int8<= /li>
  • float8

to direct typed extractor calls.

Thanks again for the earlier comments. I plan to send the remaining patc= hes in follow-up emails in the order above.

Regards,

Haibo=C2=A0
<= br>
Hi all,
Following up on the earlier thread, I am continuing wit= h the same overall plan and sending the next two patches in the series toge= ther.
The design is still the same as before: use the cast function=E2= =80=99s support hook to recognize cast(extract(...)) over scalar-returning = jsonb extraction functions, and rewrite that directly to explicit typed ext= ractor calls, without changing normal SQL syntax.
At this point, I have = also folded int2 and float4 into the per-family patches, so each patch now = carries the full target-type coverage for the functionality it introduces.<= br>The supported target types are now:
numeric
  • bool
  • i= nt2
  • int4
  • int8
  • float4
  • float8
I am s= till keeping jsonb_path_query out of scope for this series. The series is f= ocused on scalar-returning extraction functions, where the cast prosupport = hook can see and rewrite a scalar expression pair. jsonb_path_query is set-= returning, so optimizing casts over it looks like a different planner/execu= tor problem rather than one more patch in this prosupport-based line.
With that in mind, the current 5-patch plan is:
  1. object-field c= asts to scalar types
  2. array-element casts to scalar types
  3. ex= tract-path casts to scalar types
  4. multi-subscript casts via extract-= path lowering
  5. jsonpath-first casts to scalar types (jsonb_path_quer= y_first and _tz)
In this email I am sending the first two patches:=
  • patch 1: object-field casts to scalar types
  • patch 2: ar= ray-element casts to scalar types
Patch 1 covers:
  • jsonb= _object_field
  • -> with text key
  • key subscripting
  • Patch 2 covers:
    • jsonb_array_element
    • -> with integer = RHS
    • single-index array subscripting
    Both patches now suppo= rt the full target-type set listed above.
    Thanks again for the earlier c= omments. I plan to continue with the remaining patches in follow-up emails = in the same order.

    Regards,
    Haibo

= Hi all,

I spent some time reworking this patch series into a shape that I think = is easier to review and easier to reason about patch-by-patch.

The goal of the series is still the same: optimize casts over scalar-ret= urning jsonb extraction functions by using the cast function= =E2=80=99s support hook to recognize:

  • cast(extract(...))

and rewrite that directly to explicit typed extractor calls.

That keeps ordinary SQL syntax unchanged, but avoids the extra jsonb sca= lar wrapping/unwrapping on the optimized path.

At this point the series is organized as 5 patches:

  1. object-field casts to scalar types
  2. array-elemen= t casts to scalar types
  3. extract-path casts to scalar types
  4. = multi-subscript casts via extract-path lowering
  5. jsonpath-first cast= s to scalar types

The supported target types are:

  • numeric
  • bool
  • int2
  • int4
  • int8
  • flo= at4
  • float8

The covered scalar-returning extraction families/forms are:

  • jsonb_object_field
  • -> wi= th text key
  • equivalent key subscripting
  • jsonb_= array_element
  • -> with integer RHS
  • single-index array subscripting
  • jsonb_extract_path=
  • #>
  • direct jsonb_= extract_path(...)
  • multi-subscript jsonb subscripting (lowere= d to extract-path)
  • jsonb_path_query_first
  • jsonb_path_query_first_tz

A few points about the current shape of the series:

  • I intentionally stayed with the support-function rewrite model and = did not introduce new user-visible operators.
  • I also did not go bac= k to the earlier start/finish/internal pipeline approach. The current versi= on rewrites directly to explicit typed extractor functions.
  • I folde= d int2 and float4 into the same family-based desi= gn, since they are the remaining natural numeric-family targets that fit th= e same conversion model.
  • I kept the multi-subscript patch conservat= ive. It lowers through the existing extract-path family, but it does not tr= y to turn this into a broader executor-side subscripting redesign.
  • One explicit boundary of the series is that it does not try to optimize jsonb_path_query.

    After looking at that more carefully, I do not think it belongs in the s= ame patch line. This series is about scalar-returning extraction functions,= where the cast prosupport hook can see and rewrite a scalar expression pai= r. jsonb_path_query is set-returning, so optimizing casts over= it would likely require a different mechanism, probably at planner or exec= utor level, rather than one more patch in this prosupport-based series.

    Another explicit boundary is that the series stops at the current numeri= c/bool scalar targets. I did not try to extend it to text/date/uuid-like co= nversions, because those would require different semantics such as full jso= nb serialization or string parsing, rather than the direct scalar conversio= n pattern used here.

    I expect one likely question will be the catalog footprint, since this a= pproach adds a noticeable number of typed extractor builtins. I think that = is the cleanest tradeoff in this case: SQL is statically typed, and explici= t typed extractors keep the rewrite path simple, predictable, and reviewabl= e. The implementation-side boilerplate is kept under control with shared he= lpers and thin family-specific macros.

    Thanks in advance for any review and feedback.

    Regards,

    Haibo=C2=A0

Hi all,

I saw that CI failed on the latest version of the ser= ies, in the jsonb_path_query_first / jsonb_path_query_fi= rst_tz typed-extractor path.

The failure does not look like an expected-output iss= ue. The more likely problem is in how the typed jsonpath-first helper is ob= taining or returning the first JsonbValue from the jsonpath ex= ecution result.

At the moment my working suspicion is one of these:

  1. the code is returning a dangling / no-longer-valid JsonbValue *, for example a pointer into a temporary JsonVal= ueList or other local container whose contents are no longer stable = by the time the conversion helper inspects it; or
  2. the code is not a= ctually passing the correct result JsonbValue to the conversio= n helper, and is instead interpreting some other internal structure as a JsonbValue, which would explain the bogus unknown jsonb ty= pe failure seen in CI.
=C2=A0Sending the new patches.<= /div>

Regards,
Haibo

--0000000000008cd82706507710ba-- --0000000000008cd82706507710bc Content-Type: application/octet-stream; name="v6-0002-jsonb-optimize-array-element-casts-to-scalar-type.patch" Content-Disposition: attachment; filename="v6-0002-jsonb-optimize-array-element-casts-to-scalar-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mohnprgt1 RnJvbSA5YzhhYjE5YjdjZGNlYjcwYTY0MjAxM2FjYzg2Njg4N2NlNmNjYjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IFdlZCwgOCBBcHIgMjAyNiAwMDo0OToxNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjYgMi81XSBq c29uYjogb3B0aW1pemUgYXJyYXktZWxlbWVudCBjYXN0cyB0byBzY2FsYXIgdHlwZXMKCkV4dGVu ZCB0aGUgZXhpc3Rpbmcgc3VwcG9ydC1mdW5jdGlvbiByZXdyaXRlIHRvIGpzb25iIGFycmF5LWVs ZW1lbnQKZXh0cmFjdGlvbiwgaW5jbHVkaW5nIGJvdGggLT4gaW50ZWdlciBhbmQgc2luZ2xlLWlu ZGV4IHN1YnNjcmlwdGluZy4KClN1cHBvcnRlZCBjYXN0cyBhcmUgcmV3cml0dGVuIGRpcmVjdGx5 IHRvIGV4cGxpY2l0IHR5cGVkIGV4dHJhY3RvcgpmdW5jdGlvbnMgZm9yIG51bWVyaWMsIGJvb2ws IGludDIsIGludDQsIGludDgsIGZsb2F0NCwgYW5kIGZsb2F0OC4KLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmIuYyAgICAgICB8IDE1NCArKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jICAgfCAgNjcgKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0ICAgICB8ICAyOCArKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNv bmIub3V0IHwgMzA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iLnNxbCAgICAgIHwgIDg1ICsrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDU5 MyBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4 IGM4NWQ0ODgyZjIyLi41YWJiNTFkNDdkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTE4MjYs MTUgKzE4MjYsMTQgQEAgY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNv bnN0IGNoYXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKICAqIHByb3N1cHBvcnQgb24gdGhl IGpzb25iX251bWVyaWMsIGpzb25iX2Jvb2wsIGpzb25iX2ludDQsIGpzb25iX2ludDgsIGFuZAog ICoganNvbmJfZmxvYXQ4IGNhdGFsb2cgZW50cmllcy4KICAqCi0gKiBXaGVuIHRoZSBzb2xlIGFy Z3VtZW50IHRvIHRoZSBjYXN0IGlzIGEganNvbmJfb2JqZWN0X2ZpZWxkKCkgY2FsbCAodGhlIC0+ Ci0gKiBvcGVyYXRvciksIHdlIHJlcGxhY2UgdGhlIHR3by1zdGVwIGNhc3QoZXh0cmFjdCguLi4p KSBleHByZXNzaW9uIHdpdGggYQotICogc2luZ2xlIHR5cGVkIGV4dHJhY3RvciB0aGF0IHJlYWRz IHRoZSBzY2FsYXIgZGlyZWN0bHkgZnJvbSB0aGUgaW4tbWVtb3J5Ci0gKiBKc29uYlZhbHVlLCBh dm9pZGluZyBhIHJvdW5kLXRyaXAgdGhyb3VnaCBKc29uYlZhbHVlVG9Kc29uYi4KKyAqIFdoZW4g dGhlIHNvbGUgYXJndW1lbnQgdG8gdGhlIGNhc3QgaXMgYSBqc29uYiBleHRyYWN0aW9uIGNhbGws IHdlIHJlcGxhY2UKKyAqIHRoZSB0d28tc3RlcCBjYXN0KGV4dHJhY3QoLi4uKSkgZXhwcmVzc2lv biB3aXRoIGEgc2luZ2xlIHR5cGVkIGV4dHJhY3RvcgorICogdGhhdCByZWFkcyB0aGUgc2NhbGFy IGRpcmVjdGx5IGZyb20gdGhlIGluLW1lbW9yeSBKc29uYlZhbHVlLCBhdm9pZGluZyBhCisgKiBy b3VuZC10cmlwIHRocm91Z2ggSnNvbmJWYWx1ZVRvSnNvbmIuCiAgKgotICogRm9yIGV4YW1wbGUs IChqIC0+ICdhJyk6Om51bWVyaWMgaXMgcGFyc2VkIGFzOgotICogICBqc29uYl9udW1lcmljKGpz b25iX29iamVjdF9maWVsZChqLCAnYScpKQotICogYW5kIGlzIHJld3JpdHRlbiB0bzoKLSAqICAg anNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoaiwgJ2EnKQorICogU3VwcG9ydGVkIGV4dHJhY3Rp b24gZmFtaWxpZXM6CisgKiAgIC0ganNvbmJfb2JqZWN0X2ZpZWxkKGosICdrZXknKSAgLyAgaiAt PiAna2V5JyAgLyAgalsna2V5J10KKyAqICAgLSBqc29uYl9hcnJheV9lbGVtZW50KGosIGlkeCkg ICAvICBqIC0+IGlkeCAgICAvICBqW2lkeF0KICAqLwogRGF0dW0KIGpzb25iX2Nhc3Rfc3VwcG9y dChQR19GVU5DVElPTl9BUkdTKQpAQCAtMTg4NiwxMSArMTg4NSwxMiBAQCBqc29uYl9jYXN0X3N1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJewogCQkJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYg PSAoU3Vic2NyaXB0aW5nUmVmICopIGFyZzsKIAkJCU5vZGUJICAgKnN1YnNjcmlwdDsKKwkJCU9p ZAkJCXN1YnNjcmlwdF90eXBlOwogCiAJCQkvKgotCQkJICogT25seSBoYW5kbGUgdGhlIG5hcnJv dyBjYXNlIGVxdWl2YWxlbnQgdG8gb2JqZWN0LWZpZWxkCi0JCQkgKiBleHRyYWN0aW9uOiBhIHNp bmdsZSB0ZXh0LXR5cGVkIHN1YnNjcmlwdCBvbiBhIGpzb25iCi0JCQkgKiBjb250YWluZXIsIHdp dGggbm8gc2xpY2UgYW5kIG5vIGFzc2lnbm1lbnQuCisJCQkgKiBIYW5kbGUgc2luZ2xlLXN1YnNj cmlwdCBqc29uYiBhY2Nlc3Mgd2l0aCBubyBzbGljZSBhbmQgbm8KKwkJCSAqIGFzc2lnbm1lbnQu ICBUZXh0IHN1YnNjcmlwdHMgbWFwIHRvIG9iamVjdC1maWVsZCBleHRyYWN0aW9uOworCQkJICog aW50NCBzdWJzY3JpcHRzIG1hcCB0byBhcnJheS1lbGVtZW50IGV4dHJhY3Rpb24uCiAJCQkgKi8K IAkJCWlmIChzYnNyZWYtPnJlZmNvbnRhaW5lcnR5cGUgIT0gSlNPTkJPSUQpCiAJCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CkBAIC0xOTAyLDU3ICsxOTAyLDExMyBAQCBqc29uYl9jYXN0X3N1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKIAog CQkJc3Vic2NyaXB0ID0gKE5vZGUgKikgbGluaXRpYWwoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIp OwotCQkJaWYgKGV4cHJUeXBlKHN1YnNjcmlwdCkgIT0gVEVYVE9JRCkKKwkJCXN1YnNjcmlwdF90 eXBlID0gZXhwclR5cGUoc3Vic2NyaXB0KTsKKworCQkJaWYgKHN1YnNjcmlwdF90eXBlID09IFRF WFRPSUQpCisJCQl7CisJCQkJaW5uZXJfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTEQ7CisJ CQkJaW5uZXJfYXJncyA9IGxpc3RfbWFrZTIoc2JzcmVmLT5yZWZleHByLCBzdWJzY3JpcHQpOwor CQkJfQorCQkJZWxzZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0gSU5UNE9JRCkKKwkJCXsKKwkJCQlp bm5lcl9mdW5jaWQgPSBGX0pTT05CX0FSUkFZX0VMRU1FTlQ7CisJCQkJaW5uZXJfYXJncyA9IGxp c3RfbWFrZTIoc2JzcmVmLT5yZWZleHByLCBzdWJzY3JpcHQpOworCQkJfQorCQkJZWxzZQogCQkJ CVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCi0JCQlpbm5lcl9mdW5jaWQgPSBGX0pTT05CX09C SkVDVF9GSUVMRDsKLQkJCWlubmVyX2FyZ3MgPSBsaXN0X21ha2UyKHNic3JlZi0+cmVmZXhwciwg c3Vic2NyaXB0KTsKIAkJCWxvY2F0aW9uID0gZXhwckxvY2F0aW9uKGFyZyk7CiAJCX0KIAkJZWxz ZQogCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAKLQkJLyogT25seSByZXdyaXRlIGpzb25i X29iamVjdF9maWVsZChqc29uYiwgdGV4dCk7IHZlcmlmeSBhcml0eSB0b28gKi8KLQkJaWYgKGlu bmVyX2Z1bmNpZCAhPSBGX0pTT05CX09CSkVDVF9GSUVMRCkKLQkJCVBHX1JFVFVSTl9QT0lOVEVS KE5VTEwpOworCQkvKgorCQkgKiBWZXJpZnkgdGhlIGlubmVyIGV4dHJhY3Rpb24gZnVuY3Rpb24g YW5kIG1hcCB0aGUgb3V0ZXIgY2FzdCB0byB0aGUKKwkJICogY29ycmVzcG9uZGluZyB0eXBlZCBl eHRyYWN0b3IuICBFYWNoIHN1cHBvcnRlZCBleHRyYWN0aW9uIGZhbWlseQorCQkgKiBoYXMgaXRz IG93biBzZXQgb2YgdHlwZWQgcmV3cml0ZSB0YXJnZXRzLgorCQkgKi8KIAkJaWYgKGxpc3RfbGVu Z3RoKGlubmVyX2FyZ3MpICE9IDIpCiAJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKIAotCQkv KiBNYXAgdGhlIG91dGVyIGNhc3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdHlwZWQgZXh0cmFjdG9y ICovCi0JCWlmIChmZXhwci0+ZnVuY2lkID09IEZfTlVNRVJJQ19KU09OQikKLQkJewotCQkJcmVw bGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfTlVNRVJJQzsKLQkJCXJlcGxh Y2VtZW50X3JldHR5cGUgPSBOVU1FUklDT0lEOwotCQl9Ci0JCWVsc2UgaWYgKGZleHByLT5mdW5j aWQgPT0gRl9CT09MX0pTT05CKQotCQl7Ci0JCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X09CSkVDVF9GSUVMRF9CT09MOwotCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEJPT0xPSUQ7Ci0J CX0KLQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDRfSlNPTkIpCisJCWlmIChpbm5l cl9mdW5jaWQgPT0gRl9KU09OQl9PQkpFQ1RfRklFTEQpCiAJCXsKLQkJCXJlcGxhY2VtZW50X2Z1 bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lOVDQ7Ci0JCQlyZXBsYWNlbWVudF9yZXR0eXBl ID0gSU5UNE9JRDsKLQkJfQotCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5UOF9KU09O QikKLQkJewotCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfSU5U ODsKLQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ4T0lEOwotCQl9Ci0JCWVsc2UgaWYgKGZl eHByLT5mdW5jaWQgPT0gRl9GTE9BVDhfSlNPTkIpCi0JCXsKLQkJCXJlcGxhY2VtZW50X2Z1bmNp ZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0ZMT0FUODsKLQkJCXJlcGxhY2VtZW50X3JldHR5cGUg PSBGTE9BVDhPSUQ7Ci0JCX0KLQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDJfSlNP TkIpCi0JCXsKLQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lO VDI7Ci0JCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UMk9JRDsKKwkJCWlmIChmZXhwci0+ZnVu Y2lkID09IEZfTlVNRVJJQ19KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBG X0pTT05CX09CSkVDVF9GSUVMRF9OVU1FUklDOworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBO VU1FUklDT0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0JPT0xfSlNP TkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERf Qk9PTDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gQk9PTE9JRDsKKwkJCX0KKwkJCWVsc2Ug aWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ0X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50 X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lOVDQ7CisJCQkJcmVwbGFjZW1lbnRfcmV0 dHlwZSA9IElOVDRPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5U OF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX09CSkVDVF9G SUVMRF9JTlQ4OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ4T0lEOworCQkJfQorCQkJ ZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0ZMT0FUOF9KU09OQikKKwkJCXsKKwkJCQlyZXBs YWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX09CSkVDVF9GSUVMRF9GTE9BVDg7CisJCQkJcmVwbGFj ZW1lbnRfcmV0dHlwZSA9IEZMT0FUOE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5j aWQgPT0gRl9JTlQyX0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNP TkJfT0JKRUNUX0ZJRUxEX0lOVDI7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7 CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfRkxPQVQ0X0pTT05CKQorCQkJ eworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0ZMT0FUNDsK KwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gRkxPQVQ0T0lEOworCQkJfQorCQkJZWxzZQorCQkJ CVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCQl9Ci0JCWVsc2UgaWYgKGZleHByLT5mdW5jaWQg PT0gRl9GTE9BVDRfSlNPTkIpCisJCWVsc2UgaWYgKGlubmVyX2Z1bmNpZCA9PSBGX0pTT05CX0FS UkFZX0VMRU1FTlQpCiAJCXsKLQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNU X0ZJRUxEX0ZMT0FUNDsKLQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBGTE9BVDRPSUQ7CisJCQlp ZiAoZmV4cHItPmZ1bmNpZCA9PSBGX05VTUVSSUNfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1l bnRfZnVuY2lkID0gRl9KU09OQl9BUlJBWV9FTEVNRU5UX05VTUVSSUM7CisJCQkJcmVwbGFjZW1l bnRfcmV0dHlwZSA9IE5VTUVSSUNPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lk ID09IEZfQk9PTF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X0FSUkFZX0VMRU1FTlRfQk9PTDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gQk9PTE9JRDsK KwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ0X0pTT05CKQorCQkJewor CQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9JTlQ0OworCQkJ CXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ0T0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHIt PmZ1bmNpZCA9PSBGX0lOVDhfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0g Rl9KU09OQl9BUlJBWV9FTEVNRU5UX0lOVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElO VDhPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfRkxPQVQ4X0pTT05C KQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9G TE9BVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUOE9JRDsKKwkJCX0KKwkJCWVs c2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQyX0pTT05CKQorCQkJeworCQkJCXJlcGxhY2Vt ZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9JTlQyOworCQkJCXJlcGxhY2VtZW50 X3JldHR5cGUgPSBJTlQyT0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBG X0ZMT0FUNF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX0FS UkFZX0VMRU1FTlRfRkxPQVQ0OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBGTE9BVDRPSUQ7 CisJCQl9CisJCQllbHNlCisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAJCX0KIAkJZWxz ZQogCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMK aW5kZXggYzI2MDU3N2Q4OTUuLmNjOWM1MWM1Y2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5j cy5jCkBAIC0xMTE0LDYgKzExMTQsNzMgQEAgREVGSU5FX0pTT05CX09CSkVDVF9GSUVMRF9UWVBF RChqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4LCBqc29uYl92YWx1ZV90b19mbG9hdDgKIERFRklO RV9KU09OQl9PQkpFQ1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0X2ZpZWxkX2ludDIsIGpzb25i X3ZhbHVlX3RvX2ludDJfZGF0dW0pCiBERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEKGpz b25iX29iamVjdF9maWVsZF9mbG9hdDQsIGpzb25iX3ZhbHVlX3RvX2Zsb2F0NF9kYXR1bSkKIAor LyoKKyAqIExvb2sgdXAgYW4gZWxlbWVudCBieSBpbmRleCBpbiBhIGpzb25iIGFycmF5IGFuZCBy ZXR1cm4gdGhlIEpzb25iVmFsdWUsCisgKiBvciBOVUxMLiAgUmV0dXJucyBOVUxMICh3aXRob3V0 IGVycm9yKSB3aGVuIHRoZSBpbnB1dCBpcyBub3QgYW4gYXJyYXksCisgKiB0aGUgaW5kZXggaXMg b3V0IG9mIHJhbmdlLCBvciB0aGUgdmFsdWUgaXMgSlNPTiBudWxsLiAgSGFuZGxlcyBuZWdhdGl2 ZQorICogaW5kaWNlcyB0aGUgc2FtZSB3YXkgYXMganNvbmJfYXJyYXlfZWxlbWVudCgpLgorICov CitzdGF0aWMgSnNvbmJWYWx1ZSAqCitqc29uYl9hcnJheV9lbGVtZW50X2xvb2t1cChKc29uYiAq amIsIGludDMyIGVsZW1lbnQpCit7CisJSnNvbmJWYWx1ZSAqdjsKKworCWlmICghSkJfUk9PVF9J U19BUlJBWShqYikpCisJCXJldHVybiBOVUxMOworCisJLyogSGFuZGxlIG5lZ2F0aXZlIHN1YnNj cmlwdCAqLworCWlmIChlbGVtZW50IDwgMCkKKwl7CisJCXVpbnQzMgkJbmVsZW1lbnRzID0gSkJf Uk9PVF9DT1VOVChqYik7CisKKwkJaWYgKHBnX2Fic19zMzIoZWxlbWVudCkgPiBuZWxlbWVudHMp CisJCQlyZXR1cm4gTlVMTDsKKwkJZWxzZQorCQkJZWxlbWVudCArPSBuZWxlbWVudHM7CisJfQor CisJdiA9IGdldEl0aEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZqYi0+cm9vdCwgZWxlbWVudCk7 CisKKwkvKiBNaXNzaW5nIGluZGV4IG9yIEpTT04gbnVsbCBib3RoIG1hcCB0byBTUUwgTlVMTCAq LworCWlmICh2ID09IE5VTEwgfHwgdi0+dHlwZSA9PSBqYnZOdWxsKQorCQlyZXR1cm4gTlVMTDsK KworCXJldHVybiB2OworfQorCisvKgorICogVGhpbi13cmFwcGVyIG1hY3JvIGZvciB0aGUganNv bmJfYXJyYXlfZWxlbWVudF88dHlwZT4gZXh0cmFjdG9yIGZhbWlseS4KKyAqIFNhbWUgcGF0dGVy biBhcyBERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEIGJ1dCBmb3IgYXJyYXkgZWxlbWVu dHMuCisgKi8KKyNkZWZpbmUgREVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQoZm5hbWUs IGNvbnZmbikgXAorRGF0dW0gXAorZm5hbWUoUEdfRlVOQ1RJT05fQVJHUykgXAoreyBcCisJSnNv bmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMCk7IFwKKwlpbnQzMgkJZWxlbWVudCA9IFBH X0dFVEFSR19JTlQzMigxKTsgXAorCUpzb25iVmFsdWUgKnY7IFwKKwlEYXR1bQkJcmVzdWx0OyBc CitcCisJdiA9IGpzb25iX2FycmF5X2VsZW1lbnRfbG9va3VwKGpiLCBlbGVtZW50KTsgXAorCWlm ICh2ID09IE5VTEwpIFwKKwl7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAorCQlQR19S RVRVUk5fTlVMTCgpOyBcCisJfSBcCitcCisJcmVzdWx0ID0gY29udmZuKHYpOyBcCisJUEdfRlJF RV9JRl9DT1BZKGpiLCAwKTsgXAorCXJldHVybiByZXN1bHQ7IFwKK30KKworREVGSU5FX0pTT05C X0FSUkFZX0VMRU1FTlRfVFlQRUQoanNvbmJfYXJyYXlfZWxlbWVudF9udW1lcmljLCBqc29uYl92 YWx1ZV90b19udW1lcmljX2RhdHVtKQorREVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQo anNvbmJfYXJyYXlfZWxlbWVudF9ib29sLCBqc29uYl92YWx1ZV90b19ib29sX2RhdHVtKQorREVG SU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQoanNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0LCBq c29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQorREVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQ RUQoanNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4LCBqc29uYl92YWx1ZV90b19pbnQ4X2RhdHVtKQor REVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQoanNvbmJfYXJyYXlfZWxlbWVudF9mbG9h dDgsIGpzb25iX3ZhbHVlX3RvX2Zsb2F0OF9kYXR1bSkKK0RFRklORV9KU09OQl9BUlJBWV9FTEVN RU5UX1RZUEVEKGpzb25iX2FycmF5X2VsZW1lbnRfaW50MiwganNvbmJfdmFsdWVfdG9faW50Ml9k YXR1bSkKK0RFRklORV9KU09OQl9BUlJBWV9FTEVNRU5UX1RZUEVEKGpzb25iX2FycmF5X2VsZW1l bnRfZmxvYXQ0LCBqc29uYl92YWx1ZV90b19mbG9hdDRfZGF0dW0pCisKIERhdHVtCiBqc29uX2Fy cmF5X2VsZW1lbnQoUEdfRlVOQ1RJT05fQVJHUykKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IDQwNmUwOGRmZmRkLi5hZDc1MmEwYTllMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC0xMjgwNyw1ICsxMjgwNywzMyBAQAogICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfZmllbGRf ZmxvYXQ0JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25i IHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixmaWVsZF9uYW1lfScsCiAgIHByb3Ny YyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCcgfSwKK3sgb2lkID0+ICc5OTYwJywgZGVz Y3IgPT4gJ2V4dHJhY3QgbnVtZXJpYyBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1lbnQgaW5kZXgn LAorICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X251bWVyaWMnLCBwcm9yZXR0eXBl ID0+ICdudW1lcmljJywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1l cyA9PiAne2Zyb21fanNvbixlbGVtZW50X2luZGV4fScsCisgIHByb3NyYyA9PiAnanNvbmJfYXJy YXlfZWxlbWVudF9udW1lcmljJyB9LAoreyBvaWQgPT4gJzk5NjEnLCBkZXNjciA9PiAnZXh0cmFj dCBib29sZWFuIGZyb20ganNvbmIgYXJyYXkgYnkgZWxlbWVudCBpbmRleCcsCisgIHByb25hbWUg PT4gJ2pzb25iX2FycmF5X2VsZW1lbnRfYm9vbCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBw cm9hcmd0eXBlcyA9PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVs ZW1lbnRfaW5kZXh9JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Jvb2wnIH0s Cit7IG9pZCA9PiAnOTk2MicsIGRlc2NyID0+ICdleHRyYWN0IGludDQgZnJvbSBqc29uYiBhcnJh eSBieSBlbGVtZW50IGluZGV4JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9p bnQ0JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBpbnQ0 JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sZWxlbWVudF9pbmRleH0nLAorICBwcm9zcmMg PT4gJ2pzb25iX2FycmF5X2VsZW1lbnRfaW50NCcgfSwKK3sgb2lkID0+ICc5OTYzJywgZGVzY3Ig PT4gJ2V4dHJhY3QgaW50OCBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1lbnQgaW5kZXgnLAorICBw cm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2ludDgnLCBwcm9yZXR0eXBlID0+ICdpbnQ4 JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21f anNvbixlbGVtZW50X2luZGV4fScsCisgIHByb3NyYyA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9p bnQ4JyB9LAoreyBvaWQgPT4gJzk5NjQnLCBkZXNjciA9PiAnZXh0cmFjdCBmbG9hdDggZnJvbSBq c29uYiBhcnJheSBieSBlbGVtZW50IGluZGV4JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlf ZWxlbWVudF9mbG9hdDgnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLAorICBwcm9hcmd0eXBlcyA9 PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVsZW1lbnRfaW5kZXh9 JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCcgfSwKK3sgb2lkID0+ ICc5OTgyJywgZGVzY3IgPT4gJ2V4dHJhY3QgaW50MiBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1l bnQgaW5kZXgnLAorICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2ludDInLCBwcm9y ZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmdu YW1lcyA9PiAne2Zyb21fanNvbixlbGVtZW50X2luZGV4fScsCisgIHByb3NyYyA9PiAnanNvbmJf YXJyYXlfZWxlbWVudF9pbnQyJyB9LAoreyBvaWQgPT4gJzk5ODMnLCBkZXNjciA9PiAnZXh0cmFj dCBmbG9hdDQgZnJvbSBqc29uYiBhcnJheSBieSBlbGVtZW50IGluZGV4JywKKyAgcHJvbmFtZSA9 PiAnanNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDQnLAor ICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29u LGVsZW1lbnRfaW5kZXh9JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0 NCcgfSwKIAogXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9qc29uYi5vdXQKaW5kZXggYzMxZmIxMjBkZDguLjM2YmM4MjA5NWJlIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iLm91dApAQCAtOTM5LDYgKzkzOSwzMTQgQEAgRVJST1I6ICBpbnRlZ2Vy IG91dCBvZiByYW5nZQogLS0gZGlyZWN0IGNhbGxzOiBpbnQyIG92ZXJmbG93CiBTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOwogRVJST1I6 ICBzbWFsbGludCBvdXQgb2YgcmFuZ2UKKy0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiBh cnJheS1lbGVtZW50IGZhbWlseQorLS0gVGhlIHBsYW5uZXIgcmV3cml0ZXMgKGotPmlkeCk6OnR5 cGUgYW5kIChqW2lkeF0pOjp0eXBlIGludG8gZGlyZWN0CistLSB0eXBlZCBleHRyYWN0b3IgY2Fs bHMgZm9yIHRoZSBzYW1lIHRhcmdldCB0eXBlcyBhcyB0aGUgb2JqZWN0LWZpZWxkIGZhbWlseS4K Ky0tIENyZWF0ZSBhIHNtYWxsIGZpeHR1cmUgd2l0aCB0eXBlZCBhcnJheSBlbGVtZW50cyBmb3Ig dGVzdGluZworQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9qc29uYl9hcnIgKHRlc3RfYXJyIGpzb25i KTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfYXJyIFZBTFVFUyAoJ1sxMCwgMi41LCB0cnVlLCBu dWxsLCAiaGVsbG8iLCBbMSwyXSwgeyJrIjoxfV0nKTsKKy0tIFNlY3Rpb24gQTE6IHBsYW5uZXIg cmV3cml0ZSB2ZXJpZmljYXRpb24gKGFycmF5IGVsZW1lbnQsIG9wZXJhdG9yIGZvcm0pCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6Om51bWVyaWMg RlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBP dXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfbnVtZXJpYyh0ZXN0X2FyciwgMCkKKygyIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6 aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOworICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91 dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0KHRlc3RfYXJyLCAwKQorKDIgcm93cykKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9h dDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iX2FycgorICAg T3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCh0ZXN0X2FyciwgMSkKKygyIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAyKTo6 Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOworICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91 dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9ib29sKHRlc3RfYXJyLCAyKQorKDIgcm93cykKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ4 IEZST00gdGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iX2FycgorICAgT3V0cHV0 OiBqc29uYl9hcnJheV9lbGVtZW50X2ludDgodGVzdF9hcnIsIDApCisoMiByb3dzKQorCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDIgRlJP TSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBPdXRwdXQ6IGpz b25iX2FycmF5X2VsZW1lbnRfaW50Mih0ZXN0X2FyciwgMCkKKygyIHJvd3MpCisKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ0IEZST00g dGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91dHB1dDog anNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQodGVzdF9hcnIsIDEpCisoMiByb3dzKQorCistLSBT ZWN0aW9uIEExYjogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoYXJyYXkgc3Vic2NyaXB0 aW5nIGZvcm0pCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJb MF0pOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pz b25iX2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X251bWVyaWModGVzdF9hcnIs IDApCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVz dF9hcnJbMF0pOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25i X2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2ludDQodGVzdF9hcnIsIDApCiso MiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJb MV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25i X2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCh0ZXN0X2FyciwgMSkK KygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2Fy clsyXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJy CisgICBPdXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfYm9vbCh0ZXN0X2FyciwgMikKKygyIHJv d3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclswXSk6 OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBP dXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCh0ZXN0X2FyciwgMCkKKygyIHJvd3MpCisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclswXSk6OmludDIg RlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBPdXRwdXQ6 IGpzb25iX2FycmF5X2VsZW1lbnRfaW50Mih0ZXN0X2FyciwgMCkKKygyIHJvd3MpCisKKy0tIFNl Y3Rpb24gQTFjOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3QgZnVuY3Rpb24g Y2FsbCBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX2Fy cmF5X2VsZW1lbnQodGVzdF9hcnIsIDApKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOworICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0 KHRlc3RfYXJyLCAwKQorKDIgcm93cykKKworLS0gU2VjdGlvbiBBMjogY29ycmVjdCBleGVjdXRp b24gdGhyb3VnaCByZXdyaXR0ZW4gcGF0aAorU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworIGludDQgCistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKK1NF TEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyBpbnQ4IAor LS0tLS0tCisgICAxMAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjpudW1lcmlj IEZST00gdGVzdF9qc29uYl9hcnI7CisgbnVtZXJpYyAKKy0tLS0tLS0tLQorICAgICAgMTAKKygx IHJvdykKKworU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9h cnI7CisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAyLjUKKygxIHJvdykKKworU0VMRUNUICh0ZXN0 X2FyciAtPiAyKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOworIGJvb2wgCistLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDIgRlJPTSB0ZXN0X2pzb25i X2FycjsKKyBpbnQyIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfYXJy IC0+IDEpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsKKyBmbG9hdDQgCistLS0tLS0tLQor ICAgIDIuNQorKDEgcm93KQorCistLSBTZWN0aW9uIEEyYjogY29ycmVjdCBleGVjdXRpb24gdGhy b3VnaCBzdWJzY3JpcHRpbmcKK1NFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ0IEZST00gdGVzdF9q c29uYl9hcnI7CisgdGVzdF9hcnIgCistLS0tLS0tLS0tCisgICAgICAgMTAKKygxIHJvdykKKwor U0VMRUNUICh0ZXN0X2FyclsxXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmJfYXJyOworIHRlc3Rf YXJyIAorLS0tLS0tLS0tLQorICAgICAgMi41CisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnJb Ml0pOjpib29sIEZST00gdGVzdF9qc29uYl9hcnI7CisgdGVzdF9hcnIgCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCistLSBTZWN0aW9uIEEzOiBOVUxMIHNlbWFudGljcworU0VMRUNUICh0ZXN0 X2FyciAtPiA5OSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZQor IGludDQgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gMyk6 Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIEpTT04gbnVsbCBlbGVtZW50CisgbnVt ZXJpYyAKKy0tLS0tLS0tLQorICAgICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2FyciAt PiAtMSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG5lZ2F0aXZlOiBsYXN0IGVsZW1l bnQgaXMgb2JqZWN0LCB3cm9uZyB0eXBlIHdvdWxkIGVycm9yOyB1c2UgLTQgZm9yIG51bGwKK0VS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgaW50ZWdlcgor U0VMRUNUICh0ZXN0X2FyciAtPiAtNCk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0t IG5lZ2F0aXZlIGluZGV4IHBvaW50aW5nIHRvIG51bGwgZWxlbWVudAorIG51bWVyaWMgCistLS0t LS0tLS0KKyAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAoJ3siayI6MX0nOjpqc29uYiAtPiAw KTo6aW50NDsgIC0tIG5vbi1hcnJheSBpbnB1dAorIGludDQgCistLS0tLS0KKyAgICAgCisoMSBy b3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBvdXQgb2YgcmFuZ2UsIGludDIKKyBpbnQyIAorLS0tLS0tCisgICAgIAorKDEgcm93KQor CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDMpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0t IEpTT04gbnVsbCBlbGVtZW50LCBmbG9hdDQKKyBmbG9hdDQgCistLS0tLS0tLQorICAgICAgIAor KDEgcm93KQorCistLSBTZWN0aW9uIEEzYjogTlVMTCB0aHJvdWdoIHN1YnNjcmlwdGluZworU0VM RUNUICh0ZXN0X2Fycls5OV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBv ZiByYW5nZQorIHRlc3RfYXJyIAorLS0tLS0tLS0tLQorICAgICAgICAgCisoMSByb3cpCisKK1NF TEVDVCAodGVzdF9hcnJbM10pOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBKU09OIG51 bGwgZWxlbWVudAorIHRlc3RfYXJyIAorLS0tLS0tLS0tLQorICAgICAgICAgCisoMSByb3cpCisK Ky0tIFNlY3Rpb24gQTQ6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1QgKHRlc3RfYXJyIC0+ IDQpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBzdHJpbmcgdG8gaW50NAorRVJST1I6 ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCitTRUxFQ1QgKHRlc3Rf YXJyIC0+IDQpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9h dDgKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgZG91YmxlIHByZWNp c2lvbgorU0VMRUNUICh0ZXN0X2FyciAtPiA1KTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJy OyAgLS0gYXJyYXkgY29udGFpbmVyIHRvIG51bWVyaWMKK0VSUk9SOiAgY2Fubm90IGNhc3QganNv bmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgbnVtZXJpYworU0VMRUNUICh0ZXN0X2FyciAtPiA2 KTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gb2JqZWN0IGNvbnRhaW5lciB0byBpbnQ4 CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIGJpZ2lu dAorU0VMRUNUICh0ZXN0X2FyciAtPiAyKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0g Ym9vbCB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGJvb2xlYW4gdG8gdHlwZSBp bnRlZ2VyCitTRUxFQ1QgKHRlc3RfYXJyIC0+IDQpOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBzdHJpbmcgdG8gaW50MgorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8g dHlwZSBzbWFsbGludAorU0VMRUNUICh0ZXN0X2FyciAtPiA0KTo6ZmxvYXQ0IEZST00gdGVzdF9q c29uYl9hcnI7ICAtLSBzdHJpbmcgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIHJlYWwKKy0tIFNlY3Rpb24gQTRiOiBlcnJvciB0aHJvdWdoIHN1YnNj cmlwdGluZworU0VMRUNUICh0ZXN0X2Fycls0XSk6OmludDggRlJPTSB0ZXN0X2pzb25iX2Fycjsg IC0tIHN0cmluZyB0byBpbnQ4CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0 eXBlIGJpZ2ludAorLS0gU2VjdGlvbiBBNTogZGlyZWN0IGNhbGxzIHRvIGFycmF5LWVsZW1lbnQg dHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0 KCdbMTAsIDIwLCAzMF0nOjpqc29uYiwgMCk7CisganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgMTAKKygx IHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCgnWzEwLCAyMCwgMzBdJzo6 anNvbmIsIDEpOworIGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIDIwCisoMSByb3cpCisKK1NFTEVDVCBq c29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCgnWzEuNSwgMi41XSc6Ompzb25iLCAwKTsKKyBqc29u Yl9hcnJheV9lbGVtZW50X2Zsb2F0OCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgIDEuNQorKDEgcm93KQorCitTRUxFQ1QganNvbmJfYXJyYXlf ZWxlbWVudF9udW1lcmljKCdbMy4xNF0nOjpqc29uYiwgMCk7CisganNvbmJfYXJyYXlfZWxlbWVu dF9udW1lcmljIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfYm9v bCgnW3RydWUsIGZhbHNlXSc6Ompzb25iLCAxKTsKKyBqc29uYl9hcnJheV9lbGVtZW50X2Jvb2wg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gZGlyZWN0IGNh bGxzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWzEs IDJdJzo6anNvbmIsIDUpOyAgLS0gb3V0IG9mIHJhbmdlCisganNvbmJfYXJyYXlfZWxlbWVudF9p bnQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWzEsIG51bGws IDNdJzo6anNvbmIsIDEpOyAgLS0gSlNPTiBudWxsCisganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ4KCd7ImEiOjF9Jzo6 anNvbmIsIDApOyAgLS0gbm9uLWFycmF5CisganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworLS0gZGlyZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNU IGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWyJ0ZXh0Il0nOjpqc29uYiwgMCk7CitFUlJPUjog IGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCBqc29uYl9h cnJheV9lbGVtZW50X2ludDgoJ1t0cnVlXSc6Ompzb25iLCAwKTsKK0VSUk9SOiAgY2Fubm90IGNh c3QganNvbmIgYm9vbGVhbiB0byB0eXBlIGJpZ2ludAorU0VMRUNUIGpzb25iX2FycmF5X2VsZW1l bnRfZmxvYXQ4KCdbWzEsMl1dJzo6anNvbmIsIDApOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0OAor RVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBkb3VibGUg cHJlY2lzaW9uCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKCdbMTAsIDIwXSc6Ompz b25iLCAwKTsKKyBqc29uYl9hcnJheV9lbGVtZW50X2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAxMAorKDEgcm93KQorCitTRUxFQ1QganNv bmJfYXJyYXlfZWxlbWVudF9mbG9hdDQoJ1szLjE0LCAyLjVdJzo6anNvbmIsIDEpOworIGpzb25i X2FycmF5X2VsZW1lbnRfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgMi41CisoMSByb3cpCisKIFNFTEVDVCB0ZXN0X2pzb24gLT4g J3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsKICA/Y29sdW1u PyAKIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAppbmRleCA2MWM1NjcxMTBmYy4uNjlj MjE3NzZmODQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKQEAgLTI3Myw2ICsyNzMsOTEgQEAgU0VM RUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ0KCd7ImEiOiA5OTk5OTk5OTk5fSc6Ompzb25iLCAn YScpOwogLS0gZGlyZWN0IGNhbGxzOiBpbnQyIG92ZXJmbG93CiBTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOwogCistLSBPcHRpbWl6ZWQg dHlwZWQgZXh0cmFjdGlvbjogYXJyYXktZWxlbWVudCBmYW1pbHkKKy0tIFRoZSBwbGFubmVyIHJl d3JpdGVzIChqLT5pZHgpOjp0eXBlIGFuZCAoaltpZHhdKTo6dHlwZSBpbnRvIGRpcmVjdAorLS0g dHlwZWQgZXh0cmFjdG9yIGNhbGxzIGZvciB0aGUgc2FtZSB0YXJnZXQgdHlwZXMgYXMgdGhlIG9i amVjdC1maWVsZCBmYW1pbHkuCisKKy0tIENyZWF0ZSBhIHNtYWxsIGZpeHR1cmUgd2l0aCB0eXBl ZCBhcnJheSBlbGVtZW50cyBmb3IgdGVzdGluZworQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9qc29u Yl9hcnIgKHRlc3RfYXJyIGpzb25iKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfYXJyIFZBTFVF UyAoJ1sxMCwgMi41LCB0cnVlLCBudWxsLCAiaGVsbG8iLCBbMSwyXSwgeyJrIjoxfV0nKTsKKwor LS0gU2VjdGlvbiBBMTogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoYXJyYXkgZWxlbWVu dCwgb3BlcmF0b3IgZm9ybSkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2FyciAtPiAwKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ0IEZST00gdGVzdF9q c29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIg LT4gMSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjpib29sIEZST00gdGVzdF9qc29uYl9hcnI7 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6Omlu dDggRlJPTSB0ZXN0X2pzb25iX2FycjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9hdDQgRlJPTSB0 ZXN0X2pzb25iX2FycjsKKworLS0gU2VjdGlvbiBBMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmlj YXRpb24gKGFycmF5IHN1YnNjcmlwdGluZyBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzBdKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJyOwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzBdKTo6aW50NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfYXJyWzFdKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMl0pOjpib29sIEZST00gdGVzdF9qc29u Yl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMF0p OjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7CisKKy0tIFNl Y3Rpb24gQTFjOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3QgZnVuY3Rpb24g Y2FsbCBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX2Fy cmF5X2VsZW1lbnQodGVzdF9hcnIsIDApKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOworCist LSBTZWN0aW9uIEEyOiBjb3JyZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdHRlbiBwYXRoCitT RUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7CitTRUxFQ1Qg KHRlc3RfYXJyIC0+IDApOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7CitTRUxFQ1QgKHRlc3Rf YXJyIC0+IDApOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9hcnI7CitTRUxFQ1QgKHRlc3RfYXJy IC0+IDEpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsKK1NFTEVDVCAodGVzdF9hcnIgLT4g Mik6OmJvb2wgRlJPTSB0ZXN0X2pzb25iX2FycjsKK1NFTEVDVCAodGVzdF9hcnIgLT4gMCk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iX2FycjsKK1NFTEVDVCAodGVzdF9hcnIgLT4gMSk6OmZsb2F0NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworCistLSBTZWN0aW9uIEEyYjogY29ycmVjdCBleGVjdXRpb24g dGhyb3VnaCBzdWJzY3JpcHRpbmcKK1NFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ0IEZST00gdGVz dF9qc29uYl9hcnI7CitTRUxFQ1QgKHRlc3RfYXJyWzFdKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29u Yl9hcnI7CitTRUxFQ1QgKHRlc3RfYXJyWzJdKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOwor CistLSBTZWN0aW9uIEEzOiBOVUxMIHNlbWFudGljcworU0VMRUNUICh0ZXN0X2FyciAtPiA5OSk6 OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZQorU0VMRUNUICh0ZXN0 X2FyciAtPiAzKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gSlNPTiBudWxsIGVs ZW1lbnQKK1NFTEVDVCAodGVzdF9hcnIgLT4gLTEpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBuZWdhdGl2ZTogbGFzdCBlbGVtZW50IGlzIG9iamVjdCwgd3JvbmcgdHlwZSB3b3VsZCBl cnJvcjsgdXNlIC00IGZvciBudWxsCitTRUxFQ1QgKHRlc3RfYXJyIC0+IC00KTo6bnVtZXJpYyBG Uk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gbmVnYXRpdmUgaW5kZXggcG9pbnRpbmcgdG8gbnVsbCBl bGVtZW50CitTRUxFQ1QgKCd7ImsiOjF9Jzo6anNvbmIgLT4gMCk6OmludDQ7ICAtLSBub24tYXJy YXkgaW5wdXQKK1NFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZST00gdGVzdF9qc29uYl9h cnI7ICAtLSBvdXQgb2YgcmFuZ2UsIGludDIKK1NFTEVDVCAodGVzdF9hcnIgLT4gMyk6OmZsb2F0 NCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gSlNPTiBudWxsIGVsZW1lbnQsIGZsb2F0NAorCist LSBTZWN0aW9uIEEzYjogTlVMTCB0aHJvdWdoIHN1YnNjcmlwdGluZworU0VMRUNUICh0ZXN0X2Fy cls5OV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZQorU0VM RUNUICh0ZXN0X2FyclszXSk6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIEpTT04gbnVs bCBlbGVtZW50CisKKy0tIFNlY3Rpb24gQTQ6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1Qg KHRlc3RfYXJyIC0+IDQpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBzdHJpbmcgdG8g aW50NAorU0VMRUNUICh0ZXN0X2FyciAtPiA0KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBzdHJpbmcgdG8gZmxvYXQ4CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDUpOjpudW1lcmljIEZS T00gdGVzdF9qc29uYl9hcnI7ICAtLSBhcnJheSBjb250YWluZXIgdG8gbnVtZXJpYworU0VMRUNU ICh0ZXN0X2FyciAtPiA2KTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gb2JqZWN0IGNv bnRhaW5lciB0byBpbnQ4CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjppbnQ0IEZST00gdGVzdF9q c29uYl9hcnI7ICAtLSBib29sIHRvIGludDQKK1NFTEVDVCAodGVzdF9hcnIgLT4gNCk6OmludDIg RlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBpbnQyCitTRUxFQ1QgKHRlc3RfYXJy IC0+IDQpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9hdDQK KworLS0gU2VjdGlvbiBBNGI6IGVycm9yIHRocm91Z2ggc3Vic2NyaXB0aW5nCitTRUxFQ1QgKHRl c3RfYXJyWzRdKTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gc3RyaW5nIHRvIGludDgK KworLS0gU2VjdGlvbiBBNTogZGlyZWN0IGNhbGxzIHRvIGFycmF5LWVsZW1lbnQgdHlwZWQgZXh0 cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0KCdbMTAsIDIw LCAzMF0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4KCdbMTAs IDIwLCAzMF0nOjpqc29uYiwgMSk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDgo J1sxLjUsIDIuNV0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9udW1l cmljKCdbMy4xNF0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9ib29s KCdbdHJ1ZSwgZmFsc2VdJzo6anNvbmIsIDEpOworLS0gZGlyZWN0IGNhbGxzOiBOVUxMIHNlbWFu dGljcworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWzEsIDJdJzo6anNvbmIsIDUp OyAgLS0gb3V0IG9mIHJhbmdlCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0KCdbMSwg bnVsbCwgM10nOjpqc29uYiwgMSk7ICAtLSBKU09OIG51bGwKK1NFTEVDVCBqc29uYl9hcnJheV9l bGVtZW50X2Zsb2F0OCgneyJhIjoxfSc6Ompzb25iLCAwKTsgIC0tIG5vbi1hcnJheQorLS0gZGly ZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1l bnRfaW50NCgnWyJ0ZXh0Il0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVu dF9pbnQ4KCdbdHJ1ZV0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9m bG9hdDgoJ1tbMSwyXV0nOjpqc29uYiwgMCk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ4CitTRUxF Q1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKCdbMTAsIDIwXSc6Ompzb25iLCAwKTsKK1NFTEVD VCBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0NCgnWzMuMTQsIDIuNV0nOjpqc29uYiwgMSk7CisK KwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci0tIAoyLjUyLjAKCg== --0000000000008cd82706507710bc Content-Type: application/octet-stream; name="v6-0003-jsonb-optimize-extract-path-casts-to-scalar-types.patch" Content-Disposition: attachment; filename="v6-0003-jsonb-optimize-extract-path-casts-to-scalar-types.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mohnprh02 RnJvbSAwNGU3MzhiNDZhZGRhNGY5ZWRiOTQ4Y2Y1NzI5MDkxZjg1YWM5ODMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IEZyaSwgMTAgQXByIDIwMjYgMTI6MDg6MjUgLTA3MDAKU3ViamVjdDogW1BBVENIIHY2IDMvNV0g anNvbmI6IG9wdGltaXplIGV4dHJhY3QtcGF0aCBjYXN0cyB0byBzY2FsYXIgdHlwZXMKCkV4dGVu ZCB0aGUgZXhpc3Rpbmcgc3VwcG9ydC1mdW5jdGlvbiByZXdyaXRlIHRvIGpzb25iIGV4dHJhY3Qt cGF0aApvcGVyYXRpb25zLCBpbmNsdWRpbmcgYm90aCAjPiBhbmQgZGlyZWN0IGpzb25iX2V4dHJh Y3RfcGF0aCguLi4pCmNhbGxzLgoKU3VwcG9ydGVkIGNhc3RzIGFyZSByZXdyaXR0ZW4gZGlyZWN0 bHkgdG8gZXhwbGljaXQgdHlwZWQgZXh0cmFjdG9yCmZ1bmN0aW9ucyBmb3IgbnVtZXJpYywgYm9v bCwgaW50MiwgaW50NCwgaW50OCwgZmxvYXQ0LCBhbmQgZmxvYXQ4LgotLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jICAgICAgIHwgIDQzICsrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25mdW5jcy5jICAgfCAxODggKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgIHwgIDMxICsrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmIub3V0IHwgMjI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAgIHwgIDYxICsrKysrKysrCiA1IGZpbGVz IGNoYW5nZWQsIDU0NiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25iLmMKaW5kZXggNWFiYjUxZDQ3ZGEuLjdlYmE0MzdiOGE0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIu YwpAQCAtMTgzNCw2ICsxODM0LDcgQEAgY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBl IHR5cGUsIGNvbnN0IGNoYXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKICAqIFN1cHBvcnRl ZCBleHRyYWN0aW9uIGZhbWlsaWVzOgogICogICAtIGpzb25iX29iamVjdF9maWVsZChqLCAna2V5 JykgIC8gIGogLT4gJ2tleScgIC8gIGpbJ2tleSddCiAgKiAgIC0ganNvbmJfYXJyYXlfZWxlbWVu dChqLCBpZHgpICAgLyAgaiAtPiBpZHggICAgLyAgaltpZHhdCisgKiAgIC0ganNvbmJfZXh0cmFj dF9wYXRoKGosIC4uLikgICAgLyAgaiAjPiAne2EsYn0nCiAgKi8KIERhdHVtCiBqc29uYl9jYXN0 X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKQEAgLTIwMTAsNiArMjAxMSw0NiBAQCBqc29uYl9j YXN0X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWVsc2UKIAkJCQlQR19SRVRVUk5fUE9J TlRFUihOVUxMKTsKIAkJfQorCQllbHNlIGlmIChpbm5lcl9mdW5jaWQgPT0gRl9KU09OQl9FWFRS QUNUX1BBVEgpCisJCXsKKwkJCWlmIChmZXhwci0+ZnVuY2lkID09IEZfTlVNRVJJQ19KU09OQikK KwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX0VYVFJBQ1RfUEFUSF9OVU1F UklDOworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBOVU1FUklDT0lEOworCQkJfQorCQkJZWxz ZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0JPT0xfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1l bnRfZnVuY2lkID0gRl9KU09OQl9FWFRSQUNUX1BBVEhfQk9PTDsKKwkJCQlyZXBsYWNlbWVudF9y ZXR0eXBlID0gQk9PTE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9J TlQ0X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFD VF9QQVRIX0lOVDQ7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDRPSUQ7CisJCQl9CisJ CQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5UOF9KU09OQikKKwkJCXsKKwkJCQlyZXBs YWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX0VYVFJBQ1RfUEFUSF9JTlQ4OworCQkJCXJlcGxhY2Vt ZW50X3JldHR5cGUgPSBJTlQ4T0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9 PSBGX0ZMT0FUOF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X0VYVFJBQ1RfUEFUSF9GTE9BVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUOE9J RDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQyX0pTT05CKQorCQkJ eworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFDVF9QQVRIX0lOVDI7CisJ CQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhw ci0+ZnVuY2lkID09IEZfRkxPQVQ0X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNp ZCA9IEZfSlNPTkJfRVhUUkFDVF9QQVRIX0ZMT0FUNDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBl ID0gRkxPQVQ0T0lEOworCQkJfQorCQkJZWxzZQorCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwp OworCQl9CiAJCWVsc2UKIAkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCkBAIC0yMjQxLDQg KzIyODIsNCBAQCBKc29uYlVucXVvdGUoSnNvbmIgKmpiKQogCX0KIAllbHNlCiAJCXJldHVybiBK c29uYlRvQ1N0cmluZyhOVUxMLCAmamItPnJvb3QsIFZBUlNJWkUoamIpKTsKLX0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggY2M5 YzUxYzVjYmYuLmIzZmQxZGZiNjMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC0x MDYwLDcgKzEwNjAsNiBAQCBqc29uYl92YWx1ZV90b19mbG9hdDhfZGF0dW0oSnNvbmJWYWx1ZSAq dikKIAogCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfZmxvYXQ4LCBOdW1lcmlj R2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKIH0KLQogc3RhdGljIERhdHVtCiBqc29uYl92YWx1 ZV90b19pbnQyX2RhdHVtKEpzb25iVmFsdWUgKnYpCiB7CkBAIC0xMTgxLDYgKzExODAsMTkxIEBA IERFRklORV9KU09OQl9BUlJBWV9FTEVNRU5UX1RZUEVEKGpzb25iX2FycmF5X2VsZW1lbnRfZmxv YXQ4LCBqc29uYl92YWx1ZV90b19mbG9hCiBERUZJTkVfSlNPTkJfQVJSQVlfRUxFTUVOVF9UWVBF RChqc29uYl9hcnJheV9lbGVtZW50X2ludDIsIGpzb25iX3ZhbHVlX3RvX2ludDJfZGF0dW0pCiBE RUZJTkVfSlNPTkJfQVJSQVlfRUxFTUVOVF9UWVBFRChqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0 NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2RhdHVtKQogCisvKgorICogV2FsayBhIHRleHRbXSBw YXRoIHRocm91Z2ggYSBqc29uYiB2YWx1ZSBhbmQgcmV0dXJuIHRoZSBsZWFmIEpzb25iVmFsdWUs CisgKiBvciBOVUxMLiAgUmV0dXJucyBOVUxMIHdoZW4gYSBwYXRoIGVsZW1lbnQgaXMgbWlzc2lu ZywgdGhlIGxlYWYgaXMgSlNPTgorICogbnVsbCwgb3IgdGhlIHBhdGggYXJyYXkgY29udGFpbnMg bnVsbCBlbGVtZW50cy4KKyAqCisgKiBGb3IgYW4gZW1wdHkgcGF0aCwgcmV0dXJucyB0aGUgcm9v dCB2YWx1ZSBpdHNlbGYgKGFzIGEgamJ2QmluYXJ5IGZvcgorICogY29udGFpbmVycywgb3IgdGhl IHVud3JhcHBlZCBzY2FsYXIgZm9yIHNjYWxhciBqc29uYikuICBUaGUgY2FsbGVyJ3MKKyAqIGNv bnZlcnNpb24gaGVscGVyIHRoZW4gZGVjaWRlcyB3aGV0aGVyIHRvIGFjY2VwdCBvciByZWplY3Qg dGhlIHR5cGUuCisgKgorICogRm9yIGFycmF5cywgcGF0aCBlbGVtZW50cyBhcmUgcGFyc2VkIGFz IGludGVnZXJzIChtYXRjaGluZyB0aGUgZXhpc3RpbmcKKyAqIGpzb25iX2V4dHJhY3RfcGF0aCAv IGpzb25iX2dldF9lbGVtZW50IHRyYXZlcnNhbCBzZW1hbnRpY3MpLgorICovCitzdGF0aWMgSnNv bmJWYWx1ZSAqCitqc29uYl9leHRyYWN0X3BhdGhfbG9va3VwKEpzb25iICpqYiwgQXJyYXlUeXBl ICpwYXRoLCBKc29uYlZhbHVlICp2YnVmKQoreworCURhdHVtCSAgICpwYXRodGV4dDsKKwlpbnQJ CQlucGF0aDsKKwlKc29uYkNvbnRhaW5lciAqY29udGFpbmVyID0gJmpiLT5yb290OworCUpzb25i VmFsdWUgKmpidnAgPSBOVUxMOworCWJvb2wJCWhhdmVfb2JqZWN0LAorCQkJCWhhdmVfYXJyYXk7 CisJaW50CQkJaTsKKworCS8qIElmIHRoZSBwYXRoIGFycmF5IGNvbnRhaW5zIGFueSBudWxscywg cmV0dXJuIE5VTEwgKi8KKwlpZiAoYXJyYXlfY29udGFpbnNfbnVsbHMocGF0aCkpCisJCXJldHVy biBOVUxMOworCisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihwYXRoLCBURVhUT0lELCAmcGF0 aHRleHQsIE5VTEwsICZucGF0aCk7CisKKwkvKiBJZGVudGlmeSB0b3AtbGV2ZWwgY29udGFpbmVy IHR5cGUgKi8KKwlpZiAoSkJfUk9PVF9JU19PQkpFQ1QoamIpKQorCXsKKwkJaGF2ZV9vYmplY3Qg PSB0cnVlOworCQloYXZlX2FycmF5ID0gZmFsc2U7CisJfQorCWVsc2UgaWYgKEpCX1JPT1RfSVNf QVJSQVkoamIpICYmICFKQl9ST09UX0lTX1NDQUxBUihqYikpCisJeworCQloYXZlX29iamVjdCA9 IGZhbHNlOworCQloYXZlX2FycmF5ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KEpC X1JPT1RfSVNfQVJSQVkoamIpICYmIEpCX1JPT1RfSVNfU0NBTEFSKGpiKSk7CisKKwkJLyogRm9y IGEgc2NhbGFyIHJvb3Qgd2l0aCBhbiBlbXB0eSBwYXRoLCByZXR1cm4gdGhlIHNjYWxhciBpdHNl bGYgKi8KKwkJaWYgKG5wYXRoIDw9IDApCisJCXsKKwkJCWpidnAgPSBnZXRJdGhKc29uYlZhbHVl RnJvbUNvbnRhaW5lcihjb250YWluZXIsIDApOworCQkJaWYgKGpidnAgPT0gTlVMTCB8fCBqYnZw LT50eXBlID09IGpidk51bGwpCisJCQkJcmV0dXJuIE5VTEw7CisJCQlyZXR1cm4gamJ2cDsKKwkJ fQorCisJCS8qIE5vbi1lbXB0eSBwYXRoIGludG8gYSBzY2FsYXIgeWllbGRzIE5VTEwgKi8KKwkJ cmV0dXJuIE5VTEw7CisJfQorCisJLyoKKwkgKiBGb3IgYW4gZW1wdHkgcGF0aCBvbiBhIGNvbnRh aW5lciByb290LCByZXR1cm4gdGhlIGNvbnRhaW5lciBhcyBhCisJICogamJ2QmluYXJ5IHZhbHVl LiAgVGhlIGNvbnZlcnNpb24gaGVscGVyIHdpbGwgcmVqZWN0IGl0IHdpdGggdGhlCisJICogdXN1 YWwgImNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCIgZXJyb3IuCisJICovCisJaWYg KG5wYXRoIDw9IDApCisJeworCQl2YnVmLT50eXBlID0gamJ2QmluYXJ5OworCQl2YnVmLT52YWwu YmluYXJ5LmRhdGEgPSBjb250YWluZXI7CisJCXZidWYtPnZhbC5iaW5hcnkubGVuID0gVkFSU0la RShqYikgLSBWQVJIRFJTWjsKKwkJcmV0dXJuIHZidWY7CisJfQorCisJZm9yIChpID0gMDsgaSA8 IG5wYXRoOyBpKyspCisJeworCQlpZiAoaGF2ZV9vYmplY3QpCisJCXsKKwkJCXRleHQJICAgKnN1 YnNjciA9IERhdHVtR2V0VGV4dFBQKHBhdGh0ZXh0W2ldKTsKKworCQkJamJ2cCA9IGdldEtleUpz b25WYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVyLAorCQkJCQkJCQkJCQkJVkFSREFUQV9BTlko c3Vic2NyKSwKKwkJCQkJCQkJCQkJCVZBUlNJWkVfQU5ZX0VYSERSKHN1YnNjciksCisJCQkJCQkJ CQkJCQlOVUxMKTsKKwkJfQorCQllbHNlIGlmIChoYXZlX2FycmF5KQorCQl7CisJCQlpbnQJCQls aW5kZXg7CisJCQl1aW50MzIJCWluZGV4OworCQkJY2hhcgkgICAqaW5kZXh0ZXh0ID0gVGV4dERh dHVtR2V0Q1N0cmluZyhwYXRodGV4dFtpXSk7CisJCQljaGFyCSAgICplbmRwdHI7CisKKwkJCWVy cm5vID0gMDsKKwkJCWxpbmRleCA9IHN0cnRvaW50KGluZGV4dGV4dCwgJmVuZHB0ciwgMTApOwor CQkJaWYgKGVuZHB0ciA9PSBpbmRleHRleHQgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9 IDApCisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCWlmIChsaW5kZXggPj0gMCkKKwkJCXsKKwkJCQlp bmRleCA9ICh1aW50MzIpIGxpbmRleDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQl1aW50MzIJ CW5lbGVtZW50czsKKworCQkJCWlmICghSnNvbkNvbnRhaW5lcklzQXJyYXkoY29udGFpbmVyKSkK KwkJCQkJZWxvZyhFUlJPUiwgIm5vdCBhIGpzb25iIGFycmF5Iik7CisKKwkJCQluZWxlbWVudHMg PSBKc29uQ29udGFpbmVyU2l6ZShjb250YWluZXIpOworCisJCQkJaWYgKGxpbmRleCA9PSBJTlRf TUlOIHx8IC1saW5kZXggPiBuZWxlbWVudHMpCisJCQkJCXJldHVybiBOVUxMOworCQkJCWVsc2UK KwkJCQkJaW5kZXggPSBuZWxlbWVudHMgKyBsaW5kZXg7CisJCQl9CisKKwkJCWpidnAgPSBnZXRJ dGhKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIsIGluZGV4KTsKKwkJfQorCQllbHNl CisJCXsKKwkJCS8qIHNjYWxhcjogY2Fubm90IHRyYXZlcnNlIGZ1cnRoZXIgKi8KKwkJCXJldHVy biBOVUxMOworCQl9CisKKwkJaWYgKGpidnAgPT0gTlVMTCkKKwkJCXJldHVybiBOVUxMOworCisJ CS8qIElmIHRoaXMgaXMgdGhlIGxhc3QgcGF0aCBlbGVtZW50LCB3ZSBoYXZlIG91ciBsZWFmICov CisJCWlmIChpID09IG5wYXRoIC0gMSkKKwkJCWJyZWFrOworCisJCS8qIERlc2NlbmQgaW50byB0 aGUgbmV4dCBjb250YWluZXIgbGV2ZWwgKi8KKwkJaWYgKGpidnAtPnR5cGUgPT0gamJ2QmluYXJ5 KQorCQl7CisJCQljb250YWluZXIgPSBqYnZwLT52YWwuYmluYXJ5LmRhdGE7CisJCQloYXZlX29i amVjdCA9IEpzb25Db250YWluZXJJc09iamVjdChjb250YWluZXIpOworCQkJaGF2ZV9hcnJheSA9 IEpzb25Db250YWluZXJJc0FycmF5KGNvbnRhaW5lcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KiBzY2FsYXIgYXQgaW50ZXJtZWRpYXRlIHN0ZXA6IG5vIGZ1cnRoZXIgdHJhdmVyc2FsICovCisJ CQloYXZlX29iamVjdCA9IGZhbHNlOworCQkJaGF2ZV9hcnJheSA9IGZhbHNlOworCQl9CisJfQor CisJLyogTWlzc2luZyB2YWx1ZSBvciBKU09OIG51bGwgYm90aCBtYXAgdG8gU1FMIE5VTEwgKi8K KwlpZiAoamJ2cCA9PSBOVUxMIHx8IGpidnAtPnR5cGUgPT0gamJ2TnVsbCkKKwkJcmV0dXJuIE5V TEw7CisKKwlyZXR1cm4gamJ2cDsKK30KKworLyoKKyAqIFRoaW4td3JhcHBlciBtYWNybyBmb3Ig dGhlIGpzb25iX2V4dHJhY3RfcGF0aF88dHlwZT4gZXh0cmFjdG9yIGZhbWlseS4KKyAqIFNhbWUg cGF0dGVybiBhcyB0aGUgb2JqZWN0LWZpZWxkIGFuZCBhcnJheS1lbGVtZW50IHdyYXBwZXIgbWFj cm9zLgorICovCisjZGVmaW5lIERFRklORV9KU09OQl9FWFRSQUNUX1BBVEhfVFlQRUQoZm5hbWUs IGNvbnZmbikgXAorRGF0dW0gXAorZm5hbWUoUEdfRlVOQ1RJT05fQVJHUykgXAoreyBcCisJSnNv bmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMCk7IFwKKwlBcnJheVR5cGUgICpwYXRoID0g UEdfR0VUQVJHX0FSUkFZVFlQRV9QKDEpOyBcCisJSnNvbmJWYWx1ZQl2YnVmOyBcCisJSnNvbmJW YWx1ZSAqdjsgXAorCURhdHVtCQlyZXN1bHQ7IFwKK1wKKwl2ID0ganNvbmJfZXh0cmFjdF9wYXRo X2xvb2t1cChqYiwgcGF0aCwgJnZidWYpOyBcCisJaWYgKHYgPT0gTlVMTCkgXAorCXsgXAorCQlQ R19GUkVFX0lGX0NPUFkocGF0aCwgMSk7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAor CQlQR19SRVRVUk5fTlVMTCgpOyBcCisJfSBcCitcCisJcmVzdWx0ID0gY29udmZuKHYpOyBcCisJ UEdfRlJFRV9JRl9DT1BZKHBhdGgsIDEpOyBcCisJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAor CXJldHVybiByZXN1bHQ7IFwKK30KKworREVGSU5FX0pTT05CX0VYVFJBQ1RfUEFUSF9UWVBFRChq c29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYywganNvbmJfdmFsdWVfdG9fbnVtZXJpY19kYXR1bSkK K0RFRklORV9KU09OQl9FWFRSQUNUX1BBVEhfVFlQRUQoanNvbmJfZXh0cmFjdF9wYXRoX2Jvb2ws IGpzb25iX3ZhbHVlX3RvX2Jvb2xfZGF0dW0pCitERUZJTkVfSlNPTkJfRVhUUkFDVF9QQVRIX1RZ UEVEKGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0LCBqc29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQor REVGSU5FX0pTT05CX0VYVFJBQ1RfUEFUSF9UWVBFRChqc29uYl9leHRyYWN0X3BhdGhfaW50OCwg anNvbmJfdmFsdWVfdG9faW50OF9kYXR1bSkKK0RFRklORV9KU09OQl9FWFRSQUNUX1BBVEhfVFlQ RUQoanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0OCwganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVt KQorREVGSU5FX0pTT05CX0VYVFJBQ1RfUEFUSF9UWVBFRChqc29uYl9leHRyYWN0X3BhdGhfaW50 MiwganNvbmJfdmFsdWVfdG9faW50Ml9kYXR1bSkKK0RFRklORV9KU09OQl9FWFRSQUNUX1BBVEhf VFlQRUQoanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2Rh dHVtKQorCiBEYXR1bQoganNvbl9hcnJheV9lbGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBA IC02NDI3LDQgKzY2MTEsNCBAQCBqc29uX2NoZWNrX211dGFiaWxpdHkoT2lkIHR5cG9pZCwgYm9v bCBpc19qc29uYiwgYm9vbCAqaGFzX211dGFibGUpCiAJCQkJKmhhc19tdXRhYmxlID0gdHJ1ZTsK IAkJCWJyZWFrOwogCX0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCBhZDc1MmEwYTllMC4uZDhhYzljYmYwNTMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTI4MjcsNiArMTI4MjcsMjYgQEAKICAgcHJvbmFtZSA9PiAnanNv bmJfYXJyYXlfZWxlbWVudF9mbG9hdDgnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLAogICBwcm9h cmd0eXBlcyA9PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVsZW1l bnRfaW5kZXh9JywKICAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCcgfSwK K3sgb2lkID0+ICc5OTY1JywgZGVzY3IgPT4gJ2V4dHJhY3QgbnVtZXJpYyBmcm9tIGpzb25iIGJ5 IHBhdGgnLAorICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYycsIHByb3Jl dHR5cGUgPT4gJ251bWVyaWMnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9h cmduYW1lcyA9PiAne2Zyb21fanNvbixwYXRoX2VsZW1zfScsCisgIHByb3NyYyA9PiAnanNvbmJf ZXh0cmFjdF9wYXRoX251bWVyaWMnIH0sCit7IG9pZCA9PiAnOTk2NicsIGRlc2NyID0+ICdleHRy YWN0IGJvb2xlYW4gZnJvbSBqc29uYiBieSBwYXRoJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfZXh0 cmFjdF9wYXRoX2Jvb2wnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4g J2pzb25iIF90ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAor ICBwcm9zcmMgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aF9ib29sJyB9LAoreyBvaWQgPT4gJzk5Njcn LCBkZXNjciA9PiAnZXh0cmFjdCBpbnQ0IGZyb20ganNvbmIgYnkgcGF0aCcsCisgIHByb25hbWUg PT4gJ2pzb25iX2V4dHJhY3RfcGF0aF9pbnQ0JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCisgIHBy b2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLHBh dGhfZWxlbXN9JywKKyAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3BhdGhfaW50NCcgfSwKK3sg b2lkID0+ICc5OTY4JywgZGVzY3IgPT4gJ2V4dHJhY3QgaW50OCBmcm9tIGpzb25iIGJ5IHBhdGgn LAorICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfaW50OCcsIHByb3JldHR5cGUgPT4g J2ludDgnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9hcmduYW1lcyA9PiAn e2Zyb21fanNvbixwYXRoX2VsZW1zfScsCisgIHByb3NyYyA9PiAnanNvbmJfZXh0cmFjdF9wYXRo X2ludDgnIH0sCit7IG9pZCA9PiAnOTk2OScsIGRlc2NyID0+ICdleHRyYWN0IGZsb2F0OCBmcm9t IGpzb25iIGJ5IHBhdGgnLAorICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ4 JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ4JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIF90ZXh0 JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAorICBwcm9zcmMgPT4g J2pzb25iX2V4dHJhY3RfcGF0aF9mbG9hdDgnIH0sCiB7IG9pZCA9PiAnOTk4MicsIGRlc2NyID0+ ICdleHRyYWN0IGludDIgZnJvbSBqc29uYiBhcnJheSBieSBlbGVtZW50IGluZGV4JywKICAgcHJv bmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9pbnQyJywgcHJvcmV0dHlwZSA9PiAnaW50Mics CiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBpbnQ0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pz b24sZWxlbWVudF9pbmRleH0nLApAQCAtMTI4MzYsNCArMTI4NTYsMTMgQEAKICAgcHJvYXJndHlw ZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixlbGVtZW50X2lu ZGV4fScsCiAgIHByb3NyYyA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQnIH0sCiAKLV0K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit7IG9pZCA9PiAnOTk4NCcsIGRlc2NyID0+ICdl eHRyYWN0IGludDIgZnJvbSBqc29uYiBieSBwYXRoJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfZXh0 cmFjdF9wYXRoX2ludDInLCBwcm9yZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMgPT4g J2pzb25iIF90ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAor ICBwcm9zcmMgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aF9pbnQyJyB9LAoreyBvaWQgPT4gJzk5ODUn LCBkZXNjciA9PiAnZXh0cmFjdCBmbG9hdDQgZnJvbSBqc29uYiBieSBwYXRoJywKKyAgcHJvbmFt ZSA9PiAnanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcs CisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9q c29uLHBhdGhfZWxlbXN9JywKKyAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0 JyB9LAorCitdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IDM2YmM4MjA5NWJl Li5iOTZjMDk1NTI1YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTEyNDcs NiArMTI0NywyMzMgQEAgU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4xNCwg Mi41XSc6Ompzb25iLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIDIuNQogKDEgcm93KQog CistLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogZXh0cmFjdC1wYXRoIGZhbWlseQorLS0g VGhlIHBsYW5uZXIgcmV3cml0ZXMgKGogIz4gcGF0aCk6OnR5cGUgYW5kIChqc29uYl9leHRyYWN0 X3BhdGgoaiwgLi4uKSk6OnR5cGUKKy0tIGludG8gZGlyZWN0IHR5cGVkIGV4dHJhY3RvciBjYWxs cyBmb3IgdGhlIHNhbWUgdGFyZ2V0IHR5cGVzLgorLS0gU2VjdGlvbiBQMTogcGxhbm5lciByZXdy aXRlIHZlcmlmaWNhdGlvbiAob3BlcmF0b3IgZm9ybSAjPikKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6Om51bWVyaWMgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNv bmJfZXh0cmFjdF9wYXRoX251bWVyaWModGVzdF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCisg ICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93 cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAn e2ZpZWxkNH0nKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29u YgorICAgT3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfaW50NCh0ZXN0X2pzb24sICd7ZmllbGQ0 fSc6OnRleHRbXSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo dGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4g b24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9mbG9h dDgodGVzdF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25i Lmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNixmMX0nKTo6aW50OCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0 OiBqc29uYl9leHRyYWN0X3BhdGhfaW50OCh0ZXN0X2pzb24sICd7ZmllbGQ2LGYxfSc6OnRleHRb XSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCiso MyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29u ICM+ICd7ZmllbGQ3fScpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0 X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9ib29sKHRlc3RfanNvbiwgJ3tm aWVsZDd9Jzo6dGV4dFtdKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2Jq ZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBv biBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDIo dGVzdF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpz b25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6ZmxvYXQ0IEZST00g dGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29u Yl9leHRyYWN0X3BhdGhfZmxvYXQ0KHRlc3RfanNvbiwgJ3tmaWVsZDR9Jzo6dGV4dFtdKQorICAg RmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3Mp CisKKy0tIFNlY3Rpb24gUDFiOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3Qg ZnVuY3Rpb24tY2FsbCBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpzb25iX2V4dHJhY3RfcGF0aCh0ZXN0X2pzb24sICdmaWVsZDQnKSk6OmZsb2F0OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJf ZXh0cmFjdF9wYXRoX2Zsb2F0OCh0ZXN0X2pzb24sICd7ZmllbGQ0fSc6OnRleHRbXSkKKyAgIEZp bHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfZXh0cmFjdF9wYXRo KHRlc3RfanNvbiwgJ2ZpZWxkNicsICdmMScpKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhf aW50NCh0ZXN0X2pzb24sICd7ZmllbGQ2LGYxfSc6OnRleHRbXSkKKyAgIEZpbHRlcjogKHRlc3Rf anNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCistLSBTZWN0aW9u IFAxYzogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoVkFSSUFESUMgQVJSQVkgZm9ybSkK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9leHRyYWN0X3BhdGgo dGVzdF9qc29uLCBWQVJJQURJQyBBUlJBWVsnZmllbGQ2JywnZjEnXSkpOjppbnQ0IEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X2V4dHJhY3RfcGF0aF9pbnQ0KHRlc3RfanNvbiwgJ3tmaWVsZDYsZjF9Jzo6dGV4dFtdKQorICAg RmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3Mp CisKKy0tIFNlY3Rpb24gUDI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2ggcmV3cml0dGVuIHBh dGgKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQ0IEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQ0IAorLS0tLS0tCisgICAgNAorKDEg cm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6bnVtZXJpYyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgbnVtZXJpYyAKKy0tLS0tLS0t LQorICAgICAgIDQKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6 OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxv YXQ4IAorLS0tLS0tLS0KKyAgICAgIDQKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gIz4g J3tmaWVsZDYsZjF9Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOworIGludDQgCistLS0tLS0KKyAgICA5CisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9q c29uICM+ICd7ZmllbGQ2LGYxfScpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKKyBpbnQ4IAorLS0tLS0tCisgICAgOQorKDEgcm93KQorCitTRUxFQ1Qg KHRlc3RfanNvbiAjPiAne2ZpZWxkN30nKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisgYm9vbCAKKy0tLS0tLQorIHQKKygxIHJvdykKKworLS0gYXJy YXkgaW5kZXggaW4gcGF0aAorU0VMRUNUICgneyJhIjpbMTAsMjAsMzBdfSc6Ompzb25iICM+ICd7 YSwxfScpOjppbnQ0OworIGludDQgCistLS0tLS0KKyAgIDIwCisoMSByb3cpCisKKy0tIFNlY3Rp b24gUDM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne25vbmV4aXN0ZW50 fScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IG1pc3Npbmcga2V5CisgaW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICh0 ZXN0X2pzb24gIz4gJ3tmaWVsZDN9Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOyAgLS0gSlNPTiBudWxsIGxlYWYKKyBudW1lcmljIAorLS0tLS0t LS0tCisgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNixt aXNzaW5nfScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIG1pc3NpbmcgbmVzdGVkIGtleQorIGludDQgCistLS0tLS0KKyAgICAgCisoMSByb3cp CisKKy0tIG51bGwgaW4gcGF0aCBhcnJheQorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0 KCd7ImEiOjF9Jzo6anNvbmIsIEFSUkFZW05VTExdOjp0ZXh0W10pOworIGpzb25iX2V4dHJhY3Rf cGF0aF9pbnQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKKy0tIGVtcHR5IHBhdGggb24gY29udGFpbmVyIHJvb3QgcHJvZHVj ZXMgY2FzdCBlcnJvcgorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOjF9Jzo6 anNvbmIsICd7fSc6OnRleHRbXSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9y IG9iamVjdCB0byB0eXBlIGludGVnZXIKKy0tIFNlY3Rpb24gUDQ6IHR5cGUtbWlzbWF0Y2ggZXJy b3JzCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkMX0nKTo6aW50NCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gaW50NAorRVJST1I6 ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCitTRUxFQ1QgKHRlc3Rf anNvbiAjPiAne2ZpZWxkNX0nKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGZsb2F0OAorRVJST1I6ICBjYW5ub3QgY2FzdCBq c29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCitTRUxFQ1QgKHRl c3RfanNvbiAjPiAne2ZpZWxkNn0nKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBvYmplY3QgdG8gaW50OAorRVJST1I6ICBjYW5ub3QgY2FzdCBq c29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBiaWdpbnQKKy0tIFNlY3Rpb24gUDU6IGRpcmVj dCBjYWxscyB0byBleHRyYWN0LXBhdGggdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1Qg anNvbmJfZXh0cmFjdF9wYXRoX2ludDQoJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIsIEFSUkFZWydh JywnYiddKTsKKyBqc29uYl9leHRyYWN0X3BhdGhfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QganNvbmJf ZXh0cmFjdF9wYXRoX2ludDgoJ3sieCI6OTl9Jzo6anNvbmIsIEFSUkFZWyd4J10pOworIGpzb25i X2V4dHJhY3RfcGF0aF9pbnQ4IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgIDk5CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfZmxv YXQ4KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOworIGpzb25iX2V4dHJhY3RfcGF0 aF9mbG9hdDggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYygn eyJhIjoxLjIzfSc6Ompzb25iLCBBUlJBWVsnYSddKTsKKyBqc29uYl9leHRyYWN0X3BhdGhfbnVt ZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2Jvb2woJ3siYSI6 dHJ1ZX0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CisganNvbmJfZXh0cmFjdF9wYXRoX2Jvb2wgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBkaXJlY3QgY2FsbHM6 IG1pc3NpbmcgcGF0aAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOjF9Jzo6 anNvbmIsIEFSUkFZWydiJ10pOworIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKKy0t IGRpcmVjdCBjYWxsczogdHlwZS1taXNtYXRjaAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9p bnQ0KCd7ImEiOiJ0ZXh0In0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CitFUlJPUjogIGNhbm5vdCBj YXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKKy0tIGRpcmVjdCBjYWxsczogYXJyYXkg aW5kZXggaW4gcGF0aAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOlsxMCwy MF19Jzo6anNvbmIsIEFSUkFZWydhJywnMSddKTsKKyBqc29uYl9leHRyYWN0X3BhdGhfaW50NCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAyMAorKDEg cm93KQorCistLSBkaXJlY3QgY2FsbHM6IGludDIgYW5kIGZsb2F0NAorU0VMRUNUIGpzb25iX2V4 dHJhY3RfcGF0aF9pbnQyKCd7ImEiOnsiYiI6N319Jzo6anNvbmIsIEFSUkFZWydhJywnYiddKTsK KyBqc29uYl9leHRyYWN0X3BhdGhfaW50MiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgNworKDEgcm93KQorCitTRUxFQ1QganNvbmJfZXh0cmFjdF9w YXRoX2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCBBUlJBWVsnYSddKTsKKyBqc29uYl9leHRy YWN0X3BhdGhfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgMy4xNAorKDEgcm93KQorCiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxhcic7CiAgP2NvbHVtbj8gCiAtLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggNjljMjE3NzZmODQuLjExMTkxZmQwZjgy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0zNTgsNiArMzU4LDY3IEBAIFNFTEVDVCBqc29u Yl9hcnJheV9lbGVtZW50X2ludDIoJ1sxMCwgMjBdJzo6anNvbmIsIDApOwogU0VMRUNUIGpzb25i X2FycmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4xNCwgMi41XSc6Ompzb25iLCAxKTsKIAogCistLSBP cHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogZXh0cmFjdC1wYXRoIGZhbWlseQorLS0gVGhlIHBs YW5uZXIgcmV3cml0ZXMgKGogIz4gcGF0aCk6OnR5cGUgYW5kIChqc29uYl9leHRyYWN0X3BhdGgo aiwgLi4uKSk6OnR5cGUKKy0tIGludG8gZGlyZWN0IHR5cGVkIGV4dHJhY3RvciBjYWxscyBmb3Ig dGhlIHNhbWUgdGFyZ2V0IHR5cGVzLgorCistLSBTZWN0aW9uIFAxOiBwbGFubmVyIHJld3JpdGUg dmVyaWZpY2F0aW9uIChvcGVyYXRvciBmb3JtICM+KQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6bnVtZXJpYyBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQ0IEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmZsb2F0OCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ2LGYxfScpOjppbnQ4IEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDd9Jyk6OmJvb2wgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQyIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmZsb2F0NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBTZWN0aW9uIFAxYjogcGxh bm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoZGlyZWN0IGZ1bmN0aW9uLWNhbGwgZm9ybSkKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9leHRyYWN0X3BhdGgodGVz dF9qc29uLCAnZmllbGQ0JykpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25i X2V4dHJhY3RfcGF0aCh0ZXN0X2pzb24sICdmaWVsZDYnLCAnZjEnKSk6OmludDQgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCistLSBTZWN0aW9uIFAxYzogcGxh bm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoVkFSSUFESUMgQVJSQVkgZm9ybSkKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9leHRyYWN0X3BhdGgodGVzdF9qc29u LCBWQVJJQURJQyBBUlJBWVsnZmllbGQ2JywnZjEnXSkpOjppbnQ0IEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKworLS0gU2VjdGlvbiBQMjogY29ycmVjdCBleGVj dXRpb24gdGhyb3VnaCByZXdyaXR0ZW4gcGF0aAorU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVs ZDR9Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor U0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVs ZDR9Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNixmMX0nKTo6aW50NCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2Zp ZWxkNixmMX0nKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkN30nKTo6Ym9vbCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBhcnJheSBpbmRleCBpbiBwYXRoCitT RUxFQ1QgKCd7ImEiOlsxMCwyMCwzMF19Jzo6anNvbmIgIz4gJ3thLDF9Jyk6OmludDQ7CisKKy0t IFNlY3Rpb24gUDM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne25vbmV4 aXN0ZW50fScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIG1pc3Npbmcga2V5CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkM30nKTo6bnVt ZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09O IG51bGwgbGVhZgorU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDYsbWlzc2luZ30nKTo6aW50 NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5n IG5lc3RlZCBrZXkKKy0tIG51bGwgaW4gcGF0aCBhcnJheQorU0VMRUNUIGpzb25iX2V4dHJhY3Rf cGF0aF9pbnQ0KCd7ImEiOjF9Jzo6anNvbmIsIEFSUkFZW05VTExdOjp0ZXh0W10pOworLS0gZW1w dHkgcGF0aCBvbiBjb250YWluZXIgcm9vdCBwcm9kdWNlcyBjYXN0IGVycm9yCitTRUxFQ1QganNv bmJfZXh0cmFjdF9wYXRoX2ludDQoJ3siYSI6MX0nOjpqc29uYiwgJ3t9Jzo6dGV4dFtdKTsKKwor LS0gU2VjdGlvbiBQNDogdHlwZS1taXNtYXRjaCBlcnJvcnMKK1NFTEVDVCAodGVzdF9qc29uICM+ ICd7ZmllbGQxfScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsgIC0tIHN0cmluZyB0byBpbnQ0CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNX0n KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IGFycmF5IHRvIGZsb2F0OAorU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDZ9Jyk6OmludDgg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gb2JqZWN0IHRv IGludDgKKworLS0gU2VjdGlvbiBQNTogZGlyZWN0IGNhbGxzIHRvIGV4dHJhY3QtcGF0aCB0eXBl ZCBleHRyYWN0b3IgYnVpbHRpbnMKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJh Ijp7ImIiOjQyfX0nOjpqc29uYiwgQVJSQVlbJ2EnLCdiJ10pOworU0VMRUNUIGpzb25iX2V4dHJh Y3RfcGF0aF9pbnQ4KCd7IngiOjk5fSc6Ompzb25iLCBBUlJBWVsneCddKTsKK1NFTEVDVCBqc29u Yl9leHRyYWN0X3BhdGhfZmxvYXQ4KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOwor U0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9udW1lcmljKCd7ImEiOjEuMjN9Jzo6anNvbmIsIEFS UkFZWydhJ10pOworU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9ib29sKCd7ImEiOnRydWV9Jzo6 anNvbmIsIEFSUkFZWydhJ10pOworLS0gZGlyZWN0IGNhbGxzOiBtaXNzaW5nIHBhdGgKK1NFTEVD VCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJhIjoxfSc6Ompzb25iLCBBUlJBWVsnYiddKTsK Ky0tIGRpcmVjdCBjYWxsczogdHlwZS1taXNtYXRjaAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0 aF9pbnQ0KCd7ImEiOiJ0ZXh0In0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CistLSBkaXJlY3QgY2Fs bHM6IGFycmF5IGluZGV4IGluIHBhdGgKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgn eyJhIjpbMTAsMjBdfSc6Ompzb25iLCBBUlJBWVsnYScsJzEnXSk7CistLSBkaXJlY3QgY2FsbHM6 IGludDIgYW5kIGZsb2F0NAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQyKCd7ImEiOnsi YiI6N319Jzo6anNvbmIsIEFSUkFZWydhJywnYiddKTsKK1NFTEVDVCBqc29uYl9leHRyYWN0X3Bh dGhfZmxvYXQ0KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOworCisKIFNFTEVDVCB0 ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFy JzsKIFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnYXJyYXknOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotLSAKMi41Mi4wCgo= --0000000000008cd82706507710bc Content-Type: application/octet-stream; name="v6-0004-jsonb-optimize-multi-subscript-casts-via-extract-.patch" Content-Disposition: attachment; filename="v6-0004-jsonb-optimize-multi-subscript-casts-via-extract-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mohnprh63 RnJvbSAxYzViYzQyODM4OGU2YTRmOTdjMWU2ODRiNzcwNWI5OGU1ZDBiYWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IFN1biwgMjYgQXByIDIwMjYgMTg6NDk6MzMgLTA3MDAKU3ViamVjdDogW1BBVENIIHY2IDQvNV0g anNvbmI6IG9wdGltaXplIG11bHRpLXN1YnNjcmlwdCBjYXN0cyB2aWEgZXh0cmFjdC1wYXRoCiBy ZXdyaXRlCgpFeHRlbmQgdGhlIGV4aXN0aW5nIHN1cHBvcnQtZnVuY3Rpb24gcmV3cml0ZSB0byBt dWx0aS1zdWJzY3JpcHQganNvbmIKc3Vic2NyaXB0aW5nIGNoYWlucywgbG93ZXJpbmcgdGhlbSB0 byB0aGUgZXh0cmFjdC1wYXRoIHR5cGVkIGV4dHJhY3RvcgpmYW1pbHkgYWxyZWFkeSBpbnRyb2R1 Y2VkIGJ5IHRoZSBzZXJpZXMuCgpPbmx5IGNoYWlucyB3aG9zZSBpbnRlZ2VyIHN1YnNjcmlwdHMg YXJlIGFsbCBjb25zdGFudHMgYXJlIGVsaWdpYmxlIGZvcgp0aGUgcmV3cml0ZTsgbm9uLWNvbnN0 YW50IGludGVnZXIgc3Vic2NyaXB0cyAod2hpY2ggd291bGQgcmVxdWlyZSBhCnJ1bnRpbWUgQ29l cmNlVmlhSU8gY29udmVyc2lvbikgY2F1c2UgdGhlIGVudGlyZSBjaGFpbiB0byBiZSBsZWZ0IGlu Cml0cyBvcmlnaW5hbCBmb3JtLgoKVGhpcyBrZWVwcyBzaW5nbGUtc3Vic2NyaXB0IGJlaGF2aW9y IHVuY2hhbmdlZCBhbmQgc3VwcG9ydHMgY2FzdHMgdG8KbnVtZXJpYywgYm9vbCwgaW50MiwgaW50 NCwgaW50OCwgZmxvYXQ0LCBhbmQgZmxvYXQ4LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYi5jICAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iLm91dCB8IDE1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8ICA0MyArKysrKysrKwogMyBmaWxl cyBjaGFuZ2VkLCAzMDEgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYwppbmRleCA3ZWJhNDM3YjhhNC4uZDVjMDg3MWEyMTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yi5jCkBAIC0xODM1LDYgKzE4MzUsNyBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVtIGpidlR5 cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSwgTm9kZSAqZXNjb250ZXh0KQogICogICAtIGpz b25iX29iamVjdF9maWVsZChqLCAna2V5JykgIC8gIGogLT4gJ2tleScgIC8gIGpbJ2tleSddCiAg KiAgIC0ganNvbmJfYXJyYXlfZWxlbWVudChqLCBpZHgpICAgLyAgaiAtPiBpZHggICAgLyAgaltp ZHhdCiAgKiAgIC0ganNvbmJfZXh0cmFjdF9wYXRoKGosIC4uLikgICAgLyAgaiAjPiAne2EsYn0n CisgKiAgIC0gbXVsdGktc3Vic2NyaXB0IGNoYWlucyAgICAgICAgIGpbJ2EnXVsnYiddLCBqWydh J11bMF0sIGV0Yy4KICAqLwogRGF0dW0KIGpzb25iX2Nhc3Rfc3VwcG9ydChQR19GVU5DVElPTl9B UkdTKQpAQCAtMTg4NSwzNSArMTg4NiwxMjAgQEAganNvbmJfY2FzdF9zdXBwb3J0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJCWVsc2UgaWYgKElzQShhcmcsIFN1YnNjcmlwdGluZ1JlZikpCiAJCXsKIAkJ CVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlwdGluZ1JlZiAqKSBhcmc7Ci0JCQlO b2RlCSAgICpzdWJzY3JpcHQ7Ci0JCQlPaWQJCQlzdWJzY3JpcHRfdHlwZTsKKwkJCWludAkJCW5z dWJzY3JpcHRzOwogCiAJCQkvKgotCQkJICogSGFuZGxlIHNpbmdsZS1zdWJzY3JpcHQganNvbmIg YWNjZXNzIHdpdGggbm8gc2xpY2UgYW5kIG5vCi0JCQkgKiBhc3NpZ25tZW50LiAgVGV4dCBzdWJz Y3JpcHRzIG1hcCB0byBvYmplY3QtZmllbGQgZXh0cmFjdGlvbjsKLQkJCSAqIGludDQgc3Vic2Ny aXB0cyBtYXAgdG8gYXJyYXktZWxlbWVudCBleHRyYWN0aW9uLgorCQkJICogSGFuZGxlIGpzb25i IHN1YnNjcmlwdCBhY2Nlc3Mgd2l0aCBubyBzbGljZSBhbmQgbm8gYXNzaWdubWVudC4KKwkJCSAq IFNpbmdsZSBzdWJzY3JpcHRzIG1hcCB0byBvYmplY3QtZmllbGQgb3IgYXJyYXktZWxlbWVudAor CQkJICogZXh0cmFjdGlvbjsgbXVsdGktc3Vic2NyaXB0IGNoYWlucyBsb3dlciB0byB0aGUgZXh0 cmFjdC1wYXRoCisJCQkgKiBmYW1pbHkuCiAJCQkgKi8KIAkJCWlmIChzYnNyZWYtPnJlZmNvbnRh aW5lcnR5cGUgIT0gSlNPTkJPSUQpCiAJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7Ci0JCQlp ZiAobGlzdF9sZW5ndGgoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpICE9IDEpCi0JCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CiAJCQlpZiAoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgIT0gTklM KQogCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCQkJaWYgKHNic3JlZi0+cmVmYXNzZ25l eHByICE9IE5VTEwpCiAJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAKLQkJCXN1YnNjcmlw dCA9IChOb2RlICopIGxpbml0aWFsKHNic3JlZi0+cmVmdXBwZXJpbmRleHByKTsKLQkJCXN1YnNj cmlwdF90eXBlID0gZXhwclR5cGUoc3Vic2NyaXB0KTsKKwkJCW5zdWJzY3JpcHRzID0gbGlzdF9s ZW5ndGgoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpOwogCi0JCQlpZiAoc3Vic2NyaXB0X3R5cGUg PT0gVEVYVE9JRCkKKwkJCWlmIChuc3Vic2NyaXB0cyA9PSAxKQogCQkJewotCQkJCWlubmVyX2Z1 bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEOwotCQkJCWlubmVyX2FyZ3MgPSBsaXN0X21ha2Uy KHNic3JlZi0+cmVmZXhwciwgc3Vic2NyaXB0KTsKKwkJCQkvKgorCQkJCSAqIFNpbmdsZSBzdWJz Y3JpcHQ6IHRleHQgbWFwcyB0byBvYmplY3QtZmllbGQsIGludDQgbWFwcyB0bworCQkJCSAqIGFy cmF5LWVsZW1lbnQuCisJCQkJICovCisJCQkJTm9kZQkgICAqc3Vic2NyaXB0OworCQkJCU9pZAkJ CXN1YnNjcmlwdF90eXBlOworCisJCQkJc3Vic2NyaXB0ID0gKE5vZGUgKikgbGluaXRpYWwoc2Jz cmVmLT5yZWZ1cHBlcmluZGV4cHIpOworCQkJCXN1YnNjcmlwdF90eXBlID0gZXhwclR5cGUoc3Vi c2NyaXB0KTsKKworCQkJCWlmIChzdWJzY3JpcHRfdHlwZSA9PSBURVhUT0lEKQorCQkJCXsKKwkJ CQkJaW5uZXJfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTEQ7CisJCQkJCWlubmVyX2FyZ3Mg PSBsaXN0X21ha2UyKHNic3JlZi0+cmVmZXhwciwgc3Vic2NyaXB0KTsKKwkJCQl9CisJCQkJZWxz ZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0gSU5UNE9JRCkKKwkJCQl7CisJCQkJCWlubmVyX2Z1bmNp ZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVDsKKwkJCQkJaW5uZXJfYXJncyA9IGxpc3RfbWFrZTIo c2JzcmVmLT5yZWZleHByLCBzdWJzY3JpcHQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCVBHX1JF VFVSTl9QT0lOVEVSKE5VTEwpOwogCQkJfQotCQkJZWxzZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0g SU5UNE9JRCkKKwkJCWVsc2UgaWYgKG5zdWJzY3JpcHRzID49IDIpCiAJCQl7Ci0JCQkJaW5uZXJf ZnVuY2lkID0gRl9KU09OQl9BUlJBWV9FTEVNRU5UOwotCQkJCWlubmVyX2FyZ3MgPSBsaXN0X21h a2UyKHNic3JlZi0+cmVmZXhwciwgc3Vic2NyaXB0KTsKKwkJCQkvKgorCQkJCSAqIE11bHRpLXN1 YnNjcmlwdCBjaGFpbjogYnVpbGQgYSB0ZXh0W10gcGF0aCBhbmQgbG93ZXIgdG8KKwkJCQkgKiB0 aGUgZXh0cmFjdC1wYXRoIGZhbWlseS4gIEVhY2ggc3Vic2NyaXB0IG11c3QgYmUgdGV4dCBvcgor CQkJCSAqIGEgY29uc3RhbnQgaW50NDsgbm9uLWNvbnN0YW50IGludGVnZXIgc3Vic2NyaXB0cyBj YXVzZQorCQkJCSAqIHRoZSBlbnRpcmUgY2hhaW4gdG8gYmUgbGVmdCB1bm9wdGltaXplZC4KKwkJ CQkgKi8KKwkJCQlMaXN0CSAgICpwYXRoX2VsZW1zID0gTklMOworCQkJCUxpc3RDZWxsICAgKmxj OworCQkJCUFycmF5RXhwciAgKmFleHByOworCisJCQkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZ1 cHBlcmluZGV4cHIpCisJCQkJeworCQkJCQlOb2RlCSAgICpzdWJzY3JpcHQgPSAoTm9kZSAqKSBs Zmlyc3QobGMpOworCQkJCQlPaWQJCQlzdWJzY3JpcHRfdHlwZSA9IGV4cHJUeXBlKHN1YnNjcmlw dCk7CisKKwkJCQkJaWYgKHN1YnNjcmlwdF90eXBlID09IFRFWFRPSUQpCisJCQkJCXsKKwkJCQkJ CXBhdGhfZWxlbXMgPSBsYXBwZW5kKHBhdGhfZWxlbXMsIHN1YnNjcmlwdCk7CisJCQkJCX0KKwkJ CQkJZWxzZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0gSU5UNE9JRCkKKwkJCQkJeworCQkJCQkJQ29u c3QJICAgKmNvbjsKKworCQkJCQkJLyoKKwkJCQkJCSAqIE9ubHkgY29uc3RhbnQgaW50ZWdlciBz dWJzY3JpcHRzIGNhbiBiZSBzYWZlbHkKKwkJCQkJCSAqIGNvbnZlcnRlZCB0byB0ZXh0IGF0IHBs YW4gdGltZS4gIE5vbi1jb25zdGFudAorCQkJCQkJICogb25lcyB3b3VsZCByZXF1aXJlIGEgcnVu dGltZSBDb2VyY2VWaWFJTyBub2RlOworCQkJCQkJICogZGVjbGluZSB0aGUgcmV3cml0ZSBmb3Ig dGhlIGVudGlyZSBjaGFpbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFJc0Eoc3Vic2NyaXB0LCBD b25zdCkpCisJCQkJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJCQkJCWNvbiA9IChD b25zdCAqKSBzdWJzY3JpcHQ7CisKKwkJCQkJCWlmIChjb24tPmNvbnN0aXNudWxsKQorCQkJCQkJ eworCQkJCQkJCXBhdGhfZWxlbXMgPSBsYXBwZW5kKHBhdGhfZWxlbXMsCisJCQkJCQkJCQkJCQkg bWFrZU51bGxDb25zdChURVhUT0lELAorCQkJCQkJCQkJCQkJCQkJICAgLTEsCisJCQkJCQkJCQkJ CQkJCQkgICBJbnZhbGlkT2lkKSk7CisJCQkJCQl9CisJCQkJCQllbHNlCisJCQkJCQl7CisJCQkJ CQkJY2hhcgkgICAqc3RyOworCisJCQkJCQkJc3RyID0gRGF0dW1HZXRDU3RyaW5nKAorCQkJCQkJ CQlEaXJlY3RGdW5jdGlvbkNhbGwxKGludDRvdXQsCisJCQkJCQkJCQkJCQkJY29uLT5jb25zdHZh bHVlKSk7CisJCQkJCQkJcGF0aF9lbGVtcyA9IGxhcHBlbmQocGF0aF9lbGVtcywKKwkJCQkJCQkJ bWFrZUNvbnN0KFRFWFRPSUQsIC0xLCBJbnZhbGlkT2lkLCAtMSwKKwkJCQkJCQkJCQkgIENTdHJp bmdHZXRUZXh0RGF0dW0oc3RyKSwKKwkJCQkJCQkJCQkgIGZhbHNlLCBmYWxzZSkpOworCQkJCQkJ fQorCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOworCQkJ CX0KKworCQkJCWFleHByID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCQlhZXhwci0+YXJyYXlf dHlwZWlkID0gVEVYVEFSUkFZT0lEOworCQkJCWFleHByLT5hcnJheV9jb2xsaWQgPSBJbnZhbGlk T2lkOworCQkJCWFleHByLT5lbGVtZW50X3R5cGVpZCA9IFRFWFRPSUQ7CisJCQkJYWV4cHItPmVs ZW1lbnRzID0gcGF0aF9lbGVtczsKKwkJCQlhZXhwci0+bXVsdGlkaW1zID0gZmFsc2U7CisJCQkJ YWV4cHItPmxpc3Rfc3RhcnQgPSAtMTsKKwkJCQlhZXhwci0+bGlzdF9lbmQgPSAtMTsKKwkJCQlh ZXhwci0+bG9jYXRpb24gPSAtMTsKKworCQkJCWlubmVyX2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFD VF9QQVRIOworCQkJCWlubmVyX2FyZ3MgPSBsaXN0X21ha2UyKHNic3JlZi0+cmVmZXhwciwgYWV4 cHIpOwogCQkJfQogCQkJZWxzZQogCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCBiOTZjMDk1NTI1Yy4uMzE5ODQ0MjM1MmMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC0xNDc0LDYgKzE0NzQsMTYzIEBAIFNF TEVDVCBqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZ WydhJ10pOwogICAgICAgICAgICAgICAgICAgICAgIDMuMTQKICgxIHJvdykKIAorLS0gT3B0aW1p emVkIHR5cGVkIGV4dHJhY3Rpb246IG11bHRpLXN1YnNjcmlwdCBjaGFpbnMKKy0tIFRoZSBwbGFu bmVyIGxvd2VycyBqWydhJ11bJ2InXSwgalsnYSddWzBdLCBldGMuIHRvIHRoZSBleHRyYWN0LXBh dGggdHlwZWQKKy0tIGV4dHJhY3RvciBmYW1pbHksIHJldXNpbmcgdGhlIHNhbWUgZnVuY3Rpb25z IGFzIHRoZSAjPiBvcGVyYXRvciBwYXRoLgorLS0gU2VjdGlvbiBNMTogcGxhbm5lciByZXdyaXRl IHZlcmlmaWNhdGlvbiBmb3IgbXVsdGktc3Vic2NyaXB0IGNoYWlucworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ2J11bJ2YxJ10pOjppbnQ0IEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVt cC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KHRlc3RfanNv biwgQVJSQVlbJ2ZpZWxkNic6OnRleHQsICdmMSc6OnRleHRdKQorICAgRmlsdGVyOiAodGVzdF9q c29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNSddWzBdKTo6aW50NCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1w LnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDQodGVzdF9qc29u LCBBUlJBWVsnZmllbGQ1Jzo6dGV4dCwgJzAnOjp0ZXh0XSkKKyAgIEZpbHRlcjogKHRlc3RfanNv bmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbNl1bJ2snXSk6OmludDQgRlJPTSB0ZXN0 X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9w YXRoX2ludDQodGVzdF9hcnIsIEFSUkFZWyc2Jzo6dGV4dCwgJ2snOjp0ZXh0XSkKKygyIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxk NiddWydmMSddKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9l eHRyYWN0X3BhdGhfZmxvYXQ4KHRlc3RfanNvbiwgQVJSQVlbJ2ZpZWxkNic6OnRleHQsICdmMSc6 OnRleHRdKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4 dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0 X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAg T3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYyh0ZXN0X2pzb24sIEFSUkFZWydmaWVs ZDYnOjp0ZXh0LCAnZjEnOjp0ZXh0XSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBl ID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCistLSBWZXJpZnkgc2luZ2xlIHN1YnNjcmlw dCBzdGlsbCB1c2VzIHRoZSBleGlzdGluZyBvYmplY3QtZmllbGQgZmFtaWx5LCBub3QgZXh0cmFj dC1wYXRoCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydm aWVsZDQnXSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRw dXQ6IGpzb25iX29iamVjdF9maWVsZF9pbnQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisg ICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93 cykKKworLS0gU2VjdGlvbiBNMWI6IG11bHRpLXN1YnNjcmlwdCBpbnQyL2Zsb2F0NAorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ2J11bJ2YxJ10p OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4g b24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9pbnQy KHRlc3RfanNvbiwgQVJSQVlbJ2ZpZWxkNic6OnRleHQsICdmMSc6OnRleHRdKQorICAgRmlsdGVy OiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK1NF TEVDVCAoKCd7ImEiOnsiYiI6N319Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDI7CisgaW50MiAK Ky0tLS0tLQorICAgIDcKKygxIHJvdykKKworLS0gU2VjdGlvbiBNMjogZXhlY3V0aW9uIHRocm91 Z2ggbXVsdGktc3Vic2NyaXB0IHJld3JpdGUKK1NFTEVDVCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompz b25iKVsnYSddWydiJ10pOjppbnQ0OworIGludDQgCistLS0tLS0KKyAgIDQyCisoMSByb3cpCisK K1NFTEVDVCAoKCd7ImEiOlsxMCwyMCwzMF19Jzo6anNvbmIpWydhJ11bMV0pOjppbnQ0OworIGlu dDQgCistLS0tLS0KKyAgIDIwCisoMSByb3cpCisKK1NFTEVDVCAoKCdbeyJhIjp0cnVlfV0nOjpq c29uYilbMF1bJ2EnXSk6OmJvb2w7CisgYm9vbCAKKy0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUICgoJ1tbMSwyXSxbMyw0XV0nOjpqc29uYilbMF1bMV0pOjppbnQ0OworIGludDQgCistLS0t LS0KKyAgICAyCisoMSByb3cpCisKK1NFTEVDVCAoKCd7ImEiOlt7ImIiOjMuMTR9XX0nOjpqc29u YilbJ2EnXVswXVsnYiddKTo6ZmxvYXQ4OworIGZsb2F0OCAKKy0tLS0tLS0tCisgICAzLjE0Ciso MSByb3cpCisKK1NFTEVDVCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iKVsnYSddWydiJ10pOjpu dW1lcmljOworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDQyCisoMSByb3cpCisKK1NFTEVD VCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQ4OworIGludDggCist LS0tLS0KKyAgIDQyCisoMSByb3cpCisKKy0tIG5lZ2F0aXZlIGluZGV4IGluIG5lc3RlZCBjaGFp bgorU0VMRUNUICgoJ3siYSI6WzEwLDIwLDMwXX0nOjpqc29uYilbJ2EnXVstMV0pOjppbnQ0Owor IGludDQgCistLS0tLS0KKyAgIDMwCisoMSByb3cpCisKKy0tIFNlY3Rpb24gTTM6IE5VTEwgc2Vt YW50aWNzIGZvciBtdWx0aS1zdWJzY3JpcHQgY2hhaW5zCitTRUxFQ1QgKCgneyJhIjoxfSc6Ompz b25iKVsneCddWydiJ10pOjppbnQ0OyAgLS0gbWlzc2luZyBpbnRlcm1lZGlhdGUga2V5CisgaW50 NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICgoJ3siYSI6eyJjIjoxfX0nOjpq c29uYilbJ2EnXVsnYiddKTo6aW50NDsgIC0tIG1pc3NpbmcgZmluYWwga2V5CisgaW50NCAKKy0t LS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICgoJ3siYSI6eyJiIjpudWxsfX0nOjpqc29u YilbJ2EnXVsnYiddKTo6aW50NDsgIC0tIEpTT04gbnVsbCBsZWFmCisgaW50NCAKKy0tLS0tLQor ICAgICAKKygxIHJvdykKKworU0VMRUNUICgoJ3siYSI6WzFdfSc6Ompzb25iKVsnYSddWzVdKTo6 aW50NDsgIC0tIG91dC1vZi1yYW5nZSBuZXN0ZWQgaW5kZXgKKyBpbnQ0IAorLS0tLS0tCisgICAg IAorKDEgcm93KQorCistLSBTZWN0aW9uIE00OiB0eXBlLW1pc21hdGNoIGVycm9ycyBmb3IgbXVs dGktc3Vic2NyaXB0IGNoYWlucworU0VMRUNUICgoJ3siYSI6eyJiIjoiaGVsbG8ifX0nOjpqc29u YilbJ2EnXVsnYiddKTo6aW50NDsgIC0tIHN0cmluZyB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBj YXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCAoKCd7ImEiOnsiYiI6WzEs Ml19fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQ0OyAgLS0gY29udGFpbmVyIHRvIGludDQKK0VS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgdG8gdHlwZSBpbnRlZ2VyCistLSBTZWN0aW9u IE01OiBub24tY29uc3RhbnQgaW50NCBzdWJzY3JpcHQgZGVjbGluZXMgcmV3cml0ZQorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICgoJ3siYSI6W1sxMCwyMF0sWzMwLDQwXV19 Jzo6anNvbmIpWydhJ11baV1bMF0pOjppbnQ0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsMSkgQVMg aTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rp b24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcyBpCisgICBPdXRwdXQ6ICgoJ3si YSI6IFtbMTAsIDIwXSwgWzMwLCA0MF1dfSc6Ompzb25iKVsnYSc6OnRleHRdW2ldWzBdKTo6aW50 ZWdlcgorICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDAsIDEpCisoMyByb3dzKQor CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ3NjYWxhcic7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwK aW5kZXggMTExOTFmZDBmODIuLmVkNzBjNGQyOWVlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBA IC00MTksNiArNDE5LDQ5IEBAIFNFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50MigneyJhIjp7 ImIiOjd9fSc6Ompzb25iLCBBUlJBWVsnYScsJ2InXSk7CiBTRUxFQ1QganNvbmJfZXh0cmFjdF9w YXRoX2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCBBUlJBWVsnYSddKTsKIAogCistLSBPcHRp bWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogbXVsdGktc3Vic2NyaXB0IGNoYWlucworLS0gVGhlIHBs YW5uZXIgbG93ZXJzIGpbJ2EnXVsnYiddLCBqWydhJ11bMF0sIGV0Yy4gdG8gdGhlIGV4dHJhY3Qt cGF0aCB0eXBlZAorLS0gZXh0cmFjdG9yIGZhbWlseSwgcmV1c2luZyB0aGUgc2FtZSBmdW5jdGlv bnMgYXMgdGhlICM+IG9wZXJhdG9yIHBhdGguCisKKy0tIFNlY3Rpb24gTTE6IHBsYW5uZXIgcmV3 cml0ZSB2ZXJpZmljYXRpb24gZm9yIG11bHRpLXN1YnNjcmlwdCBjaGFpbnMKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6aW50 NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDUnXVswXSk6OmludDQg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzZdWydrJ10pOjppbnQ0IEZST00gdGVz dF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9q c29uWydmaWVsZDYnXVsnZjEnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVz dF9qc29uWydmaWVsZDYnXVsnZjEnXSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworCistLSBWZXJpZnkgc2luZ2xlIHN1YnNjcmlwdCBzdGlsbCB1 c2VzIHRoZSBleGlzdGluZyBvYmplY3QtZmllbGQgZmFtaWx5LCBub3QgZXh0cmFjdC1wYXRoCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6 OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCisKKy0t IFNlY3Rpb24gTTFiOiBtdWx0aS1zdWJzY3JpcHQgaW50Mi9mbG9hdDQKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6aW50MiBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKCgneyJh Ijp7ImIiOjd9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQyOworLS0gU2VjdGlvbiBNMjogZXhl Y3V0aW9uIHRocm91Z2ggbXVsdGktc3Vic2NyaXB0IHJld3JpdGUKK1NFTEVDVCAoKCd7ImEiOnsi YiI6NDJ9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQ0OworU0VMRUNUICgoJ3siYSI6WzEwLDIw LDMwXX0nOjpqc29uYilbJ2EnXVsxXSk6OmludDQ7CitTRUxFQ1QgKCgnW3siYSI6dHJ1ZX1dJzo6 anNvbmIpWzBdWydhJ10pOjpib29sOworU0VMRUNUICgoJ1tbMSwyXSxbMyw0XV0nOjpqc29uYilb MF1bMV0pOjppbnQ0OworU0VMRUNUICgoJ3siYSI6W3siYiI6My4xNH1dfSc6Ompzb25iKVsnYSdd WzBdWydiJ10pOjpmbG9hdDg7CitTRUxFQ1QgKCgneyJhIjp7ImIiOjQyfX0nOjpqc29uYilbJ2En XVsnYiddKTo6bnVtZXJpYzsKK1NFTEVDVCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iKVsnYSdd WydiJ10pOjppbnQ4OworLS0gbmVnYXRpdmUgaW5kZXggaW4gbmVzdGVkIGNoYWluCitTRUxFQ1Qg KCgneyJhIjpbMTAsMjAsMzBdfSc6Ompzb25iKVsnYSddWy0xXSk6OmludDQ7CisKKy0tIFNlY3Rp b24gTTM6IE5VTEwgc2VtYW50aWNzIGZvciBtdWx0aS1zdWJzY3JpcHQgY2hhaW5zCitTRUxFQ1Qg KCgneyJhIjoxfSc6Ompzb25iKVsneCddWydiJ10pOjppbnQ0OyAgLS0gbWlzc2luZyBpbnRlcm1l ZGlhdGUga2V5CitTRUxFQ1QgKCgneyJhIjp7ImMiOjF9fSc6Ompzb25iKVsnYSddWydiJ10pOjpp bnQ0OyAgLS0gbWlzc2luZyBmaW5hbCBrZXkKK1NFTEVDVCAoKCd7ImEiOnsiYiI6bnVsbH19Jzo6 anNvbmIpWydhJ11bJ2InXSk6OmludDQ7ICAtLSBKU09OIG51bGwgbGVhZgorU0VMRUNUICgoJ3si YSI6WzFdfSc6Ompzb25iKVsnYSddWzVdKTo6aW50NDsgIC0tIG91dC1vZi1yYW5nZSBuZXN0ZWQg aW5kZXgKKworLS0gU2VjdGlvbiBNNDogdHlwZS1taXNtYXRjaCBlcnJvcnMgZm9yIG11bHRpLXN1 YnNjcmlwdCBjaGFpbnMKK1NFTEVDVCAoKCd7ImEiOnsiYiI6ImhlbGxvIn19Jzo6anNvbmIpWydh J11bJ2InXSk6OmludDQ7ICAtLSBzdHJpbmcgdG8gaW50NAorU0VMRUNUICgoJ3siYSI6eyJiIjpb MSwyXX19Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDQ7ICAtLSBjb250YWluZXIgdG8gaW50NAor CistLSBTZWN0aW9uIE01OiBub24tY29uc3RhbnQgaW50NCBzdWJzY3JpcHQgZGVjbGluZXMgcmV3 cml0ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICgoJ3siYSI6W1sxMCwy MF0sWzMwLDQwXV19Jzo6anNvbmIpWydhJ11baV1bMF0pOjppbnQ0IEZST00gZ2VuZXJhdGVfc2Vy aWVzKDAsMSkgQVMgaTsKKwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CiBTRUxFQ1QgdGVzdF9qc29u IC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci0tIAoy LjUyLjAKCg== --0000000000008cd82706507710bc Content-Type: application/octet-stream; name="v6-0001-jsonb-optimize-object-field-casts-to-scalar-types.patch" Content-Disposition: attachment; filename="v6-0001-jsonb-optimize-object-field-casts-to-scalar-types.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mohnprgh0 RnJvbSA4YTA2NTY3YmRjMjQ5Y2NmNmJlZTkxYzUxY2QxZmE3MzQxNzBmNzU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IFRodSwgMiBBcHIgMjAyNiAyMToyMjo1NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjYgMS81XSBq c29uYjogb3B0aW1pemUgb2JqZWN0LWZpZWxkIGNhc3RzIHRvIHNjYWxhciB0eXBlcwoKRXh0ZW5k IHRoZSBleGlzdGluZyBzdXBwb3J0LWZ1bmN0aW9uIHJld3JpdGUgZm9yIGpzb25iIG9iamVjdC1m aWVsZApleHRyYWN0aW9uLCBpbmNsdWRpbmcganNvbmJfb2JqZWN0X2ZpZWxkKCksIC0+LCBhbmQg a2V5IHN1YnNjcmlwdGluZy4KClRoaXMga2VlcHMgb3JkaW5hcnkgU1FMIHN5bnRheCB1bmNoYW5n ZWQgYW5kIHJld3JpdGVzIHN1cHBvcnRlZCBjYXN0cwpkaXJlY3RseSB0byBleHBsaWNpdCB0eXBl ZCBleHRyYWN0b3IgZnVuY3Rpb25zIGZvciBudW1lcmljLCBib29sLAppbnQyLCBpbnQ0LCBpbnQ4 LCBmbG9hdDQsIGFuZCBmbG9hdDguCgpDby1hdXRob3JlZC1ieTogQW5keSBGYW4gPHpoaWh1aWZh bjEyMTNAMTYzLmNvbT4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICB8 IDE1NCArKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgIHwgMTk1 ICsrKysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICB8ICA1NSAr KystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDQ4NSArKysrKysrKysr KysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8 IDEyMCArKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDk5NSBpbnNlcnRpb25zKCspLCAxNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IDg2NGM1YWMxYzg1Li5jODVkNDg4MmYy MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTE3LDYgKzE3LDkgQEAKICNpbmNsdWRlICJmdW5j YXBpLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKKyNpbmNsdWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMv anNvbi5oIgpAQCAtMTgxNiw2ICsxODE5LDE1NSBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVt IGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSwgTm9kZSAqZXNjb250ZXh0KQogCXJl dHVybiAoRGF0dW0pIDA7CiB9CiAKKy8qCisgKiBqc29uYl9jYXN0X3N1cHBvcnQoKQorICoKKyAq IFBsYW5uZXIgc3VwcG9ydCBmdW5jdGlvbiBmb3IganNvbmItdG8tc2NhbGFyIGNhc3QgZnVuY3Rp b25zLCBhdHRhY2hlZCB2aWEKKyAqIHByb3N1cHBvcnQgb24gdGhlIGpzb25iX251bWVyaWMsIGpz b25iX2Jvb2wsIGpzb25iX2ludDQsIGpzb25iX2ludDgsIGFuZAorICoganNvbmJfZmxvYXQ4IGNh dGFsb2cgZW50cmllcy4KKyAqCisgKiBXaGVuIHRoZSBzb2xlIGFyZ3VtZW50IHRvIHRoZSBjYXN0 IGlzIGEganNvbmJfb2JqZWN0X2ZpZWxkKCkgY2FsbCAodGhlIC0+CisgKiBvcGVyYXRvciksIHdl IHJlcGxhY2UgdGhlIHR3by1zdGVwIGNhc3QoZXh0cmFjdCguLi4pKSBleHByZXNzaW9uIHdpdGgg YQorICogc2luZ2xlIHR5cGVkIGV4dHJhY3RvciB0aGF0IHJlYWRzIHRoZSBzY2FsYXIgZGlyZWN0 bHkgZnJvbSB0aGUgaW4tbWVtb3J5CisgKiBKc29uYlZhbHVlLCBhdm9pZGluZyBhIHJvdW5kLXRy aXAgdGhyb3VnaCBKc29uYlZhbHVlVG9Kc29uYi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgKGogLT4g J2EnKTo6bnVtZXJpYyBpcyBwYXJzZWQgYXM6CisgKiAgIGpzb25iX251bWVyaWMoanNvbmJfb2Jq ZWN0X2ZpZWxkKGosICdhJykpCisgKiBhbmQgaXMgcmV3cml0dGVuIHRvOgorICogICBqc29uYl9v YmplY3RfZmllbGRfbnVtZXJpYyhqLCAnYScpCisgKi8KK0RhdHVtCitqc29uYl9jYXN0X3N1cHBv cnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlOb2RlCSAgICpyYXdyZXEgPSAoTm9kZSAqKSBQR19H RVRBUkdfUE9JTlRFUigwKTsKKwlOb2RlCSAgICpyZXQgPSBOVUxMOworCisJaWYgKElzQShyYXdy ZXEsIFN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkpKQorCXsKKwkJU3VwcG9ydFJlcXVlc3RTaW1wbGlm eSAqcmVxID0gKFN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkgKikgcmF3cmVxOworCQlGdW5jRXhwciAg ICpmZXhwciA9IHJlcS0+ZmNhbGw7CisJCU5vZGUJICAgKmFyZzsKKwkJT2lkCQkJaW5uZXJfZnVu Y2lkOworCQlMaXN0CSAgICppbm5lcl9hcmdzOworCQlpbnQJCQlsb2NhdGlvbjsKKwkJT2lkCQkJ cmVwbGFjZW1lbnRfZnVuY2lkOworCQlPaWQJCQlyZXBsYWNlbWVudF9yZXR0eXBlOworCQlGdW5j RXhwciAgICpuZXdmZXhwcjsKKworCQkvKiBUaGUgY2FzdCBmdW5jdGlvbiBtdXN0IGhhdmUgZXhh Y3RseSBvbmUgYXJndW1lbnQgKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKGZleHByLT5hcmdzKSAhPSAx KQorCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJYXJnID0gKE5vZGUgKikgbGluaXRp YWwoZmV4cHItPmFyZ3MpOworCisJCS8qCisJCSAqIElkZW50aWZ5IHRoZSBpbm5lciBleHRyYWN0 aW9uIGV4cHJlc3Npb24uICBJdCBtYXkgYXBwZWFyIGFzIGEKKwkJICogRnVuY0V4cHIsIGFuIE9w RXhwciwgb3IgYSBTdWJzY3JpcHRpbmdSZWYsIGRlcGVuZGluZyBvbiBob3cgdGhlCisJCSAqIGV4 cHJlc3Npb24gaXMgcmVwcmVzZW50ZWQgYXQgdGhpcyBwb2ludC4gIEFjY2VwdCB0aGUgc3VwcG9y dGVkCisJCSAqIGZvcm1zLgorCQkgKi8KKwkJaWYgKElzQShhcmcsIEZ1bmNFeHByKSkKKwkJewor CQkJRnVuY0V4cHIgICAqaW5uZXIgPSAoRnVuY0V4cHIgKikgYXJnOworCisJCQlpbm5lcl9mdW5j aWQgPSBpbm5lci0+ZnVuY2lkOworCQkJaW5uZXJfYXJncyA9IGlubmVyLT5hcmdzOworCQkJbG9j YXRpb24gPSBpbm5lci0+bG9jYXRpb247CisJCX0KKwkJZWxzZSBpZiAoSXNBKGFyZywgT3BFeHBy KSkKKwkJeworCQkJT3BFeHByCSAgICppbm5lciA9IChPcEV4cHIgKikgYXJnOworCisJCQlpbm5l cl9mdW5jaWQgPSBpbm5lci0+b3BmdW5jaWQ7CisJCQlpbm5lcl9hcmdzID0gaW5uZXItPmFyZ3M7 CisJCQlsb2NhdGlvbiA9IGlubmVyLT5sb2NhdGlvbjsKKwkJfQorCQllbHNlIGlmIChJc0EoYXJn LCBTdWJzY3JpcHRpbmdSZWYpKQorCQl7CisJCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChT dWJzY3JpcHRpbmdSZWYgKikgYXJnOworCQkJTm9kZQkgICAqc3Vic2NyaXB0OworCisJCQkvKgor CQkJICogT25seSBoYW5kbGUgdGhlIG5hcnJvdyBjYXNlIGVxdWl2YWxlbnQgdG8gb2JqZWN0LWZp ZWxkCisJCQkgKiBleHRyYWN0aW9uOiBhIHNpbmdsZSB0ZXh0LXR5cGVkIHN1YnNjcmlwdCBvbiBh IGpzb25iCisJCQkgKiBjb250YWluZXIsIHdpdGggbm8gc2xpY2UgYW5kIG5vIGFzc2lnbm1lbnQu CisJCQkgKi8KKwkJCWlmIChzYnNyZWYtPnJlZmNvbnRhaW5lcnR5cGUgIT0gSlNPTkJPSUQpCisJ CQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisJCQlpZiAobGlzdF9sZW5ndGgoc2JzcmVmLT5y ZWZ1cHBlcmluZGV4cHIpICE9IDEpCisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisJCQlp ZiAoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgIT0gTklMKQorCQkJCVBHX1JFVFVSTl9QT0lOVEVS KE5VTEwpOworCQkJaWYgKHNic3JlZi0+cmVmYXNzZ25leHByICE9IE5VTEwpCisJCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CisKKwkJCXN1YnNjcmlwdCA9IChOb2RlICopIGxpbml0aWFsKHNi c3JlZi0+cmVmdXBwZXJpbmRleHByKTsKKwkJCWlmIChleHByVHlwZShzdWJzY3JpcHQpICE9IFRF WFRPSUQpCisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJCWlubmVyX2Z1bmNpZCA9 IEZfSlNPTkJfT0JKRUNUX0ZJRUxEOworCQkJaW5uZXJfYXJncyA9IGxpc3RfbWFrZTIoc2JzcmVm LT5yZWZleHByLCBzdWJzY3JpcHQpOworCQkJbG9jYXRpb24gPSBleHByTG9jYXRpb24oYXJnKTsK KwkJfQorCQllbHNlCisJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKworCQkvKiBPbmx5IHJl d3JpdGUganNvbmJfb2JqZWN0X2ZpZWxkKGpzb25iLCB0ZXh0KTsgdmVyaWZ5IGFyaXR5IHRvbyAq LworCQlpZiAoaW5uZXJfZnVuY2lkICE9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEKQorCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CisJCWlmIChsaXN0X2xlbmd0aChpbm5lcl9hcmdzKSAhPSAyKQor CQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJLyogTWFwIHRoZSBvdXRlciBjYXN0IHRv IHRoZSBjb3JyZXNwb25kaW5nIHR5cGVkIGV4dHJhY3RvciAqLworCQlpZiAoZmV4cHItPmZ1bmNp ZCA9PSBGX05VTUVSSUNfSlNPTkIpCisJCXsKKwkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNP TkJfT0JKRUNUX0ZJRUxEX05VTUVSSUM7CisJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gTlVNRVJJ Q09JRDsKKwkJfQorCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfQk9PTF9KU09OQikKKwkJ eworCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfQk9PTDsKKwkJ CXJlcGxhY2VtZW50X3JldHR5cGUgPSBCT09MT0lEOworCQl9CisJCWVsc2UgaWYgKGZleHByLT5m dW5jaWQgPT0gRl9JTlQ0X0pTT05CKQorCQl7CisJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pT T05CX09CSkVDVF9GSUVMRF9JTlQ0OworCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDRPSUQ7 CisJCX0KKwkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDhfSlNPTkIpCisJCXsKKwkJ CXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lOVDg7CisJCQlyZXBs YWNlbWVudF9yZXR0eXBlID0gSU5UOE9JRDsKKwkJfQorCQllbHNlIGlmIChmZXhwci0+ZnVuY2lk ID09IEZfRkxPQVQ4X0pTT05CKQorCQl7CisJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X09CSkVDVF9GSUVMRF9GTE9BVDg7CisJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gRkxPQVQ4T0lE OworCQl9CisJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQyX0pTT05CKQorCQl7CisJ CQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX09CSkVDVF9GSUVMRF9JTlQyOworCQkJcmVw bGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7CisJCX0KKwkJZWxzZSBpZiAoZmV4cHItPmZ1bmNp ZCA9PSBGX0ZMT0FUNF9KU09OQikKKwkJeworCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09O Ql9PQkpFQ1RfRklFTERfRkxPQVQ0OworCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUNE9J RDsKKwkJfQorCQllbHNlCisJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKworCQkvKiBCdWls ZCB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gY2FsbCAqLworCQluZXdmZXhwciA9IG1ha2VGdW5j RXhwcihyZXBsYWNlbWVudF9mdW5jaWQsIHJlcGxhY2VtZW50X3JldHR5cGUsCisJCQkJCQkJCWlu bmVyX2FyZ3MsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCUNPRVJDRV9FWFBMSUNJ VF9DQUxMKTsKKwkJbmV3ZmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247CisJCXJldCA9IChOb2Rl ICopIG5ld2ZleHByOworCX0KKworCVBHX1JFVFVSTl9QT0lOVEVSKHJldCk7Cit9CisKIERhdHVt CiBqc29uYl9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC0yMDMzLDQgKzIxODUsNCBAQCBK c29uYlVucXVvdGUoSnNvbmIgKmpiKQogCX0KIAllbHNlCiAJCXJldHVybiBKc29uYlRvQ1N0cmlu ZyhOVUxMLCAmamItPnJvb3QsIFZBUlNJWkUoamIpKTsKLX0KK30KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggOTdjYzNkNjAzNDAuLmMy NjA1NzdkODk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC05MjEsNiArOTIxLDE5 OSBAQCBqc29uYl9vYmplY3RfZmllbGRfdGV4dChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVS Tl9OVUxMKCk7CiB9CiAKKy8qCisgKiBUeXBlZCBzY2FsYXIgZXh0cmFjdGlvbiBmcm9tIGpzb25i IG9iamVjdCBmaWVsZHMuCisgKgorICogVGhlc2UgZnVuY3Rpb25zIGV4dHJhY3QgYSB0eXBlZCBz Y2FsYXIgZGlyZWN0bHkgZnJvbSB0aGUgaW4tbWVtb3J5CisgKiBKc29uYlZhbHVlIGZvdW5kIGJ5 IGtleSBsb29rdXAsIHNraXBwaW5nIHRoZSBpbnRlcm1lZGlhdGUgSnNvbmIKKyAqIHNlcmlhbGl6 YXRpb24gdGhhdCBvY2N1cnMgd2l0aCB0aGUgdW5vcHRpbWl6ZWQgY2FzdC1vdmVyLWV4dHJhY3Rp b24gcGF0aC4KKyAqCisgKiBUaGV5IGxpdmUgaGVyZSBhbG9uZ3NpZGUganNvbmJfb2JqZWN0X2Zp ZWxkKCkgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZQorICogc2FtZSBrZXktbG9va3VwIGxvZ2ljIChn ZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKS4KKyAqCisgKiBSZWdpc3RlcmVkIGluIHBnX3By b2MgYXMgb3JkaW5hcnkgU1FMLWNhbGxhYmxlIGJ1aWx0aW5zOyBhbHNvIHNlcnZlIGFzCisgKiBw bGFubmVyIHJld3JpdGUgdGFyZ2V0cyBmb3IganNvbmJfY2FzdF9zdXBwb3J0KCkgaW4ganNvbmIu Yy4KKyAqCisgKiBOVUxMIHNlbWFudGljcyBtYXRjaCB0aGUgZXhpc3RpbmcgY2FzdCBwYXRoOiBh IG1pc3Npbmcga2V5IG9yIGEgSlNPTgorICogbnVsbCB2YWx1ZSBib3RoIHByb2R1Y2UgU1FMIE5V TEw7IGEgdHlwZSBtaXNtYXRjaCByYWlzZXMgRVJST1IuCisgKi8KKworLyoKKyAqIExvb2sgdXAg YSBrZXkgaW4gYSBqc29uYiBvYmplY3QgYW5kIHJldHVybiB0aGUgSnNvbmJWYWx1ZSwgb3IgTlVM TC4KKyAqIFJldHVybnMgTlVMTCAod2l0aG91dCBlcnJvcikgd2hlbiB0aGUgaW5wdXQgaXMgbm90 IGFuIG9iamVjdCwgdGhlIGtleQorICogaXMgYWJzZW50LCBvciB0aGUgdmFsdWUgaXMgSlNPTiBu dWxsLgorICovCitzdGF0aWMgSnNvbmJWYWx1ZSAqCitqc29uYl9vYmplY3RfZmllbGRfbG9va3Vw KEpzb25iICpqYiwgdGV4dCAqa2V5LCBKc29uYlZhbHVlICp2YnVmKQoreworCUpzb25iVmFsdWUg KnY7CisKKwlpZiAoIUpCX1JPT1RfSVNfT0JKRUNUKGpiKSkKKwkJcmV0dXJuIE5VTEw7CisKKwl2 ID0gZ2V0S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5lcigmamItPnJvb3QsCisJCQkJCQkJCQkgVkFS REFUQV9BTlkoa2V5KSwKKwkJCQkJCQkJCSBWQVJTSVpFX0FOWV9FWEhEUihrZXkpLAorCQkJCQkJ CQkJIHZidWYpOworCisJLyogTWlzc2luZyBrZXkgb3IgSlNPTiBudWxsIGJvdGggbWFwIHRvIFNR TCBOVUxMICovCisJaWYgKHYgPT0gTlVMTCB8fCB2LT50eXBlID09IGpidk51bGwpCisJCXJldHVy biBOVUxMOworCisJcmV0dXJuIHY7Cit9CisKKy8qCisgKiBSYWlzZSBhIHR5cGUtbWlzbWF0Y2gg ZXJyb3IgZm9yIHR5cGVkIGZpZWxkIGV4dHJhY3Rpb24uCisgKgorICogVGhlIG1lc3NhZ2Ugd29y ZGluZyBtYXRjaGVzIGNhbm5vdENhc3RKc29uYlZhbHVlKCkgaW4ganNvbmIuYyBzbyB0aGF0Cisg KiB0aGUgb3B0aW1pemVkIGFuZCB1bm9wdGltaXplZCBwYXRocyBwcm9kdWNlIGlkZW50aWNhbCBl cnJvcnMuCisgKi8KK3N0YXRpYyB2b2lkCitqc29uYl9maWVsZF9jYXN0X2Vycm9yKEpzb25iVmFs dWUgKnYsIGNvbnN0IGNoYXIgKnNxbHR5cGUpCit7CisJY29uc3QgY2hhciAqanNvbnR5cGU7CisK Kwlzd2l0Y2ggKHYtPnR5cGUpCisJeworCQljYXNlIGpidk51bGw6CisJCQlqc29udHlwZSA9ICJu dWxsIjsKKwkJCWJyZWFrOworCQljYXNlIGpidlN0cmluZzoKKwkJCWpzb250eXBlID0gInN0cmlu ZyI7CisJCQlicmVhazsKKwkJY2FzZSBqYnZOdW1lcmljOgorCQkJanNvbnR5cGUgPSAibnVtZXJp YyI7CisJCQlicmVhazsKKwkJY2FzZSBqYnZCb29sOgorCQkJanNvbnR5cGUgPSAiYm9vbGVhbiI7 CisJCQlicmVhazsKKwkJY2FzZSBqYnZBcnJheToKKwkJCWpzb250eXBlID0gImFycmF5IjsKKwkJ CWJyZWFrOworCQljYXNlIGpidk9iamVjdDoKKwkJCWpzb250eXBlID0gIm9iamVjdCI7CisJCQli cmVhazsKKwkJY2FzZSBqYnZCaW5hcnk6CisJCQlqc29udHlwZSA9ICJhcnJheSBvciBvYmplY3Qi OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5rbm93biBqc29uYiB0 eXBlOiAlZCIsIChpbnQpIHYtPnR5cGUpOworCQkJanNvbnR5cGUgPSBOVUxMOwkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJIGVycm1zZygiY2Fubm90IGNhc3QganNv bmIgJXMgdG8gdHlwZSAlcyIsCisJCQkJCWpzb250eXBlLCBzcWx0eXBlKSkpOworfQorCisvKgor ICogUGVyLXR5cGUgY29udmVyc2lvbiBoZWxwZXJzIGZvciB0eXBlZCBmaWVsZCBleHRyYWN0aW9u LgorICoKKyAqIEVhY2ggdmFsaWRhdGVzIHRoZSBleHBlY3RlZCBKc29uYlZhbHVlIHR5cGUsIHJh aXNlcyBhIHR5cGUtbWlzbWF0Y2gKKyAqIGVycm9yICh2aWEganNvbmJfZmllbGRfY2FzdF9lcnJv cikgaWYgd3JvbmcsIGFuZCByZXR1cm5zIHRoZSBjb252ZXJ0ZWQKKyAqIHZhbHVlIGFzIERhdHVt LiAgVGhlc2UgYXJlIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGNvbnZlcnNpb24gc2VtYW50aWNzCisg KiBsaXZlOyB0aGUgd3JhcHBlciBtYWNybyBiZWxvdyBpcyBpbnRlbnRpb25hbGx5IGtlcHQgdGhp bi4KKyAqLworc3RhdGljIERhdHVtCitqc29uYl92YWx1ZV90b19udW1lcmljX2RhdHVtKEpzb25i VmFsdWUgKnYpCit7CisJaWYgKHYtPnR5cGUgIT0gamJ2TnVtZXJpYykKKwkJanNvbmJfZmllbGRf Y2FzdF9lcnJvcih2LCAibnVtZXJpYyIpOworCisJcmV0dXJuIE51bWVyaWNHZXREYXR1bShEYXR1 bUdldE51bWVyaWNDb3B5KE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJpYykpKTsKK30KKwor c3RhdGljIERhdHVtCitqc29uYl92YWx1ZV90b19ib29sX2RhdHVtKEpzb25iVmFsdWUgKnYpCit7 CisJaWYgKHYtPnR5cGUgIT0gamJ2Qm9vbCkKKwkJanNvbmJfZmllbGRfY2FzdF9lcnJvcih2LCAi Ym9vbGVhbiIpOworCisJcmV0dXJuIEJvb2xHZXREYXR1bSh2LT52YWwuYm9vbGVhbik7Cit9CisK K3N0YXRpYyBEYXR1bQoranNvbmJfdmFsdWVfdG9faW50NF9kYXR1bShKc29uYlZhbHVlICp2KQor eworCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJCWpzb25iX2ZpZWxkX2Nhc3RfZXJyb3Io diwgImludGVnZXIiKTsKKworCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50 NCwgTnVtZXJpY0dldERhdHVtKHYtPnZhbC5udW1lcmljKSk7Cit9CisKK3N0YXRpYyBEYXR1bQor anNvbmJfdmFsdWVfdG9faW50OF9kYXR1bShKc29uYlZhbHVlICp2KQoreworCWlmICh2LT50eXBl ICE9IGpidk51bWVyaWMpCisJCWpzb25iX2ZpZWxkX2Nhc3RfZXJyb3IodiwgImJpZ2ludCIpOwor CisJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQ4LCBOdW1lcmljR2V0RGF0 dW0odi0+dmFsLm51bWVyaWMpKTsKK30KKworc3RhdGljIERhdHVtCitqc29uYl92YWx1ZV90b19m bG9hdDhfZGF0dW0oSnNvbmJWYWx1ZSAqdikKK3sKKwlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmlj KQorCQlqc29uYl9maWVsZF9jYXN0X2Vycm9yKHYsICJkb3VibGUgcHJlY2lzaW9uIik7CisKKwly ZXR1cm4gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2Zsb2F0OCwgTnVtZXJpY0dldERhdHVt KHYtPnZhbC5udW1lcmljKSk7Cit9CisKK3N0YXRpYyBEYXR1bQoranNvbmJfdmFsdWVfdG9faW50 Ml9kYXR1bShKc29uYlZhbHVlICp2KQoreworCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJ CWpzb25iX2ZpZWxkX2Nhc3RfZXJyb3IodiwgInNtYWxsaW50Iik7CisKKwlyZXR1cm4gRGlyZWN0 RnVuY3Rpb25DYWxsMShudW1lcmljX2ludDIsIE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJp YykpOworfQorCitzdGF0aWMgRGF0dW0KK2pzb25iX3ZhbHVlX3RvX2Zsb2F0NF9kYXR1bShKc29u YlZhbHVlICp2KQoreworCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJCWpzb25iX2ZpZWxk X2Nhc3RfZXJyb3IodiwgInJlYWwiKTsKKworCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51 bWVyaWNfZmxvYXQ0LCBOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKK30KKworLyoK KyAqIFRoaW4td3JhcHBlciBtYWNybyBmb3IgdGhlIGpzb25iX29iamVjdF9maWVsZF88dHlwZT4g ZXh0cmFjdG9yIGZhbWlseS4KKyAqIFJlZHVjZXMgcmVwZXRpdGlvbjogZWFjaCB3cmFwcGVyIGRv ZXMgbG9va3VwLCBOVUxMIGhhbmRsaW5nLCBhbmQgZGVsZWdhdGVzCisgKiB0byBhIHR5cGUtc3Bl Y2lmaWMgY29udmVyc2lvbiBoZWxwZXIgdGhhdCBob2xkcyB0aGUgYWN0dWFsIHNlbWFudGljcy4K KyAqLworI2RlZmluZSBERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEKGZuYW1lLCBjb252 Zm4pIFwKK0RhdHVtIFwKK2ZuYW1lKFBHX0ZVTkNUSU9OX0FSR1MpIFwKK3sgXAorCUpzb25iCSAg ICpqYiA9IFBHX0dFVEFSR19KU09OQl9QKDApOyBcCisJdGV4dAkgICAqa2V5ID0gUEdfR0VUQVJH X1RFWFRfUFAoMSk7IFwKKwlKc29uYlZhbHVlCXZidWY7IFwKKwlKc29uYlZhbHVlICp2OyBcCisJ RGF0dW0JCXJlc3VsdDsgXAorXAorCXYgPSBqc29uYl9vYmplY3RfZmllbGRfbG9va3VwKGpiLCBr ZXksICZ2YnVmKTsgXAorCWlmICh2ID09IE5VTEwpIFwKKwl7IFwKKwkJUEdfRlJFRV9JRl9DT1BZ KGpiLCAwKTsgXAorCQlQR19SRVRVUk5fTlVMTCgpOyBcCisJfSBcCitcCisJcmVzdWx0ID0gY29u dmZuKHYpOyBcCisJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAorCXJldHVybiByZXN1bHQ7IFwK K30KKworREVGSU5FX0pTT05CX09CSkVDVF9GSUVMRF9UWVBFRChqc29uYl9vYmplY3RfZmllbGRf bnVtZXJpYywganNvbmJfdmFsdWVfdG9fbnVtZXJpY19kYXR1bSkKK0RFRklORV9KU09OQl9PQkpF Q1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0X2ZpZWxkX2Jvb2wsIGpzb25iX3ZhbHVlX3RvX2Jv b2xfZGF0dW0pCitERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEKGpzb25iX29iamVjdF9m aWVsZF9pbnQ0LCBqc29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQorREVGSU5FX0pTT05CX09CSkVD VF9GSUVMRF9UWVBFRChqc29uYl9vYmplY3RfZmllbGRfaW50OCwganNvbmJfdmFsdWVfdG9faW50 OF9kYXR1bSkKK0RFRklORV9KU09OQl9PQkpFQ1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0X2Zp ZWxkX2Zsb2F0OCwganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVtKQorREVGSU5FX0pTT05CX09C SkVDVF9GSUVMRF9UWVBFRChqc29uYl9vYmplY3RfZmllbGRfaW50MiwganNvbmJfdmFsdWVfdG9f aW50Ml9kYXR1bSkKK0RFRklORV9KU09OQl9PQkpFQ1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0 X2ZpZWxkX2Zsb2F0NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2RhdHVtKQorCiBEYXR1bQoganNv bl9hcnJheV9lbGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC02MTY3LDQgKzYzNjAsNCBA QCBqc29uX2NoZWNrX211dGFiaWxpdHkoT2lkIHR5cG9pZCwgYm9vbCBpc19qc29uYiwgYm9vbCAq aGFzX211dGFibGUpCiAJCQkJKmhhc19tdXRhYmxlID0gdHJ1ZTsKIAkJCWJyZWFrOwogCX0KLX0K K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCBmYTlhZTc5MDgyYi4uNDA2ZTA4ZGZmZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAt NDc5OCwyNSArNDc5OCwzMCBAQAogICBwcm9zcmMgPT4gJ251bWVyaWNfcGdfbHNuJyB9LAogCiB7 IG9pZCA9PiAnMzU1NicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGJvb2xlYW4nLAotICBw cm9uYW1lID0+ICdib29sJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdq c29uYicsCisgIHByb25hbWUgPT4gJ2Jvb2wnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1 cHBvcnQnLCBwcm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAg cHJvc3JjID0+ICdqc29uYl9ib29sJyB9LAogeyBvaWQgPT4gJzM0NDknLCBkZXNjciA9PiAnY29u dmVydCBqc29uYiB0byBudW1lcmljJywKLSAgcHJvbmFtZSA9PiAnbnVtZXJpYycsIHByb3JldHR5 cGUgPT4gJ251bWVyaWMnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAorICBwcm9uYW1lID0+ICdu dW1lcmljJywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9 PiAnbnVtZXJpYycsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJf bnVtZXJpYycgfSwKIHsgb2lkID0+ICczNDUwJywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8g aW50MicsCi0gIHByb25hbWUgPT4gJ2ludDInLCBwcm9yZXR0eXBlID0+ICdpbnQyJywgcHJvYXJn dHlwZXMgPT4gJ2pzb25iJywKKyAgcHJvbmFtZSA9PiAnaW50MicsIHByb3N1cHBvcnQgPT4gJ2pz b25iX2Nhc3Rfc3VwcG9ydCcsCisgIHByb3JldHR5cGUgPT4gJ2ludDInLCBwcm9hcmd0eXBlcyA9 PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2ludDInIH0sCiB7IG9pZCA9PiAnMzQ1MScs IGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDQnLAotICBwcm9uYW1lID0+ICdpbnQ0Jywg cHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCisgIHByb25hbWUg PT4gJ2ludDQnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1cHBvcnQnLAorICBwcm9yZXR0 eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3JjID0+ICdqc29u Yl9pbnQ0JyB9LAogeyBvaWQgPT4gJzM0NTInLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBp bnQ4JywKLSAgcHJvbmFtZSA9PiAnaW50OCcsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnanNvbmInLAorICBwcm9uYW1lID0+ICdpbnQ4JywgcHJvc3VwcG9ydCA9PiAnanNv bmJfY2FzdF9zdXBwb3J0JywKKyAgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfaW50OCcgfSwKIHsgb2lkID0+ICczNDUzJywg ZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gZmxvYXQ0JywKLSAgcHJvbmFtZSA9PiAnZmxvYXQ0 JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKKyAgcHJv bmFtZSA9PiAnZmxvYXQ0JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKKyAg cHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3Jj ID0+ICdqc29uYl9mbG9hdDQnIH0sCiB7IG9pZCA9PiAnMjU4MCcsIGRlc2NyID0+ICdjb252ZXJ0 IGpzb25iIHRvIGZsb2F0OCcsCi0gIHByb25hbWUgPT4gJ2Zsb2F0OCcsIHByb3JldHR5cGUgPT4g J2Zsb2F0OCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCisgIHByb25hbWUgPT4gJ2Zsb2F0OCcs IHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCisgIHByb3JldHR5cGUgPT4gJ2Zs b2F0OCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfZmxvYXQ4 JyB9LAogCiAjIGZvcm1hdHRpbmcKQEAgLTEyNzY5LDQgKzEyNzc0LDM4IEBACiAgIHByb25hbWUg PT4gJ2hhc2hvaWQ4ZXh0ZW5kZWQnLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywKICAgcHJvYXJndHlw ZXMgPT4gJ29pZDggaW50OCcsIHByb3NyYyA9PiAnaGFzaG9pZDhleHRlbmRlZCcgfSwKIAotXQor CisjIGpzb25iIGNhc3Qgb3B0aW1pemF0aW9uIHN1cHBvcnQgZnVuY3Rpb25zCit7IG9pZCA9PiAn OTk1MCcsIGRlc2NyID0+ICdwbGFubmVyIHN1cHBvcnQgZm9yIGpzb25iIGNhc3RzJywKKyAgcHJv bmFtZSA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAor ICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9y dCcgfSwKK3sgb2lkID0+ICc5OTUzJywgZGVzY3IgPT4gJ2V4dHJhY3QgbnVtZXJpYyBmcm9tIGpz b25iIG9iamVjdCBieSBmaWVsZCBuYW1lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2Zp ZWxkX251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywKKyAgcHJvYXJndHlwZXMgPT4g J2pzb25iIHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixmaWVsZF9uYW1lfScsCisg IHByb3NyYyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMnIH0sCit7IG9pZCA9PiAnOTk1 NCcsIGRlc2NyID0+ICdleHRyYWN0IGJvb2xlYW4gZnJvbSBqc29uYiBvYmplY3QgYnkgZmllbGQg bmFtZScsCisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9maWVsZF9ib29sJywgcHJvcmV0dHlw ZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiB0ZXh0JywgcHJvYXJnbmFtZXMg PT4gJ3tmcm9tX2pzb24sZmllbGRfbmFtZX0nLAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9m aWVsZF9ib29sJyB9LAoreyBvaWQgPT4gJzk5NTUnLCBkZXNjciA9PiAnZXh0cmFjdCBpbnQ0IGZy b20ganNvbmIgb2JqZWN0IGJ5IGZpZWxkIG5hbWUnLAorICBwcm9uYW1lID0+ICdqc29uYl9vYmpl Y3RfZmllbGRfaW50NCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLAorICBwcm9hcmd0eXBlcyA9PiAn anNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGZpZWxkX25hbWV9JywKKyAg cHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfaW50NCcgfSwKK3sgb2lkID0+ICc5OTU2Jywg ZGVzY3IgPT4gJ2V4dHJhY3QgaW50OCBmcm9tIGpzb25iIG9iamVjdCBieSBmaWVsZCBuYW1lJywK KyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX2ludDgnLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zy b21fanNvbixmaWVsZF9uYW1lfScsCisgIHByb3NyYyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX2lu dDgnIH0sCit7IG9pZCA9PiAnOTk1NycsIGRlc2NyID0+ICdleHRyYWN0IGZsb2F0OCBmcm9tIGpz b25iIG9iamVjdCBieSBmaWVsZCBuYW1lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2Zp ZWxkX2Zsb2F0OCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsCisgIHByb2FyZ3R5cGVzID0+ICdq c29uYiB0ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sZmllbGRfbmFtZX0nLAorICBw cm9zcmMgPT4gJ2pzb25iX29iamVjdF9maWVsZF9mbG9hdDgnIH0sCit7IG9pZCA9PiAnOTk4MCcs IGRlc2NyID0+ICdleHRyYWN0IGludDIgZnJvbSBqc29uYiBvYmplY3QgYnkgZmllbGQgbmFtZScs CisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9maWVsZF9pbnQyJywgcHJvcmV0dHlwZSA9PiAn aW50MicsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiB0ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tm cm9tX2pzb24sZmllbGRfbmFtZX0nLAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9maWVsZF9p bnQyJyB9LAoreyBvaWQgPT4gJzk5ODEnLCBkZXNjciA9PiAnZXh0cmFjdCBmbG9hdDQgZnJvbSBq c29uYiBvYmplY3QgYnkgZmllbGQgbmFtZScsCisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9m aWVsZF9mbG9hdDQnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDQnLAorICBwcm9hcmd0eXBlcyA9PiAn anNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGZpZWxkX25hbWV9JywKKyAg cHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0JyB9LAorCitdClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q c29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA0ZTI0 Njc4NTJkYi4uYzMxZmIxMjBkZDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBA IC00NTgsNyArNDU4LDQ4NyBAQCBDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iICgKIElOU0VS VCBJTlRPIHRlc3RfanNvbmIgVkFMVUVTCiAoJ3NjYWxhcicsJyJhIHNjYWxhciInKSwKICgnYXJy YXknLCdbInplcm8iLCAib25lIiwidHdvIixudWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10seyJm MSI6OX1dJyksCi0oJ29iamVjdCcsJ3siZmllbGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIiLCJm aWVsZDMiOm51bGwsICJmaWVsZDQiOiA0LCAiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsi ZjEiOjl9fScpOworKCdvYmplY3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwi ZmllbGQzIjpudWxsLCAiZmllbGQ0IjogNCwgImZpZWxkNSI6IFsxLDIsM10sICJmaWVsZDYiOiB7 ImYxIjo5fSwgImZpZWxkNyI6IHRydWV9Jyk7CistLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlv bjogdGhlIHBsYW5uZXIgcmV3cml0ZXMgKGotPidrZXknKTo6dHlwZSBpbnRvIGEKKy0tIGRpcmVj dCB0eXBlZCBleHRyYWN0b3IgY2FsbCwgY3VycmVudGx5IGZvciBudW1lcmljLCBib29sLCBpbnQy LCBpbnQ0LCBpbnQ4LAorLS0gZmxvYXQ0LCBmbG9hdDguCistLSBTZWN0aW9uIDE6IHBsYW5uZXIg cmV3cml0ZSB2ZXJpZmljYXRpb24gKHJld3JpdHRlbiB0YXJnZXRzKQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Om51bWVyaWMgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29i amVjdF9maWVsZF9udW1lcmljKHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ3Jyk6 OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X29iamVjdF9maWVsZF9ib29sKHRlc3RfanNvbiwgJ2ZpZWxkNyc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X29iamVjdF9maWVsZF9pbnQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmludDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X29iamVjdF9maWVsZF9pbnQ4KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6 IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgodGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAg IEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dz KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDQnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1 dDoganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIodGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAg IEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dz KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAg IE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCh0ZXN0X2pzb24sICdmaWVsZDQnOjp0 ZXh0KQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkK KygzIHJvd3MpCisKKy0tIFNlY3Rpb24gMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24g Zm9yIHN1YnNjcmlwdGluZyBzeW50YXgKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBw Z190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMo dGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90 eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9ib29sKHRl c3RfanNvbiwgJ2ZpZWxkNyc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ0IEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfaW50NCh0ZXN0 X2pzb24sICdmaWVsZDQnOjp0ZXh0KQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUg PSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190 ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX2ludDgodGVzdF9q c29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0g J29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgo dGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90 eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9pbnQyKHRl c3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfZmxv YXQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpz b25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworLS0gU2VjdGlvbiAyOiBjb3Jy ZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSByZXdyaXR0ZW4gcGF0aAorU0VMRUNUICh0ZXN0X2pz b24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAgICAgNAorKDEgcm93KQorCitT RUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ3Jyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOworIGJvb2wgCistLS0tLS0KKyB0CisoMSByb3cpCisKK1NF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisgaW50NCAKKy0tLS0tLQorICAgIDQKKygxIHJvdykKKwor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQ4IAorLS0tLS0tCisgICAgNAorKDEgcm93KQor CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAgIDQK KygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQyIAorLS0tLS0tCisgICAg NAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxvYXQ0IAorLS0tLS0t LS0KKyAgICAgIDQKKygxIHJvdykKKworLS0gU2VjdGlvbiAyYjogY29ycmVjdCBleGVjdXRpb24g dGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10p OjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyB0 ZXN0X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgKHRl c3RfanNvblsnZmllbGQ3J10pOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKKyB0ZXN0X2pzb24gCistLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisgdGVzdF9qc29uIAorLS0tLS0tLS0tLS0KKyAgICAgICAgIDQK KygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgdGVzdF9qc29uIAorLS0tLS0tLS0t LS0KKyAgICAgICAgIDQKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6 ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyB0ZXN0 X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3Rf anNvblsnZmllbGQ0J10pOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKKyB0ZXN0X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAgNAorKDEgcm93KQor CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworIHRlc3RfanNvbiAKKy0tLS0tLS0tLS0tCisgICAg ICAgICA0CisoMSByb3cpCisKKy0tIFNlY3Rpb24gMzogTlVMTCBzZW1hbnRpY3MgKG1pc3Npbmcg a2V5LCBKU09OIG51bGwsIG5vbi1vYmplY3QgaW5wdXQpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAn ZmllbGQzJyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOyAgLS0gSlNPTiBudWxsCisgbnVtZXJpYyAKKy0tLS0tLS0tLQorICAgICAgICAKKygxIHJv dykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6Om51bWVyaWMgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2luZyBrZXkKKyBu dW1lcmljIAorLS0tLS0tLS0tCisgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNv biAtPiAneCcpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnYXJy YXknOyAgLS0gbm9uLW9iamVjdAorIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgICAgCisoMSBy b3cpCisKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6Ym9vbCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGJvb2wgcGF0aAor IGJvb2wgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxk MycpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IEpTT04gbnVsbCwgaW50NCBwYXRoCisgaW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKwor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2luZyBrZXksIGludDQKKyBpbnQ0 IAorLS0tLS0tCisgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQz Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAt LSBKU09OIG51bGwsIGZsb2F0OCBwYXRoCisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAgICAKKygx IHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmZsb2F0OCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwg ZmxvYXQ4CisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkMycpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbCwgaW50MiBwYXRoCisgaW50MiAKKy0tLS0tLQor ICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2lu ZyBrZXksIGludDIKKyBpbnQyIAorLS0tLS0tCisgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQzJyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGZsb2F0NCBwYXRoCisgZmxvYXQ0IAorLS0t LS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0 ZW50Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ0CisgZmxvYXQ0IAorLS0tLS0tLS0KKyAgICAgICAKKygx IHJvdykKKworLS0gU2VjdGlvbiAzYjogTlVMTCBzZW1hbnRpY3MgdGhyb3VnaCBzdWJzY3JpcHRp bmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQzJ10pOjpudW1lcmljIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbAorIHRlc3Rf anNvbiAKKy0tLS0tLS0tLS0tCisgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9q c29uWydub25leGlzdGVudCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleQorIHRlc3RfanNvbiAKKy0tLS0tLS0tLS0t CisgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9qc29uWydub25leGlzdGVudCdd KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IG1pc3Npbmcga2V5LCBmbG9hdDgKKyB0ZXN0X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAg IAorKDEgcm93KQorCistLSBTZWN0aW9uIDQ6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzIChzY2FsYXIg YW5kIGNvbnRhaW5lciB0eXBlcykKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6bnVt ZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJp bmcgdG8gbnVtZXJpYworRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBu dW1lcmljCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmJvb2wgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGJvb2wKK0VSUk9S OiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgYm9vbGVhbgorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIG51bWVyaWMKK0VSUk9SOiAgY2Fubm90IGNhc3Qg anNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgbnVtZXJpYworU0VMRUNUICh0ZXN0X2pzb24g LT4gJ2ZpZWxkMScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsgIC0tIHN0cmluZyB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmlu ZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50OCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8g aW50OAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBiaWdpbnQKK1NF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBmbG9hdDgKK0VSUk9SOiAgY2Fu bm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgZG91YmxlIHByZWNpc2lvbgorU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGludDQKK0VSUk9SOiAgY2Fubm90IGNhc3QganNv bmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgaW50ZWdlcgorU0VMRUNUICh0ZXN0X2pzb24gLT4g J2ZpZWxkNScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ4CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5 IG9yIG9iamVjdCB0byB0eXBlIGRvdWJsZSBwcmVjaXNpb24KK1NFTEVDVCAodGVzdF9qc29uIC0+ ICdmaWVsZDEnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBzdHJpbmcgdG8gaW50MgorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcg dG8gdHlwZSBzbWFsbGludAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpmbG9hdDQg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRv IGZsb2F0NAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSByZWFsCitT RUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ1Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gaW50MgorRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBzbWFsbGludAorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpz b25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIHJlYWwKKy0tIFNlY3Rpb24gNGI6IHR5cGUtbWlz bWF0Y2ggZXJyb3IgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNv blsnZmllbGQxJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIG51bWVyaWMKK1NFTEVDVCAodGVzdF9qc29uWydmaWVsZDEnXSk6Omlu dDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5n IHRvIGludDgKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgYmlnaW50 CistLSBTZWN0aW9uIDU6IGRpcmVjdCBjYWxscyB0byB0eXBlZCBleHRyYWN0b3IgYnVpbHRpbnMK K1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYygneyJhIjogMX0nOjpqc29uYiwgJ2En KTsKKyBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6IDMuMTR9Jzo6anNvbmIsICdhJyk7CisganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVj dF9maWVsZF9ib29sKCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9m aWVsZF9ib29sIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUIGpzb25iX29iamVjdF9maWVsZF9ib29sKCd7ImEiOiBmYWxzZX0nOjpqc29uYiwgJ2EnKTsK KyBqc29uYl9vYmplY3RfZmllbGRfYm9vbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBm CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogNDJ9Jzo6 anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIGpz b25iX29iamVjdF9maWVsZF9pbnQ4KCd7ImEiOiA5ODc2NTQzMjEwfSc6Ompzb25iLCAnYScpOwor IGpzb25iX29iamVjdF9maWVsZF9pbnQ4IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICA5ODc2NTQzMjEwCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmll bGRfZmxvYXQ4KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9maWVs ZF9mbG9hdDggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJh IjogNDJ9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKwor U0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAzfSc6Ompzb25iLCAnYScpOwor IGpzb25iX29iamVjdF9maWVsZF9pbnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAzCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmll bGRfZmxvYXQ0KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9maWVs ZF9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7 ImEiOiAxLjV9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAxLjUKKygx IHJvdykKKworLS0gZGlyZWN0IGNhbGxzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIGpzb25iX29i amVjdF9maWVsZF9udW1lcmljKCd7ImEiOiAxfSc6Ompzb25iLCAnbWlzc2luZycpOworIGpzb25i X29iamVjdF9maWVsZF9udW1lcmljIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfbnVtZXJpYygneyJhIjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKKyBqc29uYl9vYmplY3Rf ZmllbGRfbnVtZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Jv b2woJ3siYSI6IHRydWV9Jzo6anNvbmIsICdtaXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxk X2Jvb2wgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBq c29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogMX0nOjpqc29uYiwgJ21pc3NpbmcnKTsKKyBq c29uYl9vYmplY3RfZmllbGRfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxk X2ludDQoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2lu dDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IDEuMH0n Ojpqc29uYiwgJ21pc3NpbmcnKTsKKyBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDF9Jzo6anNvbmIsICdt aXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIGpzb25i X29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworIGpzb25iX29i amVjdF9maWVsZF9pbnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0 KCd7ImEiOiAxLjB9Jzo6anNvbmIsICdtaXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zs b2F0NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAKKygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6 IG51bGx9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworLS0gZGlyZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25i X29iamVjdF9maWVsZF9udW1lcmljKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7CitFUlJP UjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIG51bWVyaWMKK1NFTEVDVCBqc29u Yl9vYmplY3RfZmllbGRfYm9vbCgneyJhIjogMX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgY2Fu bm90IGNhc3QganNvbmIgbnVtZXJpYyB0byB0eXBlIGJvb2xlYW4KK1NFTEVDVCBqc29uYl9vYmpl Y3RfZmllbGRfbnVtZXJpYygneyJhIjogeyJ4IjoxfX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRh aW5lciB0byBzY2FsYXIKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0 IHRvIHR5cGUgbnVtZXJpYworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ0KCd7ImEiOiAi dGV4dCJ9Jzo6anNvbmIsICdhJyk7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0 byB0eXBlIGludGVnZXIKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50OCgneyJhIjogdHJ1 ZX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYm9vbGVhbiB0byB0 eXBlIGJpZ2ludAorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IFsxLDJd fSc6Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0OAorRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6ICJ0ZXh0In0nOjpqc29uYiwgJ2EnKTsg IC0tIHN0cmluZyB0byBpbnQyCitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0 eXBlIHNtYWxsaW50CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogdHJ1 ZX0nOjpqc29uYiwgJ2EnKTsgIC0tIGJvb2wgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0 IGpzb25iIGJvb2xlYW4gdG8gdHlwZSByZWFsCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2lu dDIoJ3siYSI6IFsxLDJdfSc6Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGludDIKK0VS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgc21hbGxpbnQK K1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiB7IngiOjF9fSc6Ompzb25i LCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0NAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29u YiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSByZWFsCistLSBkaXJlY3QgY2FsbHM6IGludGVnZXIg b3ZlcmZsb3cKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogOTk5OTk5OTk5 OX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgaW50ZWdlciBvdXQgb2YgcmFuZ2UKKy0tIGRpcmVj dCBjYWxsczogaW50MiBvdmVyZmxvdworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiA5OTk5OX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgc21hbGxpbnQgb3V0IG9mIHJhbmdl CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ3NjYWxhcic7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCkBAIC01ODYsNyArMTA2Niw4IEBA IFNFTEVDVCBqc29uYl9vYmplY3Rfa2V5cyh0ZXN0X2pzb24pIEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKICBmaWVsZDQKICBmaWVsZDUKICBmaWVsZDYKLSg2IHJv d3MpCisgZmllbGQ3CisoNyByb3dzKQogCiAtLSBudWxscwogU0VMRUNUICh0ZXN0X2pzb24tPidm aWVsZDMnKSBJUyBOVUxMIEFTIGV4cGVjdF9mYWxzZSBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u Yi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggZDI4ZWQxYzFlODUu LjYxYzU2NzExMGZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNTUsNyArMTU1LDEyMyBA QCBDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iICgKIElOU0VSVCBJTlRPIHRlc3RfanNvbmIg VkFMVUVTCiAoJ3NjYWxhcicsJyJhIHNjYWxhciInKSwKICgnYXJyYXknLCdbInplcm8iLCAib25l IiwidHdvIixudWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10seyJmMSI6OX1dJyksCi0oJ29iamVj dCcsJ3siZmllbGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIiLCJmaWVsZDMiOm51bGwsICJmaWVs ZDQiOiA0LCAiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsiZjEiOjl9fScpOworKCdvYmpl Y3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwiZmllbGQzIjpudWxsLCAiZmll bGQ0IjogNCwgImZpZWxkNSI6IFsxLDIsM10sICJmaWVsZDYiOiB7ImYxIjo5fSwgImZpZWxkNyI6 IHRydWV9Jyk7CisKKy0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiB0aGUgcGxhbm5lciBy ZXdyaXRlcyAoai0+J2tleScpOjp0eXBlIGludG8gYQorLS0gZGlyZWN0IHR5cGVkIGV4dHJhY3Rv ciBjYWxsLCBjdXJyZW50bHkgZm9yIG51bWVyaWMsIGJvb2wsIGludDIsIGludDQsIGludDgsCist LSBmbG9hdDQsIGZsb2F0OC4KKworLS0gU2VjdGlvbiAxOiBwbGFubmVyIHJld3JpdGUgdmVyaWZp Y2F0aW9uIChyZXdyaXR0ZW4gdGFyZ2V0cykKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNycpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3Rf anNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24gMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRp b24gZm9yIHN1YnNjcmlwdGluZyBzeW50YXgKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCAodGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0 X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29u WydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29i amVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydm aWVsZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0 J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor CistLSBTZWN0aW9uIDI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2ggdGhlIHJld3JpdHRlbiBw YXRoCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2Zp ZWxkNycpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsK K1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmludDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQy IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVDVCAodGVz dF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKKworLS0gU2VjdGlvbiAyYjogY29ycmVjdCBleGVjdXRpb24gdGhyb3Vn aCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpudW1l cmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVDVCAo dGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvblsn ZmllbGQ0J10pOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsKK1NFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10p OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVD VCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24gMzogTlVMTCBzZW1hbnRpY3MgKG1pc3Np bmcga2V5LCBKU09OIG51bGwsIG5vbi1vYmplY3QgaW5wdXQpCitTRUxFQ1QgKHRlc3RfanNvbiAt PiAnZmllbGQzJyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOyAgLS0gSlNPTiBudWxsCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9uZXhpc3RlbnQn KTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAt LSBtaXNzaW5nIGtleQorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ3gnKTo6bnVtZXJpYyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ2FycmF5JzsgIC0tIG5vbi1vYmplY3QKK1NFTEVD VCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGJvb2wgcGF0aAorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkMycpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbCwgaW50NCBwYXRoCitTRUxFQ1QgKHRlc3RfanNvbiAt PiAnbm9uZXhpc3RlbnQnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwgaW50NAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2Zp ZWxkMycpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OyAgLS0gSlNPTiBudWxsLCBmbG9hdDggcGF0aAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4 aXN0ZW50Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ4CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQz Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0g SlNPTiBudWxsLCBpbnQyIHBhdGgKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdub25leGlzdGVudCcp OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIG1p c3Npbmcga2V5LCBpbnQyCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQzJyk6OmZsb2F0NCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGws IGZsb2F0NCBwYXRoCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9uZXhpc3RlbnQnKTo6ZmxvYXQ0 IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIG1pc3Npbmcg a2V5LCBmbG9hdDQKKworLS0gU2VjdGlvbiAzYjogTlVMTCBzZW1hbnRpY3MgdGhyb3VnaCBzdWJz Y3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQzJ10pOjpudW1lcmljIEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbAor U0VMRUNUICh0ZXN0X2pzb25bJ25vbmV4aXN0ZW50J10pOjpudW1lcmljIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIG1pc3Npbmcga2V5CitTRUxFQ1QgKHRl c3RfanNvblsnbm9uZXhpc3RlbnQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ4CisKKy0tIFNlY3Rpb24g NDogdHlwZS1taXNtYXRjaCBlcnJvcnMgKHNjYWxhciBhbmQgY29udGFpbmVyIHR5cGVzKQorU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCitTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQxJyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGJvb2wKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDUnKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBhcnJheSB0byBudW1lcmljCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6 OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3Ry aW5nIHRvIGludDQKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gaW50OAor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGZsb2F0OAorU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGludDQKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDUnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIGFycmF5IHRvIGZsb2F0OAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpp bnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmlu ZyB0byBpbnQyCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmZsb2F0NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gZmxvYXQ0 CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ1Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gaW50MgorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ0CisKKy0tIFNlY3Rpb24gNGI6IHR5cGUt bWlzbWF0Y2ggZXJyb3IgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3Rf anNvblsnZmllbGQxJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCitTRUxFQ1QgKHRlc3RfanNvblsnZmll bGQxJ10pOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0Jzsg IC0tIHN0cmluZyB0byBpbnQ4CisKKy0tIFNlY3Rpb24gNTogZGlyZWN0IGNhbGxzIHRvIHR5cGVk IGV4dHJhY3RvciBidWlsdGlucworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmljKCd7 ImEiOiAxfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmlj KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9i b29sKCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9ib29sKCd7ImEiOiBmYWxzZX0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfaW50NCgneyJhIjogNDJ9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2ludDgoJ3siYSI6IDk4NzY1NDMyMTB9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2Zsb2F0OCgneyJhIjogMy4xNH0nOjpqc29uYiwgJ2EnKTsKK1NFTEVD VCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogNDJ9Jzo6anNvbmIsICdhJyk7CitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDN9Jzo6anNvbmIsICdhJyk7CitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMy4xNH0nOjpqc29uYiwgJ2EnKTsK K1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiAxLjV9Jzo6anNvbmIsICdh Jyk7CistLSBkaXJlY3QgY2FsbHM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX251bWVyaWMoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7CitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7CitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2Jvb2woJ3siYSI6IHRydWV9Jzo6anNvbmIsICdtaXNzaW5n Jyk7CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IDF9Jzo6anNvbmIsICdt aXNzaW5nJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IG51bGx9Jzo6 anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0OCgneyJhIjogMS4w fSc6Ompzb25iLCAnbWlzc2luZycpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiAxfSc6Ompzb25iLCAnbWlzc2luZycpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9p bnQyKCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9mbG9hdDQoJ3siYSI6IDEuMH0nOjpqc29uYiwgJ21pc3NpbmcnKTsKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworLS0gZGlyZWN0 IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9u dW1lcmljKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2Jvb2woJ3siYSI6IDF9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX251bWVyaWMoJ3siYSI6IHsieCI6MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWlu ZXIgdG8gc2NhbGFyCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6ICJ0ZXh0 In0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50OCgneyJhIjog dHJ1ZX0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4KCd7 ImEiOiBbMSwyXX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDgKK1NFTEVD VCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogInRleHQifSc6Ompzb25iLCAnYScpOyAg LS0gc3RyaW5nIHRvIGludDIKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEi OiB0cnVlfSc6Ompzb25iLCAnYScpOyAgLS0gYm9vbCB0byBmbG9hdDQKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfaW50MigneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWlu ZXIgdG8gaW50MgorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IHsieCI6 MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ0CistLSBkaXJlY3QgY2Fs bHM6IGludGVnZXIgb3ZlcmZsb3cKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJh IjogOTk5OTk5OTk5OX0nOjpqc29uYiwgJ2EnKTsKKy0tIGRpcmVjdCBjYWxsczogaW50MiBvdmVy ZmxvdworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiA5OTk5OX0nOjpqc29u YiwgJ2EnKTsKIAogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CkBAIC0xNjE0LDQgKzE3MzAsNCBAQCBz ZWxlY3QgKCdbeyJuYW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0nOjpqc29uYikubmFt ZTsKIHNlbGVjdCAoJ3RydWUnOjpqc29uYik6OmJvb2w7CiBzZWxlY3QgKCd0cnVlJzo6anNvbmIp LmJvb2w7CiBzZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompzb25iKTo6dGV4dDsKLXNlbGVj dCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6anNvbmIpLnRleHQ7CitzZWxlY3QgKCd7InRleHQiOiAi aGVsbG8ifSc6Ompzb25iKS50ZXh0OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu NTIuMAoK --0000000000008cd82706507710bc Content-Type: application/octet-stream; name="v6-0005-jsonb-optimize-jsonpath-first-casts-to-scalar-typ.patch" Content-Disposition: attachment; filename="v6-0005-jsonb-optimize-jsonpath-first-casts-to-scalar-typ.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mohnprhc4 RnJvbSAyYjc1MGZjNzRkMmY4ZmJjMWJhMDcwY2NmMzE3YzExMmIzNWQ1OWU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IEZyaSwgMTAgQXByIDIwMjYgMTQ6MzQ6MjQgLTA3MDAKU3ViamVjdDogW1BBVENIIHY2IDUvNV0g anNvbmI6IG9wdGltaXplIGpzb25wYXRoLWZpcnN0IGNhc3RzIHRvIHNjYWxhciB0eXBlcwoKRXh0 ZW5kIHRoZSBleGlzdGluZyBzdXBwb3J0LWZ1bmN0aW9uIHJld3JpdGUgdG8ganNvbmJfcGF0aF9x dWVyeV9maXJzdAphbmQganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiBzbyBjYXN0cyBhcmUgcmV3 cml0dGVuIGRpcmVjdGx5IHRvCmV4cGxpY2l0IHR5cGVkIGV4dHJhY3RvciBmdW5jdGlvbnMuCgpU aGlzIHBhdGNoIHN1cHBvcnRzIG51bWVyaWMsIGJvb2wsIGludDIsIGludDQsIGludDgsIGZsb2F0 NCwgYW5kCmZsb2F0OCwgYW5kIGxlYXZlcyBqc29uYl9wYXRoX3F1ZXJ5IG91dCBvZiBzY29wZS4K LS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICAgIHwgMTAyICsrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgICAgfCAgMTcgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgfCAxMTMgKysrKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICAgICB8ICA3MyArKysKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5j cy5oICAgICAgICAgfCAgMTAgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQg ICB8IDg0NiArKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv anNvbmIuc3FsICAgICAgICB8IDIyOSArKysrKy0tCiA3IGZpbGVzIGNoYW5nZWQsIDEwOTEgaW5z ZXJ0aW9ucygrKSwgMjk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKaW5kZXggZDVj MDg3MWEyMTMuLjI5ODU3NzdmMWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwpAQCAtMTgzNiw2ICsx ODM2LDggQEAgY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNvbnN0IGNo YXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKICAqICAgLSBqc29uYl9hcnJheV9lbGVtZW50 KGosIGlkeCkgICAvICBqIC0+IGlkeCAgICAvICBqW2lkeF0KICAqICAgLSBqc29uYl9leHRyYWN0 X3BhdGgoaiwgLi4uKSAgICAvICBqICM+ICd7YSxifScKICAqICAgLSBtdWx0aS1zdWJzY3JpcHQg Y2hhaW5zICAgICAgICAgalsnYSddWydiJ10sIGpbJ2EnXVswXSwgZXRjLgorICogICAtIGpzb25i X3BhdGhfcXVlcnlfZmlyc3QoaiwgcGF0aCBbLCB2YXJzIFssIHNpbGVudF1dKQorICogICAtIGpz b25iX3BhdGhfcXVlcnlfZmlyc3RfdHooaiwgcGF0aCBbLCB2YXJzIFssIHNpbGVudF1dKQogICov CiBEYXR1bQoganNvbmJfY2FzdF9zdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0yMDEyLDEz ICsyMDE0LDEzIEBAIGpzb25iX2Nhc3Rfc3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQogCQkvKgog CQkgKiBWZXJpZnkgdGhlIGlubmVyIGV4dHJhY3Rpb24gZnVuY3Rpb24gYW5kIG1hcCB0aGUgb3V0 ZXIgY2FzdCB0byB0aGUKIAkJICogY29ycmVzcG9uZGluZyB0eXBlZCBleHRyYWN0b3IuICBFYWNo IHN1cHBvcnRlZCBleHRyYWN0aW9uIGZhbWlseQotCQkgKiBoYXMgaXRzIG93biBzZXQgb2YgdHlw ZWQgcmV3cml0ZSB0YXJnZXRzLgorCQkgKiBoYXMgaXRzIG93biBzZXQgb2YgdHlwZWQgcmV3cml0 ZSB0YXJnZXRzIGFuZCBleHBlY3RlZCBhcmcgY291bnQuCiAJCSAqLwotCQlpZiAobGlzdF9sZW5n dGgoaW5uZXJfYXJncykgIT0gMikKLQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwotCiAJCWlm IChpbm5lcl9mdW5jaWQgPT0gRl9KU09OQl9PQkpFQ1RfRklFTEQpCiAJCXsKKwkJCWlmIChsaXN0 X2xlbmd0aChpbm5lcl9hcmdzKSAhPSAyKQorCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwor CiAJCQlpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX05VTUVSSUNfSlNPTkIpCiAJCQl7CiAJCQkJcmVw bGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfTlVNRVJJQzsKQEAgLTIwNTks NiArMjA2MSw5IEBAIGpzb25iX2Nhc3Rfc3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQogCQl9CiAJ CWVsc2UgaWYgKGlubmVyX2Z1bmNpZCA9PSBGX0pTT05CX0FSUkFZX0VMRU1FTlQpCiAJCXsKKwkJ CWlmIChsaXN0X2xlbmd0aChpbm5lcl9hcmdzKSAhPSAyKQorCQkJCVBHX1JFVFVSTl9QT0lOVEVS KE5VTEwpOworCiAJCQlpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX05VTUVSSUNfSlNPTkIpCiAJCQl7 CiAJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9BUlJBWV9FTEVNRU5UX05VTUVSSUM7 CkBAIC0yMDk5LDYgKzIxMDQsOSBAQCBqc29uYl9jYXN0X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJH UykKIAkJfQogCQllbHNlIGlmIChpbm5lcl9mdW5jaWQgPT0gRl9KU09OQl9FWFRSQUNUX1BBVEgp CiAJCXsKKwkJCWlmIChsaXN0X2xlbmd0aChpbm5lcl9hcmdzKSAhPSAyKQorCQkJCVBHX1JFVFVS Tl9QT0lOVEVSKE5VTEwpOworCiAJCQlpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX05VTUVSSUNfSlNP TkIpCiAJCQl7CiAJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9FWFRSQUNUX1BBVEhf TlVNRVJJQzsKQEAgLTIxMzcsNiArMjE0NSw5MiBAQCBqc29uYl9jYXN0X3N1cHBvcnQoUEdfRlVO Q1RJT05fQVJHUykKIAkJCWVsc2UKIAkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKIAkJfQor CQllbHNlIGlmIChpbm5lcl9mdW5jaWQgPT0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUKQorCQl7 CisJCQlpZiAobGlzdF9sZW5ndGgoaW5uZXJfYXJncykgIT0gNCkKKwkJCQlQR19SRVRVUk5fUE9J TlRFUihOVUxMKTsKKworCQkJaWYgKGZleHByLT5mdW5jaWQgPT0gRl9OVU1FUklDX0pTT05CKQor CQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9O VU1FUklDOworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBOVU1FUklDT0lEOworCQkJfQorCQkJ ZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0JPT0xfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFj ZW1lbnRfZnVuY2lkID0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX0JPT0w7CisJCQkJcmVwbGFj ZW1lbnRfcmV0dHlwZSA9IEJPT0xPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lk ID09IEZfSU5UNF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X1BBVEhfUVVFUllfRklSU1RfSU5UNDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UNE9J RDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ4X0pTT05CKQorCQkJ eworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9JTlQ4 OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ4T0lEOworCQkJfQorCQkJZWxzZSBpZiAo ZmV4cHItPmZ1bmNpZCA9PSBGX0ZMT0FUOF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9m dW5jaWQgPSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1RfRkxPQVQ4OworCQkJCXJlcGxhY2VtZW50 X3JldHR5cGUgPSBGTE9BVDhPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09 IEZfSU5UMl9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX1BB VEhfUVVFUllfRklSU1RfSU5UMjsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UMk9JRDsK KwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9GTE9BVDRfSlNPTkIpCisJCQl7 CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX0ZMT0FU NDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gRkxPQVQ0T0lEOworCQkJfQorCQkJZWxzZQor CQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOworCQl9CisJCWVsc2UgaWYgKGlubmVyX2Z1bmNp ZCA9PSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFopCisJCXsKKwkJCWlmIChsaXN0X2xlbmd0 aChpbm5lcl9hcmdzKSAhPSA0KQorCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOworCisJCQlp ZiAoZmV4cHItPmZ1bmNpZCA9PSBGX05VTUVSSUNfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1l bnRfZnVuY2lkID0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX05VTUVSSUM7CisJCQkJcmVw bGFjZW1lbnRfcmV0dHlwZSA9IE5VTUVSSUNPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ ZnVuY2lkID09IEZfQk9PTF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBG X0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFpfQk9PTDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBl ID0gQk9PTE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ0X0pT T05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9G SVJTVF9UWl9JTlQ0OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ0T0lEOworCQkJfQor CQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDhfSlNPTkIpCisJCQl7CisJCQkJcmVw bGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX0lOVDg7CisJCQkJ cmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDhPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ ZnVuY2lkID09IEZfRkxPQVQ4X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9 IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9GTE9BVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0 dHlwZSA9IEZMT0FUOE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9J TlQyX0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9R VUVSWV9GSVJTVF9UWl9JTlQyOworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQyT0lEOwor CQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0ZMT0FUNF9KU09OQikKKwkJCXsK KwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFpfRkxP QVQ0OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBGTE9BVDRPSUQ7CisJCQl9CisJCQllbHNl CisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisJCX0KIAkJZWxzZQogCQkJUEdfUkVUVVJO X1BPSU5URVIoTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwppbmRleCBiM2ZkMWRm YjYzMS4uMzJjZGI1YzYxYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKQEAgLTk2OSw3 ICs5NjksNyBAQCBqc29uYl9vYmplY3RfZmllbGRfbG9va3VwKEpzb25iICpqYiwgdGV4dCAqa2V5 LCBKc29uYlZhbHVlICp2YnVmKQogICogVGhlIG1lc3NhZ2Ugd29yZGluZyBtYXRjaGVzIGNhbm5v dENhc3RKc29uYlZhbHVlKCkgaW4ganNvbmIuYyBzbyB0aGF0CiAgKiB0aGUgb3B0aW1pemVkIGFu ZCB1bm9wdGltaXplZCBwYXRocyBwcm9kdWNlIGlkZW50aWNhbCBlcnJvcnMuCiAgKi8KLXN0YXRp YyB2b2lkCit2b2lkCiBqc29uYl9maWVsZF9jYXN0X2Vycm9yKEpzb25iVmFsdWUgKnYsIGNvbnN0 IGNoYXIgKnNxbHR5cGUpCiB7CiAJY29uc3QgY2hhciAqanNvbnR5cGU7CkBAIC0xMDE2LDcgKzEw MTYsNyBAQCBqc29uYl9maWVsZF9jYXN0X2Vycm9yKEpzb25iVmFsdWUgKnYsIGNvbnN0IGNoYXIg KnNxbHR5cGUpCiAgKiB2YWx1ZSBhcyBEYXR1bS4gIFRoZXNlIGFyZSB0aGUgb25seSBwbGFjZSB3 aGVyZSBjb252ZXJzaW9uIHNlbWFudGljcwogICogbGl2ZTsgdGhlIHdyYXBwZXIgbWFjcm8gYmVs b3cgaXMgaW50ZW50aW9uYWxseSBrZXB0IHRoaW4uCiAgKi8KLXN0YXRpYyBEYXR1bQorRGF0dW0K IGpzb25iX3ZhbHVlX3RvX251bWVyaWNfZGF0dW0oSnNvbmJWYWx1ZSAqdikKIHsKIAlpZiAodi0+ dHlwZSAhPSBqYnZOdW1lcmljKQpAQCAtMTAyNSw3ICsxMDI1LDcgQEAganNvbmJfdmFsdWVfdG9f bnVtZXJpY19kYXR1bShKc29uYlZhbHVlICp2KQogCXJldHVybiBOdW1lcmljR2V0RGF0dW0oRGF0 dW1HZXROdW1lcmljQ29weShOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKSk7CiB9CiAK LXN0YXRpYyBEYXR1bQorRGF0dW0KIGpzb25iX3ZhbHVlX3RvX2Jvb2xfZGF0dW0oSnNvbmJWYWx1 ZSAqdikKIHsKIAlpZiAodi0+dHlwZSAhPSBqYnZCb29sKQpAQCAtMTAzNCw3ICsxMDM0LDcgQEAg anNvbmJfdmFsdWVfdG9fYm9vbF9kYXR1bShKc29uYlZhbHVlICp2KQogCXJldHVybiBCb29sR2V0 RGF0dW0odi0+dmFsLmJvb2xlYW4pOwogfQogCi1zdGF0aWMgRGF0dW0KK0RhdHVtCiBqc29uYl92 YWx1ZV90b19pbnQ0X2RhdHVtKEpzb25iVmFsdWUgKnYpCiB7CiAJaWYgKHYtPnR5cGUgIT0gamJ2 TnVtZXJpYykKQEAgLTEwNDMsNyArMTA0Myw3IEBAIGpzb25iX3ZhbHVlX3RvX2ludDRfZGF0dW0o SnNvbmJWYWx1ZSAqdikKIAlyZXR1cm4gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2ludDQs IE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJpYykpOwogfQogCi1zdGF0aWMgRGF0dW0KK0Rh dHVtCiBqc29uYl92YWx1ZV90b19pbnQ4X2RhdHVtKEpzb25iVmFsdWUgKnYpCiB7CiAJaWYgKHYt PnR5cGUgIT0gamJ2TnVtZXJpYykKQEAgLTEwNTIsNyArMTA1Miw3IEBAIGpzb25iX3ZhbHVlX3Rv X2ludDhfZGF0dW0oSnNvbmJWYWx1ZSAqdikKIAlyZXR1cm4gRGlyZWN0RnVuY3Rpb25DYWxsMShu dW1lcmljX2ludDgsIE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJpYykpOwogfQogCi1zdGF0 aWMgRGF0dW0KK0RhdHVtCiBqc29uYl92YWx1ZV90b19mbG9hdDhfZGF0dW0oSnNvbmJWYWx1ZSAq dikKIHsKIAlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmljKQpAQCAtMTA2MCw3ICsxMDYwLDggQEAg anNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVtKEpzb25iVmFsdWUgKnYpCiAKIAlyZXR1cm4gRGly ZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2Zsb2F0OCwgTnVtZXJpY0dldERhdHVtKHYtPnZhbC5u dW1lcmljKSk7CiB9Ci1zdGF0aWMgRGF0dW0KKworRGF0dW0KIGpzb25iX3ZhbHVlX3RvX2ludDJf ZGF0dW0oSnNvbmJWYWx1ZSAqdikKIHsKIAlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmljKQpAQCAt MTA2OSw3ICsxMDcwLDcgQEAganNvbmJfdmFsdWVfdG9faW50Ml9kYXR1bShKc29uYlZhbHVlICp2 KQogCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50MiwgTnVtZXJpY0dldERh dHVtKHYtPnZhbC5udW1lcmljKSk7CiB9CiAKLXN0YXRpYyBEYXR1bQorRGF0dW0KIGpzb25iX3Zh bHVlX3RvX2Zsb2F0NF9kYXR1bShKc29uYlZhbHVlICp2KQogewogCWlmICh2LT50eXBlICE9IGpi dk51bWVyaWMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhl Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCAwZWM5YjRk ZjJlZi4uNTQyYzlhYzcyMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpA QCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRp bHMvZm9ybWF0dGluZy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKKyNpbmNsdWRlICJ1dGls cy9qc29uZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC02ODcsNiAr Njg4LDExOCBAQCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ cmV0dXJuIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50ZXJuYWwoZmNpbmZvLCB0cnVlKTsKIH0K IAorLyoKKyAqIFdyYXBwZXIgbWFjcm8gZm9yIHRoZSBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0Xzx0 eXBlPiBleHRyYWN0b3IgZmFtaWx5LgorICoKKyAqIEludm9rZXMgdGhlIGpzb25wYXRoIGV4ZWN1 dGlvbiBtYWNoaW5lcnkgYW5kIGNvbnZlcnRzIHRoZSBmaXJzdCByZXN1bHQKKyAqIGRpcmVjdGx5 IHRvIHRoZSB0YXJnZXQgc2NhbGFyIHR5cGUuICBUaGUgSnNvblZhbHVlTGlzdCBpcyBrZXB0IG9u IHRoZQorICogY2FsbGVyJ3Mgc3RhY2sgc28gdGhhdCB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBK c29uVmFsdWVMaXN0SGVhZCgpIHJlbWFpbnMKKyAqIHZhbGlkIHRocm91Z2ggdGhlIGNvbnZlcnNp b24gY2FsbC4KKyAqLworI2RlZmluZSBERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWVBF RChmbmFtZSwgY29udmZuKSBcCitEYXR1bSBcCitmbmFtZShQR19GVU5DVElPTl9BUkdTKSBcCit7 IFwKKwlKc29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgwKTsgXAorCUpzb25QYXRoICAg KmpwID0gUEdfR0VUQVJHX0pTT05QQVRIX1AoMSk7IFwKKwlKc29uYgkgICAqdmFycyA9IFBHX0dF VEFSR19KU09OQl9QKDIpOyBcCisJYm9vbAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0woMyk7IFwK KwlKc29uVmFsdWVMaXN0IGZvdW5kOyBcCisJSnNvbmJWYWx1ZSAqdjsgXAorCURhdHVtCQlyZXN1 bHQ7IFwKK1wKKwlKc29uVmFsdWVMaXN0SW5pdCgmZm91bmQpOyBcCitcCisJKHZvaWQpIGV4ZWN1 dGVKc29uUGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYiwgXAorCQkJ CQkJICAgY291bnRWYXJpYWJsZXNGcm9tSnNvbmIsIFwKKwkJCQkJCSAgIGpiLCAhc2lsZW50LCAm Zm91bmQsIGZhbHNlKTsgXAorXAorCWlmIChKc29uVmFsdWVMaXN0SXNFbXB0eSgmZm91bmQpKSBc CisJeyBcCisJCVBHX0ZSRUVfSUZfQ09QWShqYiwgMCk7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKGpw LCAxKTsgXAorCQlQR19GUkVFX0lGX0NPUFkodmFycywgMik7IFwKKwkJUEdfUkVUVVJOX05VTEwo KTsgXAorCX0gXAorXAorCXYgPSBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpOyBcCisJaWYgKHYt PnR5cGUgPT0gamJ2TnVsbCkgXAorCXsgXAorCQlQR19GUkVFX0lGX0NPUFkoamIsIDApOyBcCisJ CVBHX0ZSRUVfSUZfQ09QWShqcCwgMSk7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKHZhcnMsIDIpOyBc CisJCVBHX1JFVFVSTl9OVUxMKCk7IFwKKwl9IFwKK1wKKwlyZXN1bHQgPSBjb252Zm4odik7IFwK KwlQR19GUkVFX0lGX0NPUFkoamIsIDApOyBcCisJUEdfRlJFRV9JRl9DT1BZKGpwLCAxKTsgXAor CVBHX0ZSRUVfSUZfQ09QWSh2YXJzLCAyKTsgXAorCXJldHVybiByZXN1bHQ7IFwKK30KKworREVG SU5FX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF9u dW1lcmljLCBqc29uYl92YWx1ZV90b19udW1lcmljX2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhf UVVFUllfRklSU1RfVFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF9ib29sLCBqc29uYl92YWx1 ZV90b19ib29sX2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFlQRUQoanNv bmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ0LCBqc29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQorREVG SU5FX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF9p bnQ4LCBqc29uYl92YWx1ZV90b19pbnQ4X2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhfUVVFUllf RklSU1RfVFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDgsIGpzb25iX3ZhbHVlX3Rv X2Zsb2F0OF9kYXR1bSkKK0RFRklORV9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RZUEVEKGpzb25i X3BhdGhfcXVlcnlfZmlyc3RfaW50MiwganNvbmJfdmFsdWVfdG9faW50Ml9kYXR1bSkKK0RFRklO RV9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RZUEVEKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxv YXQ0LCBqc29uYl92YWx1ZV90b19mbG9hdDRfZGF0dW0pCisKKy8qCisgKiBXcmFwcGVyIG1hY3Jv IGZvciB0aGUganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el88dHlwZT4gZXh0cmFjdG9yIGZhbWls eS4KKyAqIFNhbWUgYXMgYWJvdmUgYnV0IHdpdGggdGltZXpvbmUtYXdhcmUgZXZhbHVhdGlvbi4K KyAqLworI2RlZmluZSBERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9UWVBFRChmbmFt ZSwgY29udmZuKSBcCitEYXR1bSBcCitmbmFtZShQR19GVU5DVElPTl9BUkdTKSBcCit7IFwKKwlK c29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgwKTsgXAorCUpzb25QYXRoICAgKmpwID0g UEdfR0VUQVJHX0pTT05QQVRIX1AoMSk7IFwKKwlKc29uYgkgICAqdmFycyA9IFBHX0dFVEFSR19K U09OQl9QKDIpOyBcCisJYm9vbAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0woMyk7IFwKKwlKc29u VmFsdWVMaXN0IGZvdW5kOyBcCisJSnNvbmJWYWx1ZSAqdjsgXAorCURhdHVtCQlyZXN1bHQ7IFwK K1wKKwlKc29uVmFsdWVMaXN0SW5pdCgmZm91bmQpOyBcCitcCisJKHZvaWQpIGV4ZWN1dGVKc29u UGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYiwgXAorCQkJCQkJICAg Y291bnRWYXJpYWJsZXNGcm9tSnNvbmIsIFwKKwkJCQkJCSAgIGpiLCAhc2lsZW50LCAmZm91bmQs IHRydWUpOyBcCitcCisJaWYgKEpzb25WYWx1ZUxpc3RJc0VtcHR5KCZmb3VuZCkpIFwKKwl7IFwK KwkJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAorCQlQR19GUkVFX0lGX0NPUFkoanAsIDEpOyBc CisJCVBHX0ZSRUVfSUZfQ09QWSh2YXJzLCAyKTsgXAorCQlQR19SRVRVUk5fTlVMTCgpOyBcCisJ fSBcCitcCisJdiA9IEpzb25WYWx1ZUxpc3RIZWFkKCZmb3VuZCk7IFwKKwlpZiAodi0+dHlwZSA9 PSBqYnZOdWxsKSBcCisJeyBcCisJCVBHX0ZSRUVfSUZfQ09QWShqYiwgMCk7IFwKKwkJUEdfRlJF RV9JRl9DT1BZKGpwLCAxKTsgXAorCQlQR19GUkVFX0lGX0NPUFkodmFycywgMik7IFwKKwkJUEdf UkVUVVJOX05VTEwoKTsgXAorCX0gXAorXAorCXJlc3VsdCA9IGNvbnZmbih2KTsgXAorCVBHX0ZS RUVfSUZfQ09QWShqYiwgMCk7IFwKKwlQR19GUkVFX0lGX0NPUFkoanAsIDEpOyBcCisJUEdfRlJF RV9JRl9DT1BZKHZhcnMsIDIpOyBcCisJcmV0dXJuIHJlc3VsdDsgXAorfQorCitERUZJTkVfSlNP TkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9UWVBFRChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X251 bWVyaWMsIGpzb25iX3ZhbHVlX3RvX251bWVyaWNfZGF0dW0pCitERUZJTkVfSlNPTkJfUEFUSF9R VUVSWV9GSVJTVF9UWl9UWVBFRChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Jvb2wsIGpzb25i X3ZhbHVlX3RvX2Jvb2xfZGF0dW0pCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9U WVBFRChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDQsIGpzb25iX3ZhbHVlX3RvX2ludDRf ZGF0dW0pCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9UWVBFRChqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0X3R6X2ludDgsIGpzb25iX3ZhbHVlX3RvX2ludDhfZGF0dW0pCitERUZJTkVf SlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9UWVBFRChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6 X2Zsb2F0OCwganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhf UVVFUllfRklSU1RfVFpfVFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQyLCBqc29u Yl92YWx1ZV90b19pbnQyX2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFpf VFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDQsIGpzb25iX3ZhbHVlX3RvX2Zs b2F0NF9kYXR1bSkKKwogLyoqKioqKioqKioqKioqKioqKioqRXhlY3V0ZSBmdW5jdGlvbnMgZm9y IEpzb25QYXRoKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCBkOGFjOWNiZjA1My4uOTIxZTI3OGEwNDUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdApAQCAtMTI4NDcsNiArMTI4NDcsNTYgQEAKICAgcHJvbmFtZSA9PiAnanNvbmJfZXh0 cmFjdF9wYXRoX2Zsb2F0OCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIHByb2FyZ3R5cGVz ID0+ICdqc29uYiBfdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLHBhdGhfZWxlbXN9 JywKICAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ4JyB9LAoreyBvaWQgPT4g Jzk5NzAnLCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBudW1lcmljJywK KyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF9udW1lcmljJywgcHJvcmV0dHlw ZSA9PiAnbnVtZXJpYycsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBi b29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBw cm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfbnVtZXJpYycgfSwKK3sgb2lkID0+ICc5 OTcxJywgZGVzY3IgPT4gJ2pzb25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0gYXMgYm9vbCcsCisgIHBy b25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfYm9vbCcsIHByb3JldHR5cGUgPT4gJ2Jv b2wnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNvbnBhdGgganNvbmIgYm9vbCcsCisgIHBy b2FyZ25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxzaWxlbnR9JywKKyAgcHJvc3JjID0+ICdq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2Jvb2wnIH0sCit7IG9pZCA9PiAnOTk3MicsIGRlc2NyID0+ ICdqc29ucGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFzIGludDQnLAorICBwcm9uYW1lID0+ICdqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQnLCBwcm9yZXR0eXBlID0+ICdpbnQ0JywKKyAgcHJvYXJn dHlwZXMgPT4gJ2pzb25iIGpzb25wYXRoIGpzb25iIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAn e3RhcmdldCxwYXRoLHZhcnMsc2lsZW50fScsCisgIHByb3NyYyA9PiAnanNvbmJfcGF0aF9xdWVy eV9maXJzdF9pbnQ0JyB9LAoreyBvaWQgPT4gJzk5NzMnLCBkZXNjciA9PiAnanNvbnBhdGggcXVl cnkgZmlyc3QgaXRlbSBhcyBpbnQ4JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9m aXJzdF9pbnQ4JywgcHJvcmV0dHlwZSA9PiAnaW50OCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29u YiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2 YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50OCcg fSwKK3sgb2lkID0+ICc5OTc0JywgZGVzY3IgPT4gJ2pzb25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0g YXMgZmxvYXQ4JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDgn LCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNvbnBh dGgganNvbmIgYm9vbCcsCisgIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxzaWxl bnR9JywKKyAgcHJvc3JjID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2Zsb2F0OCcgfSwKK3sg b2lkID0+ICc5OTc1JywgZGVzY3IgPT4gJ2pzb25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0gYXMgbnVt ZXJpYyB3aXRoIHRpbWV6b25lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJz dF90el9udW1lcmljJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdudW1l cmljJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGpzb25wYXRoIGpzb25iIGJvb2wnLAorICBwcm9h cmduYW1lcyA9PiAne3RhcmdldCxwYXRoLHZhcnMsc2lsZW50fScsCisgIHByb3NyYyA9PiAnanNv bmJfcGF0aF9xdWVyeV9maXJzdF90el9udW1lcmljJyB9LAoreyBvaWQgPT4gJzk5NzYnLCBkZXNj ciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBib29sIHdpdGggdGltZXpvbmUnLAor ICBwcm9uYW1lID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Jvb2wnLCBwcm92b2xhdGls ZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIg anNvbnBhdGgganNvbmIgYm9vbCcsCisgIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFy cyxzaWxlbnR9JywKKyAgcHJvc3JjID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Jvb2wn IH0sCit7IG9pZCA9PiAnOTk3NycsIGRlc2NyID0+ICdqc29ucGF0aCBxdWVyeSBmaXJzdCBpdGVt IGFzIGludDQgd2l0aCB0aW1lem9uZScsCisgIHByb25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlf Zmlyc3RfdHpfaW50NCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnaW50 NCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJn bmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25i X3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50NCcgfSwKK3sgb2lkID0+ICc5OTc4JywgZGVzY3IgPT4g J2pzb25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0gYXMgaW50OCB3aXRoIHRpbWV6b25lJywKKyAgcHJv bmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ4JywgcHJvdm9sYXRpbGUgPT4g J3MnLAorICBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGpzb25w YXRoIGpzb25iIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAne3RhcmdldCxwYXRoLHZhcnMsc2ls ZW50fScsCisgIHByb3NyYyA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ4JyB9LAor eyBvaWQgPT4gJzk5NzknLCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBm bG9hdDggd2l0aCB0aW1lem9uZScsCisgIHByb25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmly c3RfdHpfZmxvYXQ4JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdmbG9h dDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNvbnBhdGgganNvbmIgYm9vbCcsCisgIHByb2Fy Z25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxzaWxlbnR9JywKKyAgcHJvc3JjID0+ICdqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Zsb2F0OCcgfSwKIHsgb2lkID0+ICc5OTgyJywgZGVzY3Ig PT4gJ2V4dHJhY3QgaW50MiBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1lbnQgaW5kZXgnLAogICBw cm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2ludDInLCBwcm9yZXR0eXBlID0+ICdpbnQy JywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21f anNvbixlbGVtZW50X2luZGV4fScsCkBAIC0xMjg2NSw0ICsxMjkxNSwyNyBAQAogICBwcm9hcmd0 eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixwYXRoX2Vs ZW1zfScsCiAgIHByb3NyYyA9PiAnanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCcgfSwKIAorIyBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IGZhbWlseTogaW50MiAvIGZsb2F0NAoreyBvaWQgPT4gJzk5 ODYnLCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBpbnQyJywKKyAgcHJv bmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQyJywgcHJvcmV0dHlwZSA9PiAnaW50 MicsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJv YXJnbmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pz b25iX3BhdGhfcXVlcnlfZmlyc3RfaW50MicgfSwKK3sgb2lkID0+ICc5OTg3JywgZGVzY3IgPT4g J2pzb25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0gYXMgZmxvYXQ0JywKKyAgcHJvbmFtZSA9PiAnanNv bmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDQnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDQnLAorICBw cm9hcmd0eXBlcyA9PiAnanNvbmIganNvbnBhdGgganNvbmIgYm9vbCcsCisgIHByb2FyZ25hbWVz ID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxzaWxlbnR9JywKKyAgcHJvc3JjID0+ICdqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0X2Zsb2F0NCcgfSwKKworIyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6IGZh bWlseTogaW50MiAvIGZsb2F0NAoreyBvaWQgPT4gJzk5ODgnLCBkZXNjciA9PiAnanNvbnBhdGgg cXVlcnkgZmlyc3QgaXRlbSBhcyBpbnQyIHdpdGggdGltZXpvbmUnLAorICBwcm9uYW1lID0+ICdq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDInLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHBy b3JldHR5cGUgPT4gJ2ludDInLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNvbnBhdGgganNvbmIg Ym9vbCcsCisgIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxzaWxlbnR9JywKKyAg cHJvc3JjID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDInIH0sCit7IG9pZCA9PiAn OTk4OScsIGRlc2NyID0+ICdqc29ucGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFzIGZsb2F0NCB3aXRo IHRpbWV6b25lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9h dDQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcsIHByb2Fy Z3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4g J3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHpfZmxvYXQ0JyB9LAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv anNvbmZ1bmNzLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uZnVuY3MuaAppbmRleCAyNzcxM2Jl M2FlYi4uY2U1NWZlMWIxY2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5j cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCkBAIC05MSw2ICs5MSwxNiBA QCBleHRlcm4gRGF0dW0gZGF0dW1fdG9fanNvbmIoRGF0dW0gdmFsLCBKc29uVHlwZUNhdGVnb3J5 IHRjYXRlZ29yeSwKIAkJCQkJCQlPaWQgb3V0ZnVuY29pZCk7CiBleHRlcm4gRGF0dW0ganNvbmJf ZnJvbV90ZXh0KHRleHQgKmpzLCBib29sIHVuaXF1ZV9rZXlzKTsKIAorLyogVHlwZWQgZmllbGQg ZXh0cmFjdGlvbiBoZWxwZXJzIChzaGFyZWQgYnkganNvbmZ1bmNzLmMgYW5kIGpzb25wYXRoX2V4 ZWMuYykgKi8KK2V4dGVybiB2b2lkIGpzb25iX2ZpZWxkX2Nhc3RfZXJyb3IoSnNvbmJWYWx1ZSAq diwgY29uc3QgY2hhciAqc3FsdHlwZSk7CitleHRlcm4gRGF0dW0ganNvbmJfdmFsdWVfdG9fbnVt ZXJpY19kYXR1bShKc29uYlZhbHVlICp2KTsKK2V4dGVybiBEYXR1bSBqc29uYl92YWx1ZV90b19i b29sX2RhdHVtKEpzb25iVmFsdWUgKnYpOworZXh0ZXJuIERhdHVtIGpzb25iX3ZhbHVlX3RvX2lu dDRfZGF0dW0oSnNvbmJWYWx1ZSAqdik7CitleHRlcm4gRGF0dW0ganNvbmJfdmFsdWVfdG9faW50 OF9kYXR1bShKc29uYlZhbHVlICp2KTsKK2V4dGVybiBEYXR1bSBqc29uYl92YWx1ZV90b19mbG9h dDhfZGF0dW0oSnNvbmJWYWx1ZSAqdik7CitleHRlcm4gRGF0dW0ganNvbmJfdmFsdWVfdG9faW50 Ml9kYXR1bShKc29uYlZhbHVlICp2KTsKK2V4dGVybiBEYXR1bSBqc29uYl92YWx1ZV90b19mbG9h dDRfZGF0dW0oSnNvbmJWYWx1ZSAqdik7CisKIGV4dGVybiBEYXR1bSBqc29uX3BvcHVsYXRlX3R5 cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCiAJCQkJCQkJCU9pZCB0eXBpZCwgaW50 MzIgdHlwbW9kLAogCQkJCQkJCQl2b2lkICoqY2FjaGUsIE1lbW9yeUNvbnRleHQgbWN4dCwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggMzE5ODQ0MjM1MmMuLjdkZTJiY2VhM2Y3 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTAzLDIyICs1MDMsNiBAQCBF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQn KTo6ZmxvYXQ4IEZST00gdGVzdF9qcwogICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUg PSAnb2JqZWN0Jzo6dGV4dCkKICgzIHJvd3MpCiAKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYgotICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfaW50Mih0ZXN0 X2pzb24sICdmaWVsZDQnOjp0ZXh0KQotICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUg PSAnb2JqZWN0Jzo6dGV4dCkKLSgzIHJvd3MpCi0KLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgotICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfZmxv YXQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCi0gICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpz b25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQotKDMgcm93cykKLQogLS0gU2VjdGlvbiAxYjogcGxh bm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiBmb3Igc3Vic2NyaXB0aW5nIHN5bnRheAogRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpudW1l cmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg CkBAIC01NjAsNyArNTQ0LDggQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb24KICAgIEZpbHRlcjog KHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCiAoMyByb3dzKQogCi1FWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworLS0gVmVyaWZ5 IHRoYXQgaW50MiBhbmQgZmxvYXQ0IGFyZSBhbHNvIHJld3JpdHRlbiB0aHJvdWdoIHRoZSBvYmpl Y3QtZmllbGQgZmFtaWx5LgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOwogICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pz b25iCkBAIC01NjgsNyArNTUzLDcgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQyIEZST00gdGVzdF9qc29uYgogICAgRmlsdGVy OiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKICgzIHJvd3MpCiAKLUVY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6 ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpm bG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgpAQCAtNjA3LDE4ICs1 OTIsNiBAQCBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdAogICAgICAgNAogKDEgcm93KQogCi1TRUxF Q1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOwotIGludDIgCi0tLS0tLS0KLSAgICA0Ci0oMSByb3cpCi0KLVNF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLSBmbG9hdDQgCi0tLS0tLS0tLQotICAgICAgNAotKDEg cm93KQotCiAtLSBTZWN0aW9uIDJiOiBjb3JyZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHN1YnNjcmlw dGluZyBzeW50YXgKIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6Om51bWVyaWMgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogIHRlc3RfanNvbiAKQEAgLTY1 MCwxNiArNjIzLDE3IEBAIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0OCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAgICAgICAgICA0CiAoMSBy b3cpCiAKLVNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotIHRlc3RfanNvbiAKLS0tLS0tLS0tLS0tCi0g ICAgICAgICA0CistLSBVbnN1cHBvcnRlZCB0YXJnZXRzIHN0aWxsIHdvcmsgY29ycmVjdGx5IHRo cm91Z2ggdGhlIG9yaWdpbmFsIHBhdGgKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6 aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgaW50MiAK Ky0tLS0tLQorICAgIDQKICgxIHJvdykKIAotU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6 ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLSB0ZXN0 X2pzb24gCi0tLS0tLS0tLS0tLQotICAgICAgICAgNAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2Zp ZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OworIGZsb2F0NCAKKy0tLS0tLS0tCisgICAgICA0CiAoMSByb3cpCiAKIC0tIFNlY3Rpb24gMzog TlVMTCBzZW1hbnRpY3MgKG1pc3Npbmcga2V5LCBKU09OIG51bGwsIG5vbi1vYmplY3QgaW5wdXQp CkBAIC03MTEsMzAgKzY4NSw2IEBAIFNFTEVDVCAodGVzdF9qc29uIC0+ICdub25leGlzdGVudCcp OjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvCiAgICAgICAgCiAo MSByb3cpCiAKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6aW50MiBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGludDIgcGF0 aAotIGludDIgCi0tLS0tLS0KLSAgICAgCi0oMSByb3cpCi0KLVNFTEVDVCAodGVzdF9qc29uIC0+ ICdub25leGlzdGVudCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsgIC0tIG1pc3Npbmcga2V5LCBpbnQyCi0gaW50MiAKLS0tLS0tLQotICAgICAKLSgx IHJvdykKLQotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMycpOjpmbG9hdDQgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gSlNPTiBudWxsLCBmbG9hdDQg cGF0aAotIGZsb2F0NCAKLS0tLS0tLS0tCi0gICAgICAgCi0oMSByb3cpCi0KLVNFTEVDVCAodGVz dF9qc29uIC0+ICdub25leGlzdGVudCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2luZyBrZXksIGZsb2F0NAotIGZsb2F0NCAKLS0t LS0tLS0tCi0gICAgICAgCi0oMSByb3cpCi0KIC0tIFNlY3Rpb24gM2I6IE5VTEwgc2VtYW50aWNz IHRocm91Z2ggc3Vic2NyaXB0aW5nIHN5bnRheAogU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkMydd KTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAt LSBKU09OIG51bGwKICB0ZXN0X2pzb24gCkBAIC03NzEsMTQgKzcyMSw2IEBAIFNFTEVDVCAodGVz dF9qc29uIC0+ICdmaWVsZDUnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0 byB0eXBlIGludGVnZXIKIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDUnKTo6ZmxvYXQ4IEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGZs b2F0OAogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBk b3VibGUgcHJlY2lzaW9uCi1TRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmludDIgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGlu dDIKLUVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgc21hbGxpbnQKLVNF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBmbG9hdDQKLUVSUk9SOiAgY2Fu bm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgcmVhbAotU0VMRUNUICh0ZXN0X2pzb24gLT4g J2ZpZWxkNScpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIGFycmF5IHRvIGludDIKLUVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Ig b2JqZWN0IHRvIHR5cGUgc21hbGxpbnQKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDUnKTo6 ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIGFy cmF5IHRvIGZsb2F0NAotRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3Qg dG8gdHlwZSByZWFsCiAtLSBTZWN0aW9uIDRiOiB0eXBlLW1pc21hdGNoIGVycm9yIHRocm91Z2gg c3Vic2NyaXB0aW5nIHN5bnRheAogU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkMSddKTo6bnVtZXJp YyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcg dG8gbnVtZXJpYwogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBudW1l cmljCkBAIC04MjcsMzAgKzc2OSw2IEBAIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4 KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOwogICAgICAgICAgICAgICAgICAgICAgIDMuMTQK ICgxIHJvdykKIAotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiA0Mn0nOjpq c29uYiwgJ2EnKTsKLSBqc29uYl9vYmplY3RfZmllbGRfaW50MiAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICA0MgotKDEgcm93KQotCi1TRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDN9Jzo6anNvbmIsICdhJyk7Ci0ganNvbmJfb2Jq ZWN0X2ZpZWxkX2ludDIgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAg ICAgICAgICAgIDMKLSgxIHJvdykKLQotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQo J3siYSI6IDMuMTR9Jzo6anNvbmIsICdhJyk7Ci0ganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgICAgICAgIDMuMTQK LSgxIHJvdykKLQotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IDEuNX0n Ojpqc29uYiwgJ2EnKTsKLSBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgIDEuNQotKDEgcm93KQotCiAt LSBkaXJlY3QgY2FsbHM6IE5VTEwgc2VtYW50aWNzCiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxk X251bWVyaWMoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7CiAganNvbmJfb2JqZWN0X2Zp ZWxkX251bWVyaWMgCkBAIC04ODgsMzAgKzgwNiw2IEBAIFNFTEVDVCBqc29uYl9vYmplY3RfZmll bGRfZmxvYXQ4KCd7ImEiOiAxLjB9Jzo6anNvbmIsICdtaXNzaW5nJyk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogKDEgcm93KQogCi1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIo J3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7Ci0ganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSgx IHJvdykKLQotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiBudWxsfSc6Ompz b25iLCAnYScpOwotIGpzb25iX29iamVjdF9maWVsZF9pbnQyIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotICAgICAgICAgICAgICAgICAgICAgICAgCi0oMSByb3cpCi0KLVNFTEVDVCBqc29u Yl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiAxLjB9Jzo6anNvbmIsICdtaXNzaW5nJyk7Ci0g anNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot ICAgICAgICAgICAgICAgICAgICAgICAgICAKLSgxIHJvdykKLQotU0VMRUNUIGpzb25iX29iamVj dF9maWVsZF9mbG9hdDQoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7Ci0ganNvbmJfb2JqZWN0 X2ZpZWxkX2Zsb2F0NCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgICAgICAgICAgICAKLSgxIHJvdykKLQogLS0gZGlyZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNo IGVycm9ycwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmljKCd7ImEiOiAidGV4dCJ9 Jzo6anNvbmIsICdhJyk7CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBl IG51bWVyaWMKQEAgLTkyNSwyMCArODE5LDkgQEAgU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9p bnQ4KCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOwogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29u YiBib29sZWFuIHRvIHR5cGUgYmlnaW50CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0 OCgneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ4CiBF UlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIGRvdWJsZSBw cmVjaXNpb24KLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogInRleHQifSc6 Ompzb25iLCAnYScpOyAgLS0gc3RyaW5nIHRvIGludDIKLUVSUk9SOiAgY2Fubm90IGNhc3QganNv bmIgc3RyaW5nIHRvIHR5cGUgc21hbGxpbnQKLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxv YXQ0KCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOyAgLS0gYm9vbCB0byBmbG9hdDQKLUVSUk9S OiAgY2Fubm90IGNhc3QganNvbmIgYm9vbGVhbiB0byB0eXBlIHJlYWwKLVNFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfaW50MigneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWlu ZXIgdG8gaW50MgotRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8g dHlwZSBzbWFsbGludAotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IHsi eCI6MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ0Ci1FUlJPUjogIGNh bm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIHJlYWwKIC0tIGRpcmVjdCBj YWxsczogaW50ZWdlciBvdmVyZmxvdwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ0KCd7 ImEiOiA5OTk5OTk5OTk5fSc6Ompzb25iLCAnYScpOwogRVJST1I6ICBpbnRlZ2VyIG91dCBvZiBy YW5nZQotLS0gZGlyZWN0IGNhbGxzOiBpbnQyIG92ZXJmbG93Ci1TRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOwotRVJST1I6ICBzbWFsbGlu dCBvdXQgb2YgcmFuZ2UKIC0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiBhcnJheS1lbGVt ZW50IGZhbWlseQogLS0gVGhlIHBsYW5uZXIgcmV3cml0ZXMgKGotPmlkeCk6OnR5cGUgYW5kIChq W2lkeF0pOjp0eXBlIGludG8gZGlyZWN0CiAtLSB0eXBlZCBleHRyYWN0b3IgY2FsbHMgZm9yIHRo ZSBzYW1lIHRhcmdldCB0eXBlcyBhcyB0aGUgb2JqZWN0LWZpZWxkIGZhbWlseS4KQEAgLTk4MSwy MCArODY0LDYgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJy IC0+IDApOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7CiAgICBPdXRwdXQ6IGpzb25iX2FycmF5 X2VsZW1lbnRfaW50OCh0ZXN0X2FyciwgMCkKICgyIHJvd3MpCiAKLUVYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3RfanNvbmJf YXJyOwotICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBT Y2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKLSAgIE91dHB1dDoganNvbmJfYXJyYXlfZWxl bWVudF9pbnQyKHRlc3RfYXJyLCAwKQotKDIgcm93cykKLQotRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2Fy cjsKLSAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2Vx IFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iX2FycgotICAgT3V0cHV0OiBqc29uYl9hcnJheV9l bGVtZW50X2Zsb2F0NCh0ZXN0X2FyciwgMSkKLSgyIHJvd3MpCi0KIC0tIFNlY3Rpb24gQTFiOiBw bGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChhcnJheSBzdWJzY3JpcHRpbmcgZm9ybSkKIEVY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclswXSk6Om51bWVyaWMg RlJPTSB0ZXN0X2pzb25iX2FycjsKICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKQEAgLTEwMzEsMTMgKzkwMCw2IEBAIEVYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclswXSk6OmludDggRlJPTSB0ZXN0X2pzb25iX2Fy cjsKICAgIE91dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4KHRlc3RfYXJyLCAwKQogKDIg cm93cykKIAotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzBd KTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJyOwotICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKLSAg IE91dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKHRlc3RfYXJyLCAwKQotKDIgcm93cykK LQogLS0gU2VjdGlvbiBBMWM6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24gKGRpcmVjdCBm dW5jdGlvbiBjYWxsIGZvcm0pCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo anNvbmJfYXJyYXlfZWxlbWVudCh0ZXN0X2FyciwgMCkpOjppbnQ0IEZST00gdGVzdF9qc29uYl9h cnI7CiAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCkBA IC0xMDc3LDE4ICs5MzksNiBAQCBTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjpib29sIEZST00gdGVz dF9qc29uYl9hcnI7CiAgdAogKDEgcm93KQogCi1TRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQy IEZST00gdGVzdF9qc29uYl9hcnI7Ci0gaW50MiAKLS0tLS0tLQotICAgMTAKLSgxIHJvdykKLQot U0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYl9hcnI7Ci0gZmxv YXQ0IAotLS0tLS0tLS0KLSAgICAyLjUKLSgxIHJvdykKLQogLS0gU2VjdGlvbiBBMmI6IGNvcnJl Y3QgZXhlY3V0aW9uIHRocm91Z2ggc3Vic2NyaXB0aW5nCiBTRUxFQ1QgKHRlc3RfYXJyWzBdKTo6 aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOwogIHRlc3RfYXJyIApAQCAtMTEzNSwxOCArOTg1LDYg QEAgU0VMRUNUICgneyJrIjoxfSc6Ompzb25iIC0+IDApOjppbnQ0OyAgLS0gbm9uLWFycmF5IGlu cHV0CiAgICAgIAogKDEgcm93KQogCi1TRUxFQ1QgKHRlc3RfYXJyIC0+IDk5KTo6aW50MiBGUk9N IHRlc3RfanNvbmJfYXJyOyAgLS0gb3V0IG9mIHJhbmdlLCBpbnQyCi0gaW50MiAKLS0tLS0tLQot ICAgICAKLSgxIHJvdykKLQotU0VMRUNUICh0ZXN0X2FyciAtPiAzKTo6ZmxvYXQ0IEZST00gdGVz dF9qc29uYl9hcnI7ICAtLSBKU09OIG51bGwgZWxlbWVudCwgZmxvYXQ0Ci0gZmxvYXQ0IAotLS0t LS0tLS0KLSAgICAgICAKLSgxIHJvdykKLQogLS0gU2VjdGlvbiBBM2I6IE5VTEwgdGhyb3VnaCBz dWJzY3JpcHRpbmcKIFNFTEVDVCAodGVzdF9hcnJbOTldKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29u Yl9hcnI7ICAtLSBvdXQgb2YgcmFuZ2UKICB0ZXN0X2FyciAKQEAgLTExNzEsMTAgKzEwMDksNiBA QCBTRUxFQ1QgKHRlc3RfYXJyIC0+IDYpOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBv YmplY3QgY29udGFpbmVyIHRvIGludDgKIEVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkg b3Igb2JqZWN0IHRvIHR5cGUgYmlnaW50CiBTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjppbnQ0IEZS T00gdGVzdF9qc29uYl9hcnI7ICAtLSBib29sIHRvIGludDQKIEVSUk9SOiAgY2Fubm90IGNhc3Qg anNvbmIgYm9vbGVhbiB0byB0eXBlIGludGVnZXIKLVNFTEVDVCAodGVzdF9hcnIgLT4gNCk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBpbnQyCi1FUlJPUjogIGNhbm5v dCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIHNtYWxsaW50Ci1TRUxFQ1QgKHRlc3RfYXJyIC0+ IDQpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9hdDQKLUVS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgcmVhbAogLS0gU2VjdGlvbiBB NGI6IGVycm9yIHRocm91Z2ggc3Vic2NyaXB0aW5nCiBTRUxFQ1QgKHRlc3RfYXJyWzRdKTo6aW50 OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gc3RyaW5nIHRvIGludDgKIEVSUk9SOiAgY2Fubm90 IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgYmlnaW50CkBAIC0xMjM1LDE4ICsxMDY5LDYgQEAg U0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCgnW3RydWVdJzo6anNvbmIsIDApOwogRVJS T1I6ICBjYW5ub3QgY2FzdCBqc29uYiBib29sZWFuIHRvIHR5cGUgYmlnaW50CiBTRUxFQ1QganNv bmJfYXJyYXlfZWxlbWVudF9mbG9hdDgoJ1tbMSwyXV0nOjpqc29uYiwgMCk7ICAtLSBjb250YWlu ZXIgdG8gZmxvYXQ4CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0 byB0eXBlIGRvdWJsZSBwcmVjaXNpb24KLVNFTEVDVCBqc29uYl9hcnJheV9lbGVtZW50X2ludDIo J1sxMCwgMjBdJzo6anNvbmIsIDApOwotIGpzb25iX2FycmF5X2VsZW1lbnRfaW50MiAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgIDEwCi0oMSByb3cp Ci0KLVNFTEVDVCBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0NCgnWzMuMTQsIDIuNV0nOjpqc29u YiwgMSk7Ci0ganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgICAyLjUKLSgxIHJvdykKLQogLS0gT3B0 aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246IGV4dHJhY3QtcGF0aCBmYW1pbHkKIC0tIFRoZSBwbGFu bmVyIHJld3JpdGVzIChqICM+IHBhdGgpOjp0eXBlIGFuZCAoanNvbmJfZXh0cmFjdF9wYXRoKGos IC4uLikpOjp0eXBlCiAtLSBpbnRvIGRpcmVjdCB0eXBlZCBleHRyYWN0b3IgY2FsbHMgZm9yIHRo ZSBzYW1lIHRhcmdldCB0eXBlcy4KQEAgLTEyOTEsMjIgKzExMTMsNiBAQCBFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ3fScpOjpib29sIEZS T00gdGVzdF9qcwogICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6 dGV4dCkKICgzIHJvd3MpCiAKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdvYmplY3QnOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBvbiBwZ190 ZW1wLnRlc3RfanNvbmIKLSAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDIodGVzdF9q c29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCi0gICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQotKDMgcm93cykKLQotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6ZmxvYXQ0IEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgotICAgT3V0cHV0OiBqc29uYl9leHRy YWN0X3BhdGhfZmxvYXQ0KHRlc3RfanNvbiwgJ3tmaWVsZDR9Jzo6dGV4dFtdKQotICAgRmlsdGVy OiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKLSgzIHJvd3MpCi0KIC0t IFNlY3Rpb24gUDFiOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3QgZnVuY3Rp b24tY2FsbCBmb3JtKQogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25i X2V4dHJhY3RfcGF0aCh0ZXN0X2pzb24sICdmaWVsZDQnKSk6OmZsb2F0OCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIApAQCAtMTQ2MSwxOSAr MTI2Nyw2IEBAIFNFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJhIjpbMTAsMjBdfSc6 Ompzb25iLCBBUlJBWVsnYScsJzEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgMjAKICgxIHJv dykKIAotLS0gZGlyZWN0IGNhbGxzOiBpbnQyIGFuZCBmbG9hdDQKLVNFTEVDVCBqc29uYl9leHRy YWN0X3BhdGhfaW50MigneyJhIjp7ImIiOjd9fSc6Ompzb25iLCBBUlJBWVsnYScsJ2InXSk7Ci0g anNvbmJfZXh0cmFjdF9wYXRoX2ludDIgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgICAgICAgICAgICAgIDcKLSgxIHJvdykKLQotU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0 aF9mbG9hdDQoJ3siYSI6My4xNH0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7Ci0ganNvbmJfZXh0cmFj dF9wYXRoX2Zsb2F0NCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgICAgICAgIDMuMTQKLSgxIHJvdykKLQogLS0gT3B0aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246 IG11bHRpLXN1YnNjcmlwdCBjaGFpbnMKIC0tIFRoZSBwbGFubmVyIGxvd2VycyBqWydhJ11bJ2In XSwgalsnYSddWzBdLCBldGMuIHRvIHRoZSBleHRyYWN0LXBhdGggdHlwZWQKIC0tIGV4dHJhY3Rv ciBmYW1pbHksIHJldXNpbmcgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSAjPiBvcGVyYXRvciBw YXRoLgpAQCAtMTUyNiwyMSArMTMxOSw2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50NCBGUk9NIHRlc3RfanNvbmIKICAgIEZp bHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCiAoMyByb3dzKQog Ci0tLSBTZWN0aW9uIE0xYjogbXVsdGktc3Vic2NyaXB0IGludDIvZmxvYXQ0Ci1FWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDYnXVsnZjEnXSk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBvbiBw Z190ZW1wLnRlc3RfanNvbmIKLSAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDIodGVz dF9qc29uLCBBUlJBWVsnZmllbGQ2Jzo6dGV4dCwgJ2YxJzo6dGV4dF0pCi0gICBGaWx0ZXI6ICh0 ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQotKDMgcm93cykKLQotU0VMRUNU ICgoJ3siYSI6eyJiIjo3fX0nOjpqc29uYilbJ2EnXVsnYiddKTo6aW50MjsKLSBpbnQyIAotLS0t LS0tCi0gICAgNwotKDEgcm93KQotCiAtLSBTZWN0aW9uIE0yOiBleGVjdXRpb24gdGhyb3VnaCBt dWx0aS1zdWJzY3JpcHQgcmV3cml0ZQogU0VMRUNUICgoJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIp WydhJ11bJ2InXSk6OmludDQ7CiAgaW50NCAKQEAgLTE2MzEsNiArMTQwOSw2MDYgQEAgU0VMRUNU ICgoJ3siYSI6W1sxMCwyMF0sWzMwLDQwXV19Jzo6anNvbmIpWydhJ11baV1bMF0pOjppbnQ0IEZS T00gZ2VuZXJhdGVfc2VyaWUKICAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3NlcmllcygwLCAx KQogKDMgcm93cykKIAorLS0gT3B0aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246IGpzb25iX3BhdGhf cXVlcnlfZmlyc3QgZmFtaWx5CistLSBUaGUgcGxhbm5lciByZXdyaXRlcyAoanNvbmJfcGF0aF9x dWVyeV9maXJzdChqLCBwYXRoKSk6OnR5cGUgaW50byBhIGRpcmVjdAorLS0gdHlwZWQgZXh0cmFj dG9yIGNhbGwgZm9yIHRoZSBzYW1lIHRhcmdldCB0eXBlcyBhcyB0aGUgb3RoZXIgZmFtaWxpZXMu CistLSBTZWN0aW9uIFExOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pz b24sICckLmZpZWxkNCcpKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0 X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50NCh0ZXN0X2pzb24s ICckLiJmaWVsZDQiJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSkKKyAgIEZpbHRlcjog KHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0 ZXN0X2pzb24sICckLmZpZWxkNycpKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVt cC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfYm9vbCh0ZXN0 X2pzb24sICckLiJmaWVsZDciJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSkKKyAgIEZp bHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9m aXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2Vx IFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX3BhdGhfcXVlcnlf Zmlyc3RfbnVtZXJpYyh0ZXN0X2pzb24sICckLiJmaWVsZDQiJzo6anNvbnBhdGgsICd7fSc6Ompz b25iLCBmYWxzZSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo anNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6aW50OCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX3Bh dGhfcXVlcnlfZmlyc3RfaW50OCh0ZXN0X2pzb24sICckLiJmaWVsZDQiJzo6anNvbnBhdGgsICd7 fSc6Ompzb25iLCBmYWxzZSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29i amVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6Zmxv YXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRw dXQ6IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxvYXQ4KHRlc3RfanNvbiwgJyQuImZpZWxkNCIn Ojpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5q c29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKKy0tIDMtYXJnIGZvcm0gKHZh cnMgZXhwbGljaXQpCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJf cGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcsICd7fScpKTo6aW50NCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX3Bh dGhfcXVlcnlfZmlyc3RfaW50NCh0ZXN0X2pzb24sICckLiJmaWVsZDQiJzo6anNvbnBhdGgsICd7 fSc6Ompzb25iLCBmYWxzZSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29i amVjdCc6OnRleHQpCisoMyByb3dzKQorCistLSA0LWFyZyBmb3JtICh2YXJzICsgc2lsZW50IGV4 cGxpY2l0KQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDQnLCAne30nLCB0cnVlKSk6OmZsb2F0OCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNv bmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDgodGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25w YXRoLCAne30nOjpqc29uYiwgdHJ1ZSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBl ID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCistLSBTZWN0aW9uIFEyOiBleGVjdXRpb24g dGhyb3VnaCByZXdyaXRlCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6NDJ9 Jzo6anNvbmIsICckLmEnKSk6OmludDQ7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKwor U0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjMuMTR9Jzo6anNvbmIsICckLmEn KSk6OmZsb2F0ODsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgMy4xNAorKDEgcm93KQorCitTRUxFQ1QgKGpzb25i X3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6dHJ1ZX0nOjpqc29uYiwgJyQuYScpKTo6Ym9vbDsKKyBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEg cm93KQorCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6OTl9Jzo6anNvbmIs ICckLmEnKSk6Om51bWVyaWM7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgOTkKKygxIHJvdykKKworU0VMRUNU IChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjk5fSc6Ompzb25iLCAnJC5hJykpOjppbnQ4 OworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgIDk5CisoMSByb3cpCisKKy0tIG5lc3RlZCBvYmplY3QgcGF0aAor U0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iLCAn JC5hLmInKSk6OmludDQ7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKworLS0gYXJyYXkg YWNjZXNzIGluIGpzb25wYXRoCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6 WzEwLDIwXX0nOjpqc29uYiwgJyQuYVsxXScpKTo6aW50NDsKKyBqc29uYl9wYXRoX3F1ZXJ5X2Zp cnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAyMAor KDEgcm93KQorCistLSBTZWN0aW9uIFEzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIChqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjF9Jzo6anNvbmIsICckLmInKSk6OmludDQ7ICAtLSBtaXNz aW5nIHBhdGgKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKGpzb25iX3Bh dGhfcXVlcnlfZmlyc3QoJ3siYSI6bnVsbH0nOjpqc29uYiwgJyQuYScpKTo6aW50NDsgIC0tIEpT T04gbnVsbAorIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKKy0tIFNlY3Rpb24gUTQ6IHNp bGVudCBzZW1hbnRpY3MKKy0tIHNpbGVudD10cnVlIHN1cHByZXNzZXMganNvbnBhdGggZXhlY3V0 aW9uIGVycm9ycywgTk9UIGNhc3QgZXJyb3JzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmly c3QoJ3siYSI6InRleHQifSc6Ompzb25iLCAnJC5hJywgJ3t9JywgdHJ1ZSkpOjppbnQ0OyAgLS0g Y2FzdCBlcnJvciBub3Qgc3VwcHJlc3NlZAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJp bmcgdG8gdHlwZSBpbnRlZ2VyCistLSBzaWxlbnQ9ZmFsc2UgKGRlZmF1bHQpOiBqc29ucGF0aCBz dHJpY3QgZXJyb3IKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjoxfSc6Ompz b25iLCAnc3RyaWN0ICQuYicsICd7fScsIGZhbHNlKSk6OmludDQ7ICAtLSBzdHJpY3QgbWlzc2lu ZyBrZXkgZXJyb3IKK0VSUk9SOiAgSlNPTiBvYmplY3QgZG9lcyBub3QgY29udGFpbiBrZXkgImIi CistLSBzaWxlbnQ9dHJ1ZToganNvbnBhdGggc3RyaWN0IGVycm9yIHN1cHByZXNzZWQKK1NFTEVD VCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjoxfSc6Ompzb25iLCAnc3RyaWN0ICQuYics ICd7fScsIHRydWUpKTo6aW50NDsgIC0tIHN1cHByZXNzZWQsIHJldHVybnMgTlVMTAorIGpzb25i X3BhdGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKKy0tIFNlY3Rpb24gUTU6IHR5cGUtbWlzbWF0Y2ggZXJy b3JzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6ImhlbGxvIn0nOjpqc29u YiwgJyQuYScpKTo6aW50NDsgIC0tIHN0cmluZyB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBjYXN0 IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9m aXJzdCgneyJhIjpbMSwyXX0nOjpqc29uYiwgJyQuYScpKTo6aW50NDsgIC0tIGNvbnRhaW5lciB0 byBpbnQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IHRvIHR5cGUgaW50ZWdlcgor LS0gU2VjdGlvbiBRNjogZGlyZWN0IGNhbGxzIHRvIHR5cGVkIGV4dHJhY3RvciBidWlsdGlucwor U0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50NCgneyJhIjo0Mn0nOjpqc29uYiwgJyQu YSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgICAgIDQyCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2lu dDgoJ3siYSI6OTl9Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNl KTsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICA5OQorKDEgcm93KQorCitTRUxFQ1Qg anNvbmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDgoJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYSc6 Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3Rf ZmxvYXQ4IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X251bWVyaWMoJ3siYSI6MS4yM30nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29u YiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfbnVtZXJpYyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjIzCiso MSByb3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2Jvb2woJ3siYSI6dHJ1ZX0n Ojpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25iX3Bh dGhfcXVlcnlfZmlyc3RfYm9vbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCistLSBkaXJlY3QgY2FsbDogbWlzc2luZyBwYXRoCitTRUxFQ1QganNvbmJfcGF0 aF9xdWVyeV9maXJzdF9pbnQ0KCd7ImEiOjF9Jzo6anNvbmIsICckLmInOjpqc29ucGF0aCwgJ3t9 Jzo6anNvbmIsIGZhbHNlKTsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDEg cm93KQorCistLSBkaXJlY3QgY2FsbDogd2l0aCB2YXJzCitTRUxFQ1QganNvbmJfcGF0aF9xdWVy eV9maXJzdF9pbnQ0KCd7ImEiOjQyfSc6Ompzb25iLCAnJC5hID8gKEAgPiAkeCknOjpqc29ucGF0 aCwgJ3sieCI6MTB9Jzo6anNvbmIsIGZhbHNlKTsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2lu dDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICA0MgorKDEgcm93KQorCistLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjoganNvbmJf cGF0aF9xdWVyeV9maXJzdF90eiBmYW1pbHkKKy0tIFNhbWUgcGF0dGVybiBhcyB0aGUgbm9uLXR6 IGZhbWlseSwgYnV0IHdpdGggdGltZXpvbmUtYXdhcmUgZXZhbHVhdGlvbi4KKy0tIFNlY3Rpb24g VDE6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KHRlc3RfanNvbiwgJyQuZmll bGQ0JykpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNv bmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ0KHRlc3RfanNvbiwg JyQuImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAo dGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6 KHRlc3RfanNvbiwgJyQuZmllbGQ3JykpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBv biBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90 el9ib29sKHRlc3RfanNvbiwgJyQuImZpZWxkNyInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZh bHNlKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkK KygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0X3R6KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjpudW1lcmljIEZST00g dGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1 dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9udW1lcmljKHRlc3RfanNvbiwgJyQuImZpZWxk NCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAodGVzdF9qc29u Yi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KHRlc3RfanNv biwgJyQuZmllbGQ0JykpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1w LnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ4KHRl c3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAg RmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0 aF9xdWVyeV9maXJzdF90el9mbG9hdDgodGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25wYXRo LCAne30nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9 ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworLS0gMy1hcmcgZm9ybSAodmFycyBleHBsaWNp dCkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6KHRlc3RfanNvbiwgJyQuZmllbGQ0JywgJ3t9JykpOjppbnQ0IEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0 aF9xdWVyeV9maXJzdF90el9pbnQ0KHRlc3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwg J3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAn b2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKKy0tIDQtYXJnIGZvcm0gKHZhcnMgKyBzaWxlbnQg ZXhwbGljaXQpCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eih0ZXN0X2pzb24sICckLmZpZWxkNCcsICd7fScsIHRydWUpKTo6Zmxv YXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAg T3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Zsb2F0OCh0ZXN0X2pzb24sICckLiJm aWVsZDQiJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCB0cnVlKQorICAgRmlsdGVyOiAodGVzdF9q c29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKKy0tIFNlY3Rpb24g VDI6IGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdGUKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9m aXJzdF90eigneyJhIjo0Mn0nOjpqc29uYiwgJyQuYScpKTo6aW50NDsKKyBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0X3R6IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3Rf dHooJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYScpKTo6ZmxvYXQ4OworIGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90 eigneyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJykpOjpib29sOworIGpzb25iX3BhdGhfcXVlcnlf Zmlyc3RfdHogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NF TEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjo5OX0nOjpqc29uYiwgJyQuYScp KTo6bnVtZXJpYzsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICA5OQorKDEgcm93KQorCitTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6OTl9Jzo6anNvbmIsICckLmEnKSk6 OmludDg7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgOTkKKygxIHJvdykKKworLS0gbmVzdGVk IHBhdGgKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjp7ImIiOjQyfX0n Ojpqc29uYiwgJyQuYS5iJykpOjppbnQ0OworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHogCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIDQyCiso MSByb3cpCisKKy0tIGFycmF5IGFjY2VzcworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X3R6KCd7ImEiOlsxMCwyMF19Jzo6anNvbmIsICckLmFbMV0nKSk6OmludDQ7CisganNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAgMjAKKygxIHJvdykKKworLS0gU2VjdGlvbiBUMzogTlVMTCBzZW1hbnRp Y3MKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjoxfSc6Ompzb25iLCAn JC5iJykpOjppbnQ0OyAgLS0gbWlzc2luZyBwYXRoCisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90 eiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOm51 bGx9Jzo6anNvbmIsICckLmEnKSk6OmludDQ7ICAtLSBKU09OIG51bGwKKyBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0X3R6IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgICAgIAorKDEgcm93KQorCistLSBTZWN0aW9uIFQ0OiBzaWxlbnQgc2VtYW50aWNz CitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6InRleHQifSc6Ompzb25i LCAnJC5hJywgJ3t9JywgdHJ1ZSkpOjppbnQ0OyAgLS0gY2FzdCBlcnJvciBub3Qgc3VwcHJlc3Nl ZAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCitTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6MX0nOjpqc29uYiwgJ3N0cmljdCAk LmInLCAne30nLCBmYWxzZSkpOjppbnQ0OyAgLS0gc3RyaWN0IGVycm9yCitFUlJPUjogIEpTT04g b2JqZWN0IGRvZXMgbm90IGNvbnRhaW4ga2V5ICJiIgorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6KCd7ImEiOjF9Jzo6anNvbmIsICdzdHJpY3QgJC5iJywgJ3t9JywgdHJ1ZSkpOjpp bnQ0OyAgLS0gc3VwcHJlc3NlZCwgTlVMTAorIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHogCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgCiso MSByb3cpCisKKy0tIFNlY3Rpb24gVDU6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1QgKGpz b25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6ImhlbGxvIn0nOjpqc29uYiwgJyQuYScpKTo6 aW50NDsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgaW50ZWdlcgor LS0gU2VjdGlvbiBUNjogZGlyZWN0IGNhbGxzIHRvIHR5cGVkIGV4dHJhY3RvciBidWlsdGlucwor U0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50NCgneyJhIjo0Mn0nOjpqc29uYiwg JyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlf Zmlyc3RfdHpfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDQyCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0X3R6X2ludDgoJ3siYSI6OTl9Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9 Jzo6anNvbmIsIGZhbHNlKTsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA5OQorKDEgcm93KQorCitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDgo J3siYSI6My4xNH0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2Up OworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfZmxvYXQ4IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE0CisoMSBy b3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X251bWVyaWMoJ3siYSI6MS4y M30nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25i X3BhdGhfcXVlcnlfZmlyc3RfdHpfbnVtZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjIzCisoMSByb3cpCisK K1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Jvb2woJ3siYSI6dHJ1ZX0nOjpqc29u YiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHpfYm9vbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCistLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogaW50MiAvIGZsb2F0NCBt YXRyaXggY29tcGxldGlvbgorLS0gRXh0ZW5kcyB0aGUgZXhpc3RpbmcgdHlwZWQgZXh0cmFjdG9y IGZhbWlsaWVzIHRvIGNvdmVyIGludDIgKHNtYWxsaW50KQorLS0gYW5kIGZsb2F0NCAocmVhbCkg dGFyZ2V0IHR5cGVzLgorLS0gU2VjdGlvbiBJMTogZGlyZWN0IGNhbGxzIHRvIGludDIgLyBmbG9h dDQgdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zIChvYmplY3QtZmllbGQpCitTRUxFQ1QganNvbmJf b2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDQyfSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVj dF9maWVsZF9pbnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgIDQyCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJh IjogM30nOjpqc29uYiwgJ2EnKTsKKyBqc29uYl9vYmplY3RfZmllbGRfaW50MiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgMworKDEgcm93KQorCitT RUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMy4xNH0nOjpqc29uYiwgJ2En KTsKKyBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgMy4xNAorKDEgcm93KQorCitTRUxFQ1QganNvbmJf b2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMS41fSc6Ompzb25iLCAnYScpOworIGpzb25iX29i amVjdF9maWVsZF9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgMS41CisoMSByb3cpCisKKy0tIE5VTEwgc2VtYW50aWNzCitTRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7Cisg anNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9pbnQyKCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9maWVsZF9p bnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiAxLjB9 Jzo6anNvbmIsICdtaXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IG51bGx9Jzo6anNv bmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworLS0gdHlw ZS1taXNtYXRjaCBlcnJvcnMKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjog InRleHQifSc6Ompzb25iLCAnYScpOworRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcg dG8gdHlwZSBzbWFsbGludAorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6 IHRydWV9Jzo6anNvbmIsICdhJyk7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGJvb2xlYW4g dG8gdHlwZSByZWFsCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IFsxLDJd fSc6Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGludDIKK0VSUk9SOiAgY2Fubm90IGNh c3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgc21hbGxpbnQKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiB7IngiOjF9fSc6Ompzb25iLCAnYScpOyAgLS0gY29u dGFpbmVyIHRvIGZsb2F0NAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmpl Y3QgdG8gdHlwZSByZWFsCistLSBpbnQyIG92ZXJmbG93CitTRUxFQ1QganNvbmJfb2JqZWN0X2Zp ZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOworRVJST1I6ICBzbWFsbGludCBv dXQgb2YgcmFuZ2UKKy0tIFNlY3Rpb24gSTI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24g 4oCUIG9uZSBwZXIgZmFtaWx5ICh1c2luZyBpbnQyKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9pbnQyKHRl c3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7Cisg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iX2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2lu dDIodGVzdF9hcnIsIDApCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQyIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNj YW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9p bnQyKHRlc3RfanNvbiwgJ3tmaWVsZDR9Jzo6dGV4dFtdKQorICAgRmlsdGVyOiAodGVzdF9qc29u Yi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwg JyQuZmllbGQ0JykpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNv bmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQyKHRlc3RfanNvbiwgJyQu ImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAodGVz dF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KHRl c3RfanNvbiwgJyQuZmllbGQ0JykpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBw Z190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9p bnQyKHRlc3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNl KQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygz IHJvd3MpCisKKy0tIGZsb2F0NCByZXdyaXRlIChvbmUgcmVwcmVzZW50YXRpdmUpCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6Zmxv YXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNv bmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCh0ZXN0X2pzb24sICdmaWVsZDQnOjp0ZXh0KQorICAgRmls dGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisK Ky0tIFNlY3Rpb24gSTM6IG11bHRpLXN1YnNjcmlwdCBhdXRvbWF0aWMgY292ZXJhZ2UKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNiddWydmMSdd KTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfaW50 Mih0ZXN0X2pzb24sIEFSUkFZWydmaWVsZDYnOjp0ZXh0LCAnZjEnOjp0ZXh0XSkKKyAgIEZpbHRl cjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitT RUxFQ1QgKCgneyJhIjp7ImIiOjd9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQyOworIGludDIg CistLS0tLS0KKyAgICA3CisoMSByb3cpCisKKy0tIFNlY3Rpb24gSTQ6IHJlcHJlc2VudGF0aXZl IGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdGUgKGRpc3RyaWJ1dGVkIGFjcm9zcyBmYW1pbGllcykK Ky0tIG9iamVjdC1maWVsZDogaW50MgorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpp bnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQyIAor LS0tLS0tCisgICAgNAorKDEgcm93KQorCistLSBvYmplY3QtZmllbGQ6IGZsb2F0NAorU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworIGZsb2F0NCAKKy0tLS0tLS0tCisgICAgICA0CisoMSByb3cp CisKKy0tIGFycmF5LWVsZW1lbnQ6IGludDIKK1NFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDIg RlJPTSB0ZXN0X2pzb25iX2FycjsKKyBpbnQyIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCist LSBhcnJheS1lbGVtZW50OiBmbG9hdDQKK1NFTEVDVCAodGVzdF9hcnIgLT4gMSk6OmZsb2F0NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworIGZsb2F0NCAKKy0tLS0tLS0tCisgICAgMi41CisoMSByb3cp CisKKy0tIGV4dHJhY3QtcGF0aDogZmxvYXQ0CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxk NH0nKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsK KyBmbG9hdDQgCistLS0tLS0tLQorICAgICAgNAorKDEgcm93KQorCistLSBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0OiBpbnQyCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6NDJ9 Jzo6anNvbmIsICckLmEnKSk6OmludDI7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKwor LS0ganNvbmJfcGF0aF9xdWVyeV9maXJzdF90ejogZmxvYXQ0CitTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3RfdHooJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYScpKTo6ZmxvYXQ0OworIGpz b25iX3BhdGhfcXVlcnlfZmlyc3RfdHogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAzLjE0CisoMSByb3cpCisKKy0tIFNlY3Rpb24gSTU6IE5VTEwg dGhyb3VnaCByZXdyaXRlCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9uZXhpc3RlbnQnKTo6aW50 MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgaW50MiAKKy0t LS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2FyciAtPiAzKTo6ZmxvYXQ0IEZS T00gdGVzdF9qc29uYl9hcnI7ICAtLSBKU09OIG51bGwgZWxlbWVudAorIGZsb2F0NCAKKy0tLS0t LS0tCisgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZS T00gdGVzdF9qc29uYl9hcnI7ICAtLSBvdXQgb2YgcmFuZ2UKKyBpbnQyIAorLS0tLS0tCisgICAg IAorKDEgcm93KQorCistLSBTZWN0aW9uIEk2OiB0eXBlLW1pc21hdGNoIHRocm91Z2ggcmV3cml0 ZQorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjppbnQyIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBpbnQyCitFUlJPUjogIGNh bm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIHNtYWxsaW50CitTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQxJyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7ICAtLSBzdHJpbmcgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIHJlYWwKKy0tIFNlY3Rpb24gSTc6IGRpcmVjdCBjYWxscyB0byBvdGhl ciBmYW1pbHkgYnVpbHRpbnMgKHJlcHJlc2VudGF0aXZlKQorU0VMRUNUIGpzb25iX2FycmF5X2Vs ZW1lbnRfaW50MignWzEwLCAyMF0nOjpqc29uYiwgMCk7CisganNvbmJfYXJyYXlfZWxlbWVudF9p bnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg MTAKKygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4xNCwg Mi41XSc6Ompzb25iLCAxKTsKKyBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0NCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIDIuNQorKDEgcm93 KQorCitTRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2ludDIoJ3siYSI6eyJiIjo3fX0nOjpqc29u YiwgQVJSQVlbJ2EnLCdiJ10pOworIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQyIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICA3CisoMSByb3cpCisKK1NF TEVDVCBqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZ WydhJ10pOworIGpzb25iX2V4dHJhY3RfcGF0aF9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDIoJ3siYSI6NDJ9Jzo6anNvbmIsICckLmEnOjpqc29u cGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDIg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg ICA0MgorKDEgcm93KQorCitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDQoJ3si YSI6My4xNH0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOwor IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVD VCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDIoJ3siYSI6NDJ9Jzo6anNvbmIsICckLmEn Ojpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X3R6X2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9m aXJzdF90el9mbG9hdDQoJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30n Ojpqc29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfZmxvYXQ0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKIFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsKICA/Y29sdW1uPyAKIC0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pzb25iLnNxbAppbmRleCBlZDcwYzRkMjllZS4uYzNlMWM3YWU3MzUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwKQEAgLTE2Nyw4ICsxNjcsNiBAQCBFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDcnKTo6Ym9vbCBGUk9NIHRlc3Rf anNvbgogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAn ZmllbGQ0Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmll bGQ0Jyk6OmludDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwog RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0 Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1F WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQn KTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1FWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6 ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIAogLS0g U2VjdGlvbiAxYjogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiBmb3Igc3Vic2NyaXB0aW5n IHN5bnRheAogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsn ZmllbGQ0J10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsKQEAgLTE3Niw4ICsxNzQsMTAgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgKHRlc3RfanNvblsnZmllbGQ3J10pOjpib29sIEZST00gdGVzdF9qc29uYgogRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ0 IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIEVYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1FWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCistLSBWZXJpZnkgdGhhdCBpbnQyIGFuZCBm bG9hdDQgYXJlIGFsc28gcmV3cml0dGVuIHRocm91Z2ggdGhlIG9iamVjdC1maWVsZCBmYW1pbHku CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVs ZDQnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQn KTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIAog LS0gU2VjdGlvbiAyOiBjb3JyZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSByZXdyaXR0ZW4gcGF0 aAogU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKQEAgLTE4NSw4ICsxODUsNiBAQCBTRUxFQ1Qg KHRlc3RfanNvbiAtPiAnZmllbGQ3Jyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdvYmplY3QnOwogU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ0IEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIFNFTEVDVCAodGVzdF9q c29uIC0+ICdmaWVsZDQnKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CiBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1TRUxFQ1QgKHRlc3RfanNvbiAt PiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOwotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogCiAtLSBTZWN0aW9uIDJiOiBjb3JyZWN0 IGV4ZWN1dGlvbiB0aHJvdWdoIHN1YnNjcmlwdGluZyBzeW50YXgKIFNFTEVDVCAodGVzdF9qc29u WydmaWVsZDQnXSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOwpAQCAtMTk0LDggKzE5MiwxMCBAQCBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ3J10p Ojpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIFNFTEVD VCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdvYmplY3QnOwogU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBTRUxFQ1QgKHRlc3RfanNv blsnZmllbGQ0J10pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOwotU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50MiBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1TRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0 J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor CistLSBVbnN1cHBvcnRlZCB0YXJnZXRzIHN0aWxsIHdvcmsgY29ycmVjdGx5IHRocm91Z2ggdGhl IG9yaWdpbmFsIHBhdGgKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50MiBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CiAKIC0tIFNlY3Rpb24gMzogTlVMTCBzZW1hbnRpY3MgKG1pc3Npbmcga2V5LCBK U09OIG51bGwsIG5vbi1vYmplY3QgaW5wdXQpCiBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQz Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAg LS0gSlNPTiBudWxsCkBAIC0yMDYsMTAgKzIwNiw2IEBAIFNFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDMnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CiBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9uZXhpc3RlbnQnKTo6aW50NCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwgaW50NAogU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMycpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gSlNPTiBudWxsLCBmbG9hdDggcGF0aAogU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ4Ci1TRUxFQ1Qg KHRlc3RfanNvbiAtPiAnZmllbGQzJyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdvYmplY3QnOyAgLS0gSlNPTiBudWxsLCBpbnQyIHBhdGgKLVNFTEVDVCAodGVzdF9q c29uIC0+ICdub25leGlzdGVudCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIG1pc3Npbmcga2V5LCBpbnQyCi1TRUxFQ1QgKHRlc3RfanNvbiAt PiAnZmllbGQzJyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29i amVjdCc7ICAtLSBKU09OIG51bGwsIGZsb2F0NCBwYXRoCi1TRUxFQ1QgKHRlc3RfanNvbiAtPiAn bm9uZXhpc3RlbnQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsgIC0tIG1pc3Npbmcga2V5LCBmbG9hdDQKIAogLS0gU2VjdGlvbiAzYjogTlVMTCBz ZW1hbnRpY3MgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CiBTRUxFQ1QgKHRlc3RfanNvblsn ZmllbGQzJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsgIC0tIEpTT04gbnVsbApAQCAtMjI1LDEwICsyMjEsNiBAQCBTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQxJyk6OmludDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOwogU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpmbG9hdDggRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGZsb2F0OAog U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGludDQKIFNFTEVDVCAodGVzdF9q c29uIC0+ICdmaWVsZDUnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGZsb2F0OAotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2Zp ZWxkMScpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0Jzsg IC0tIHN0cmluZyB0byBpbnQyCi1TRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmZsb2F0 NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcg dG8gZmxvYXQ0Ci1TRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ1Jyk6OmludDIgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gaW50MgotU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ0CiAKIC0tIFNlY3Rpb24g NGI6IHR5cGUtbWlzbWF0Y2ggZXJyb3IgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CiBTRUxF Q1QgKHRlc3RfanNvblsnZmllbGQxJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCkBAIC0yNDIsMTAgKzIz NCw2IEBAIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfYm9vbCgneyJhIjogZmFsc2V9Jzo6anNv bmIsICdhJyk7CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IDQyfSc6Ompz b25iLCAnYScpOwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ4KCd7ImEiOiA5ODc2NTQz MjEwfSc6Ompzb25iLCAnYScpOwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3si YSI6IDMuMTR9Jzo6anNvbmIsICdhJyk7Ci1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIo J3siYSI6IDQyfSc6Ompzb25iLCAnYScpOwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQy KCd7ImEiOiAzfSc6Ompzb25iLCAnYScpOwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9h dDQoJ3siYSI6IDMuMTR9Jzo6anNvbmIsICdhJyk7Ci1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxk X2Zsb2F0NCgneyJhIjogMS41fSc6Ompzb25iLCAnYScpOwogLS0gZGlyZWN0IGNhbGxzOiBOVUxM IHNlbWFudGljcwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmljKCd7ImEiOiAxfSc6 Ompzb25iLCAnbWlzc2luZycpOwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmljKCd7 ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOwpAQCAtMjUzLDEwICsyNDEsNiBAQCBTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2Jvb2woJ3siYSI6IHRydWV9Jzo6anNvbmIsICdtaXNzaW5nJyk7CiBT RUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5n Jyk7CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IG51bGx9Jzo6anNvbmIs ICdhJyk7CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0OCgneyJhIjogMS4wfSc6Ompz b25iLCAnbWlzc2luZycpOwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAx fSc6Ompzb25iLCAnbWlzc2luZycpOwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9h dDQoJ3siYSI6IDEuMH0nOjpqc29uYiwgJ21pc3NpbmcnKTsKLVNFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfZmxvYXQ0KCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOwogLS0gZGlyZWN0IGNhbGxz OiB0eXBlLW1pc21hdGNoIGVycm9ycwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmlj KCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxk X2Jvb2woJ3siYSI6IDF9Jzo6anNvbmIsICdhJyk7CkBAIC0yNjQsMTQgKzI0OCw4IEBAIFNFTEVD VCBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYygneyJhIjogeyJ4IjoxfX0nOjpqc29uYiwgJ2En KTsgIC0tIGNvbnRhaW5lciB0CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6 ICJ0ZXh0In0nOjpqc29uYiwgJ2EnKTsKIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50OCgn eyJhIjogdHJ1ZX0nOjpqc29uYiwgJ2EnKTsKIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxv YXQ4KCd7ImEiOiBbMSwyXX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDgK LVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogInRleHQifSc6Ompzb25iLCAn YScpOyAgLS0gc3RyaW5nIHRvIGludDIKLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0 KCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOyAgLS0gYm9vbCB0byBmbG9hdDQKLVNFTEVDVCBq c29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAtLSBj b250YWluZXIgdG8gaW50MgotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6 IHsieCI6MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ0CiAtLSBkaXJl Y3QgY2FsbHM6IGludGVnZXIgb3ZlcmZsb3cKIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50 NCgneyJhIjogOTk5OTk5OTk5OX0nOjpqc29uYiwgJ2EnKTsKLS0tIGRpcmVjdCBjYWxsczogaW50 MiBvdmVyZmxvdwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiA5OTk5OX0n Ojpqc29uYiwgJ2EnKTsKIAogLS0gT3B0aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246IGFycmF5LWVs ZW1lbnQgZmFtaWx5CiAtLSBUaGUgcGxhbm5lciByZXdyaXRlcyAoai0+aWR4KTo6dHlwZSBhbmQg KGpbaWR4XSk6OnR5cGUgaW50byBkaXJlY3QKQEAgLTI4Nyw4ICsyNjUsNiBAQCBFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDQgRlJPTSB0ZXN0 X2pzb25iX2FycjsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2Fy ciAtPiAxKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7CiBFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMik6OmJvb2wgRlJPTSB0ZXN0X2pzb25iX2Fy cjsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6 aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOwotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7Ci1FWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMSk6OmZsb2F0NCBGUk9N IHRlc3RfanNvbmJfYXJyOwogCiAtLSBTZWN0aW9uIEExYjogcGxhbm5lciByZXdyaXRlIHZlcmlm aWNhdGlvbiAoYXJyYXkgc3Vic2NyaXB0aW5nIGZvcm0pCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMF0pOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9hcnI7 CkBAIC0yOTYsNyArMjcyLDYgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfYXJyWzBdKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOwogRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzFdKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29u Yl9hcnI7CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMl0p Ojpib29sIEZST00gdGVzdF9qc29uYl9hcnI7CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7Ci1FWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQyIEZST00gdGVz dF9qc29uYl9hcnI7CiAKIC0tIFNlY3Rpb24gQTFjOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0 aW9uIChkaXJlY3QgZnVuY3Rpb24gY2FsbCBmb3JtKQogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKGpzb25iX2FycmF5X2VsZW1lbnQodGVzdF9hcnIsIDApKTo6aW50NCBGUk9N IHRlc3RfanNvbmJfYXJyOwpAQCAtMzA3LDggKzI4Miw2IEBAIFNFTEVDVCAodGVzdF9hcnIgLT4g MCk6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsKIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6Om51 bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsKIFNFTEVDVCAodGVzdF9hcnIgLT4gMSk6OmZsb2F0 OCBGUk9NIHRlc3RfanNvbmJfYXJyOwogU0VMRUNUICh0ZXN0X2FyciAtPiAyKTo6Ym9vbCBGUk9N IHRlc3RfanNvbmJfYXJyOwotU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3Rf anNvbmJfYXJyOwotU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29u Yl9hcnI7CiAKIC0tIFNlY3Rpb24gQTJiOiBjb3JyZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHN1YnNj cmlwdGluZwogU0VMRUNUICh0ZXN0X2FyclswXSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsK QEAgLTMyMSw4ICsyOTQsNiBAQCBTRUxFQ1QgKHRlc3RfYXJyIC0+IDMpOjpudW1lcmljIEZST00g dGVzdF9qc29uYl9hcnI7ICAtLSBKU09OIG51bGwgZWxlbWVudAogU0VMRUNUICh0ZXN0X2FyciAt PiAtMSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG5lZ2F0aXZlOiBsYXN0IGVsZW1l bnQgaXMgb2JqZWN0LCB3cm9uZyB0eXBlIHdvdWxkIGVycm9yOyB1c2UgLTQgZm9yIG51bGwKIFNF TEVDVCAodGVzdF9hcnIgLT4gLTQpOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBu ZWdhdGl2ZSBpbmRleCBwb2ludGluZyB0byBudWxsIGVsZW1lbnQKIFNFTEVDVCAoJ3siayI6MX0n Ojpqc29uYiAtPiAwKTo6aW50NDsgIC0tIG5vbi1hcnJheSBpbnB1dAotU0VMRUNUICh0ZXN0X2Fy ciAtPiA5OSk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZSwgaW50 MgotU0VMRUNUICh0ZXN0X2FyciAtPiAzKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAt LSBKU09OIG51bGwgZWxlbWVudCwgZmxvYXQ0CiAKIC0tIFNlY3Rpb24gQTNiOiBOVUxMIHRocm91 Z2ggc3Vic2NyaXB0aW5nCiBTRUxFQ1QgKHRlc3RfYXJyWzk5XSk6OmZsb2F0OCBGUk9NIHRlc3Rf anNvbmJfYXJyOyAgLS0gb3V0IG9mIHJhbmdlCkBAIC0zMzQsOCArMzA1LDYgQEAgU0VMRUNUICh0 ZXN0X2FyciAtPiA0KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBzdHJpbmcgdG8g ZmxvYXQ4CiBTRUxFQ1QgKHRlc3RfYXJyIC0+IDUpOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9h cnI7ICAtLSBhcnJheSBjb250YWluZXIgdG8gbnVtZXJpYwogU0VMRUNUICh0ZXN0X2FyciAtPiA2 KTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gb2JqZWN0IGNvbnRhaW5lciB0byBpbnQ4 CiBTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBi b29sIHRvIGludDQKLVNFTEVDVCAodGVzdF9hcnIgLT4gNCk6OmludDIgRlJPTSB0ZXN0X2pzb25i X2FycjsgIC0tIHN0cmluZyB0byBpbnQyCi1TRUxFQ1QgKHRlc3RfYXJyIC0+IDQpOjpmbG9hdDQg RlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9hdDQKIAogLS0gU2VjdGlvbiBB NGI6IGVycm9yIHRocm91Z2ggc3Vic2NyaXB0aW5nCiBTRUxFQ1QgKHRlc3RfYXJyWzRdKTo6aW50 OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gc3RyaW5nIHRvIGludDgKQEAgLTM1NCw5ICszMjMs NiBAQCBTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDgoJ3siYSI6MX0nOjpqc29uYiwg MCk7ICAtLSBub24tYXJyYXkKIFNFTEVDVCBqc29uYl9hcnJheV9lbGVtZW50X2ludDQoJ1sidGV4 dCJdJzo6anNvbmIsIDApOwogU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCgnW3RydWVd Jzo6anNvbmIsIDApOwogU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ4KCdbWzEsMl1d Jzo6anNvbmIsIDApOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0OAotU0VMRUNUIGpzb25iX2FycmF5 X2VsZW1lbnRfaW50MignWzEwLCAyMF0nOjpqc29uYiwgMCk7Ci1TRUxFQ1QganNvbmJfYXJyYXlf ZWxlbWVudF9mbG9hdDQoJ1szLjE0LCAyLjVdJzo6anNvbmIsIDEpOwotCiAKIC0tIE9wdGltaXpl ZCB0eXBlZCBleHRyYWN0aW9uOiBleHRyYWN0LXBhdGggZmFtaWx5CiAtLSBUaGUgcGxhbm5lciBy ZXdyaXRlcyAoaiAjPiBwYXRoKTo6dHlwZSBhbmQgKGpzb25iX2V4dHJhY3RfcGF0aChqLCAuLi4p KTo6dHlwZQpAQCAtMzY5LDggKzMzNSw2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmZsb2F0OCBGUk9NIHRlc3RfCiBFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ2LGYx fScpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIEVY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDd9 Jyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogCi1F WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0 fScpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLUVY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9 Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAt LSBTZWN0aW9uIFAxYjogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoZGlyZWN0IGZ1bmN0 aW9uLWNhbGwgZm9ybSkKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29u Yl9leHRyYWN0X3BhdGgodGVzdF9qc29uLCAnZmllbGQ0JykpOjpmbG9hdDggRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKGpzb25iX2V4dHJhY3RfcGF0aCh0ZXN0X2pzb24sICdmaWVsZDYnLCAnZjEn KSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwpAQCAt NDE0LDEwICszNzgsNiBAQCBTRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2ludDQoJ3siYSI6MX0n Ojpqc29uYiwgQVJSQVlbJ2InXSk7CiBTRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2ludDQoJ3si YSI6InRleHQifSc6Ompzb25iLCBBUlJBWVsnYSddKTsKIC0tIGRpcmVjdCBjYWxsczogYXJyYXkg aW5kZXggaW4gcGF0aAogU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOlsxMCwy MF19Jzo6anNvbmIsIEFSUkFZWydhJywnMSddKTsKLS0tIGRpcmVjdCBjYWxsczogaW50MiBhbmQg ZmxvYXQ0Ci1TRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2ludDIoJ3siYSI6eyJiIjo3fX0nOjpq c29uYiwgQVJSQVlbJ2EnLCdiJ10pOwotU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9mbG9hdDQo J3siYSI6My4xNH0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7Ci0KIAogLS0gT3B0aW1pemVkIHR5cGVk IGV4dHJhY3Rpb246IG11bHRpLXN1YnNjcmlwdCBjaGFpbnMKIC0tIFRoZSBwbGFubmVyIGxvd2Vy cyBqWydhJ11bJ2InXSwgalsnYSddWzBdLCBldGMuIHRvIHRoZSBleHRyYWN0LXBhdGggdHlwZWQK QEAgLTQzMywxMCArMzkzLDYgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfanNvblsnZmllbGQ2J11bJ2YxJ10pOjpudW1lcmljIEZST00gdGUKIC0tIFZlcmlmeSBz aW5nbGUgc3Vic2NyaXB0IHN0aWxsIHVzZXMgdGhlIGV4aXN0aW5nIG9iamVjdC1maWVsZCBmYW1p bHksIG5vdCBleHRyYWN0LXBhdGgKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU ICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CiAKLQotLS0gU2VjdGlvbiBNMWI6IG11bHRpLXN1YnNjcmlwdCBpbnQy L2Zsb2F0NAotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsn ZmllbGQ2J11bJ2YxJ10pOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKLVNFTEVDVCAoKCd7ImEiOnsiYiI6N319Jzo6anNvbmIpWydhJ11bJ2InXSk6Omlu dDI7CiAtLSBTZWN0aW9uIE0yOiBleGVjdXRpb24gdGhyb3VnaCBtdWx0aS1zdWJzY3JpcHQgcmV3 cml0ZQogU0VMRUNUICgoJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDQ7 CiBTRUxFQ1QgKCgneyJhIjpbMTAsMjAsMzBdfSc6Ompzb25iKVsnYSddWzFdKTo6aW50NDsKQEAg LTQ2Miw2ICs0MTgsMTczIEBAIFNFTEVDVCAoKCd7ImEiOnsiYiI6WzEsMl19fSc6Ompzb25iKVsn YSddWydiJ10pOjppbnQ0OyAgLS0gY29udGFpbmVyIHRvIGludDQKIEVYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKIFNFTEVDVCAoKCd7ImEiOltbMTAsMjBdLFszMCw0MF1dfSc6Ompzb25iKVsn YSddW2ldWzBdKTo6aW50NCBGUk9NIGdlbmVyYXRlX3NlcmllcygwLDEpIEFTIGk7CiAKKy0tIE9w dGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IGZhbWlseQor LS0gVGhlIHBsYW5uZXIgcmV3cml0ZXMgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoaiwgcGF0aCkp Ojp0eXBlIGludG8gYSBkaXJlY3QKKy0tIHR5cGVkIGV4dHJhY3RvciBjYWxsIGZvciB0aGUgc2Ft ZSB0YXJnZXQgdHlwZXMgYXMgdGhlIG90aGVyIGZhbWlsaWVzLgorCistLSBTZWN0aW9uIFExOiBw bGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6 aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0 X2pzb24sICckLmZpZWxkNycpKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJf cGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6bnVtZXJpYyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZp ZWxkNCcpKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9m aXJzdCh0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKy0tIDMtYXJnIGZvcm0gKHZhcnMgZXhwbGljaXQpCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJz dCh0ZXN0X2pzb24sICckLmZpZWxkNCcsICd7fScpKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSA0LWFyZyBmb3JtICh2YXJzICsgc2lsZW50IGV4 cGxpY2l0KQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDQnLCAne30nLCB0cnVlKSk6OmZsb2F0OCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24g UTI6IGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdGUKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9m aXJzdCgneyJhIjo0Mn0nOjpqc29uYiwgJyQuYScpKTo6aW50NDsKK1NFTEVDVCAoanNvbmJfcGF0 aF9xdWVyeV9maXJzdCgneyJhIjozLjE0fSc6Ompzb25iLCAnJC5hJykpOjpmbG9hdDg7CitTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6dHJ1ZX0nOjpqc29uYiwgJyQuYScpKTo6 Ym9vbDsKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjo5OX0nOjpqc29uYiwg JyQuYScpKTo6bnVtZXJpYzsKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjo5 OX0nOjpqc29uYiwgJyQuYScpKTo6aW50ODsKKy0tIG5lc3RlZCBvYmplY3QgcGF0aAorU0VMRUNU IChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iLCAnJC5hLmIn KSk6OmludDQ7CistLSBhcnJheSBhY2Nlc3MgaW4ganNvbnBhdGgKK1NFTEVDVCAoanNvbmJfcGF0 aF9xdWVyeV9maXJzdCgneyJhIjpbMTAsMjBdfSc6Ompzb25iLCAnJC5hWzFdJykpOjppbnQ0Owor CistLSBTZWN0aW9uIFEzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0KCd7ImEiOjF9Jzo6anNvbmIsICckLmInKSk6OmludDQ7ICAtLSBtaXNzaW5nIHBhdGgK K1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjpudWxsfSc6Ompzb25iLCAnJC5h JykpOjppbnQ0OyAgLS0gSlNPTiBudWxsCisKKy0tIFNlY3Rpb24gUTQ6IHNpbGVudCBzZW1hbnRp Y3MKKy0tIHNpbGVudD10cnVlIHN1cHByZXNzZXMganNvbnBhdGggZXhlY3V0aW9uIGVycm9ycywg Tk9UIGNhc3QgZXJyb3JzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6InRl eHQifSc6Ompzb25iLCAnJC5hJywgJ3t9JywgdHJ1ZSkpOjppbnQ0OyAgLS0gY2FzdCBlcnJvciBu b3Qgc3VwcHJlc3NlZAorLS0gc2lsZW50PWZhbHNlIChkZWZhdWx0KToganNvbnBhdGggc3RyaWN0 IGVycm9yCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6MX0nOjpqc29uYiwg J3N0cmljdCAkLmInLCAne30nLCBmYWxzZSkpOjppbnQ0OyAgLS0gc3RyaWN0IG1pc3Npbmcga2V5 IGVycm9yCistLSBzaWxlbnQ9dHJ1ZToganNvbnBhdGggc3RyaWN0IGVycm9yIHN1cHByZXNzZWQK K1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjoxfSc6Ompzb25iLCAnc3RyaWN0 ICQuYicsICd7fScsIHRydWUpKTo6aW50NDsgIC0tIHN1cHByZXNzZWQsIHJldHVybnMgTlVMTAor CistLSBTZWN0aW9uIFE1OiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIChqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0KCd7ImEiOiJoZWxsbyJ9Jzo6anNvbmIsICckLmEnKSk6OmludDQ7ICAtLSBz dHJpbmcgdG8gaW50NAorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOlsxLDJd fSc6Ompzb25iLCAnJC5hJykpOjppbnQ0OyAgLS0gY29udGFpbmVyIHRvIGludDQKKworLS0gU2Vj dGlvbiBRNjogZGlyZWN0IGNhbGxzIHRvIHR5cGVkIGV4dHJhY3RvciBidWlsdGlucworU0VMRUNU IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50NCgneyJhIjo0Mn0nOjpqc29uYiwgJyQuYSc6Ompz b25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfaW50OCgneyJhIjo5OX0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwg ZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxvYXQ4KCd7ImEiOjMuMTR9 Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKK1NFTEVDVCBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X251bWVyaWMoJ3siYSI6MS4yM30nOjpqc29uYiwgJyQuYSc6 Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlf Zmlyc3RfYm9vbCgneyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompz b25iLCBmYWxzZSk7CistLSBkaXJlY3QgY2FsbDogbWlzc2luZyBwYXRoCitTRUxFQ1QganNvbmJf cGF0aF9xdWVyeV9maXJzdF9pbnQ0KCd7ImEiOjF9Jzo6anNvbmIsICckLmInOjpqc29ucGF0aCwg J3t9Jzo6anNvbmIsIGZhbHNlKTsKKy0tIGRpcmVjdCBjYWxsOiB3aXRoIHZhcnMKK1NFTEVDVCBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQoJ3siYSI6NDJ9Jzo6anNvbmIsICckLmEgPyAoQCA+ ICR4KSc6Ompzb25wYXRoLCAneyJ4IjoxMH0nOjpqc29uYiwgZmFsc2UpOworCistLSBPcHRpbWl6 ZWQgdHlwZWQgZXh0cmFjdGlvbjoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiBmYW1pbHkKKy0t IFNhbWUgcGF0dGVybiBhcyB0aGUgbm9uLXR6IGZhbWlseSwgYnV0IHdpdGggdGltZXpvbmUtYXdh cmUgZXZhbHVhdGlvbi4KKworLS0gU2VjdGlvbiBUMTogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNh dGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVsZDQnKSk6OmludDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVsZDcn KSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3Rf dHoodGVzdF9qc29uLCAnJC5maWVsZDQnKSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVsZDQnKSk6Omlu dDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVz dF9qc29uLCAnJC5maWVsZDQnKSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CistLSAzLWFyZyBmb3JtICh2YXJzIGV4cGxpY2l0KQorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVz dF9qc29uLCAnJC5maWVsZDQnLCAne30nKSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworLS0gNC1hcmcgZm9ybSAodmFycyArIHNpbGVudCBleHBsaWNp dCkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6KHRlc3RfanNvbiwgJyQuZmllbGQ0JywgJ3t9JywgdHJ1ZSkpOjpmbG9hdDggRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCistLSBTZWN0aW9uIFQy OiBleGVjdXRpb24gdGhyb3VnaCByZXdyaXRlCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmly c3RfdHooJ3siYSI6NDJ9Jzo6anNvbmIsICckLmEnKSk6OmludDQ7CitTRUxFQ1QgKGpzb25iX3Bh dGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYScpKTo6ZmxvYXQ4Owor U0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOnRydWV9Jzo6anNvbmIsICck LmEnKSk6OmJvb2w7CitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6OTl9 Jzo6anNvbmIsICckLmEnKSk6Om51bWVyaWM7CitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmly c3RfdHooJ3siYSI6OTl9Jzo6anNvbmIsICckLmEnKSk6OmludDg7CistLSBuZXN0ZWQgcGF0aAor U0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25i LCAnJC5hLmInKSk6OmludDQ7CistLSBhcnJheSBhY2Nlc3MKK1NFTEVDVCAoanNvbmJfcGF0aF9x dWVyeV9maXJzdF90eigneyJhIjpbMTAsMjBdfSc6Ompzb25iLCAnJC5hWzFdJykpOjppbnQ0Owor CistLSBTZWN0aW9uIFQzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6KCd7ImEiOjF9Jzo6anNvbmIsICckLmInKSk6OmludDQ7ICAtLSBtaXNzaW5nIHBh dGgKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjpudWxsfSc6Ompzb25i LCAnJC5hJykpOjppbnQ0OyAgLS0gSlNPTiBudWxsCisKKy0tIFNlY3Rpb24gVDQ6IHNpbGVudCBz ZW1hbnRpY3MKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjoidGV4dCJ9 Jzo6anNvbmIsICckLmEnLCAne30nLCB0cnVlKSk6OmludDQ7ICAtLSBjYXN0IGVycm9yIG5vdCBz dXBwcmVzc2VkCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6MX0nOjpq c29uYiwgJ3N0cmljdCAkLmInLCAne30nLCBmYWxzZSkpOjppbnQ0OyAgLS0gc3RyaWN0IGVycm9y CitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6MX0nOjpqc29uYiwgJ3N0 cmljdCAkLmInLCAne30nLCB0cnVlKSk6OmludDQ7ICAtLSBzdXBwcmVzc2VkLCBOVUxMCisKKy0t IFNlY3Rpb24gVDU6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHooJ3siYSI6ImhlbGxvIn0nOjpqc29uYiwgJyQuYScpKTo6aW50NDsKKworLS0g U2VjdGlvbiBUNjogZGlyZWN0IGNhbGxzIHRvIHR5cGVkIGV4dHJhY3RvciBidWlsdGlucworU0VM RUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50NCgneyJhIjo0Mn0nOjpqc29uYiwgJyQu YSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHpfaW50OCgneyJhIjo5OX0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30n Ojpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfZmxvYXQ4 KCd7ImEiOjMuMTR9Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNl KTsKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X251bWVyaWMoJ3siYSI6MS4yM30n Ojpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpz b25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfYm9vbCgneyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJzo6 anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CisKKy0tIE9wdGltaXplZCB0eXBlZCBleHRy YWN0aW9uOiBpbnQyIC8gZmxvYXQ0IG1hdHJpeCBjb21wbGV0aW9uCistLSBFeHRlbmRzIHRoZSBl eGlzdGluZyB0eXBlZCBleHRyYWN0b3IgZmFtaWxpZXMgdG8gY292ZXIgaW50MiAoc21hbGxpbnQp CistLSBhbmQgZmxvYXQ0IChyZWFsKSB0YXJnZXQgdHlwZXMuCisKKy0tIFNlY3Rpb24gSTE6IGRp cmVjdCBjYWxscyB0byBpbnQyIC8gZmxvYXQ0IHR5cGVkIGV4dHJhY3RvciBidWlsdGlucyAob2Jq ZWN0LWZpZWxkKQorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiA0Mn0nOjpq c29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogM30nOjpq c29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiAzLjE0 fSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6 IDEuNX0nOjpqc29uYiwgJ2EnKTsKKy0tIE5VTEwgc2VtYW50aWNzCitTRUxFQ1QganNvbmJfb2Jq ZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7CitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMS4wfSc6Ompzb25iLCAnbWlzc2luZycp OworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IG51bGx9Jzo6anNvbmIs ICdhJyk7CistLSB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9pbnQyKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2Zsb2F0NCgneyJhIjogdHJ1ZX0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfaW50MigneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWlu ZXIgdG8gaW50MgorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IHsieCI6 MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ0CistLSBpbnQyIG92ZXJm bG93CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25i LCAnYScpOworCistLSBTZWN0aW9uIEkyOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIOKA lCBvbmUgcGVyIGZhbWlseSAodXNpbmcgaW50MikKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6 aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0 X2pzb24sICckLmZpZWxkNCcpKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJf cGF0aF9xdWVyeV9maXJzdF90eih0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6aW50MiBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBmbG9hdDQgcmV3cml0ZSAo b25lIHJlcHJlc2VudGF0aXZlKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24gSTM6IG11bHRpLXN1YnNjcmlwdCBhdXRv bWF0aWMgY292ZXJhZ2UKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0 X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKCgneyJhIjp7ImIiOjd9fSc6Ompzb25iKVsnYSddWydi J10pOjppbnQyOworCistLSBTZWN0aW9uIEk0OiByZXByZXNlbnRhdGl2ZSBleGVjdXRpb24gdGhy b3VnaCByZXdyaXRlIChkaXN0cmlidXRlZCBhY3Jvc3MgZmFtaWxpZXMpCistLSBvYmplY3QtZmll bGQ6IGludDIKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50MiBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBvYmplY3QtZmllbGQ6IGZsb2F0 NAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworLS0gYXJyYXktZWxlbWVudDogaW50MgorU0VM RUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJyOworLS0gYXJyYXkt ZWxlbWVudDogZmxvYXQ0CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9hdDQgRlJPTSB0ZXN0 X2pzb25iX2FycjsKKy0tIGV4dHJhY3QtcGF0aDogZmxvYXQ0CitTRUxFQ1QgKHRlc3RfanNvbiAj PiAne2ZpZWxkNH0nKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKKy0tIGpzb25iX3BhdGhfcXVlcnlfZmlyc3Q6IGludDIKK1NFTEVDVCAoanNvbmJf cGF0aF9xdWVyeV9maXJzdCgneyJhIjo0Mn0nOjpqc29uYiwgJyQuYScpKTo6aW50MjsKKy0tIGpz b25iX3BhdGhfcXVlcnlfZmlyc3RfdHo6IGZsb2F0NAorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6KCd7ImEiOjMuMTR9Jzo6anNvbmIsICckLmEnKSk6OmZsb2F0NDsKKworLS0gU2Vj dGlvbiBJNTogTlVMTCB0aHJvdWdoIHJld3JpdGUKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdub25l eGlzdGVudCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsKK1NFTEVDVCAodGVzdF9hcnIgLT4gMyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmJfYXJyOyAg LS0gSlNPTiBudWxsIGVsZW1lbnQKK1NFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZST00g dGVzdF9qc29uYl9hcnI7ICAtLSBvdXQgb2YgcmFuZ2UKKworLS0gU2VjdGlvbiBJNjogdHlwZS1t aXNtYXRjaCB0aHJvdWdoIHJld3JpdGUKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6 aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJp bmcgdG8gaW50MgorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpmbG9hdDQgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGZsb2F0 NAorCistLSBTZWN0aW9uIEk3OiBkaXJlY3QgY2FsbHMgdG8gb3RoZXIgZmFtaWx5IGJ1aWx0aW5z IChyZXByZXNlbnRhdGl2ZSkKK1NFTEVDVCBqc29uYl9hcnJheV9lbGVtZW50X2ludDIoJ1sxMCwg MjBdJzo6anNvbmIsIDApOworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4x NCwgMi41XSc6Ompzb25iLCAxKTsKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50MigneyJh Ijp7ImIiOjd9fSc6Ompzb25iLCBBUlJBWVsnYScsJ2InXSk7CitTRUxFQ1QganNvbmJfZXh0cmFj dF9wYXRoX2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCBBUlJBWVsnYSddKTsKK1NFTEVDVCBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDIoJ3siYSI6NDJ9Jzo6anNvbmIsICckLmEnOjpqc29u cGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25i LCBmYWxzZSk7CitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQyKCd7ImEiOjQy fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CitTRUxFQ1Qg anNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDQoJ3siYSI6My4xNH0nOjpqc29uYiwgJyQu YSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworCiBTRUxFQ1QgdGVzdF9qc29uIC0+ ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxhcic7CiBTRUxFQ1Qg dGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ2FycmF5 JzsKIFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKQEAgLTE5MTksNCArMjA0Miw0IEBAIHNlbGVjdCAoJ1t7Im5hbWUiOiAi YWxpY2UifSwgeyJuYW1lIjogImJvYiJ9XSc6Ompzb25iKS5uYW1lOwogc2VsZWN0ICgndHJ1ZSc6 Ompzb25iKTo6Ym9vbDsKIHNlbGVjdCAoJ3RydWUnOjpqc29uYikuYm9vbDsKIHNlbGVjdCAoJ3si dGV4dCI6ICJoZWxsbyJ9Jzo6anNvbmIpOjp0ZXh0Owotc2VsZWN0ICgneyJ0ZXh0IjogImhlbGxv In0nOjpqc29uYikudGV4dDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitzZWxlY3QgKCd7 InRleHQiOiAiaGVsbG8ifSc6Ompzb25iKS50ZXh0OwotLSAKMi41Mi4wCgo= --0000000000008cd82706507710bc--