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.94.2) (envelope-from ) id 1uqkkC-00CV8u-TR for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Aug 2025 03:53:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uqkkB-000Ncf-ED for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Aug 2025 03:53:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uqkkA-000NcW-T3 for pgsql-hackers@lists.postgresql.org; Tue, 26 Aug 2025 03:53:11 +0000 Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uqkk8-001spb-1i for pgsql-hackers@postgresql.org; Tue, 26 Aug 2025 03:53:11 +0000 Received: by mail-pj1-x1042.google.com with SMTP id 98e67ed59e1d1-3252589a4afso2959915a91.0 for ; Mon, 25 Aug 2025 20:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756180385; x=1756785185; darn=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=fJ12rHLolhYnRqXV26KUXl0Ez0fwXOn4Ep+dzXLRirs=; b=UZ72w73jAXINIwkByI7GtYnMm9T9rQl+GMT57t4K1Nk1B2SVlsqcI5GEgQ2yJFeNy2 sAHQlg12WCUVWiq95CVsMjYDf4ZJNxtuDI4xOBptIJ4j4imGfvGDkNn0XZBHJyKDSW5D iFBW4VH47eN9cHCi1Ugd0Qj7Lkie0brDdVdaI8dYRhbD336gL48WK5xm8uQvkJHAiycX B7OuVR9zPdicZapSPt4EJMUBPbCRR9YM+VNalQ9qZPnlS8OxZrY+aJUKvUUQJtV2kRJc h/0INg7wCMy/9PaqI7d+3NVP/9HrR+7guU/vG8FjeDo4CfThXROMD2mVsmeBO6LSZNhB 4fow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756180385; x=1756785185; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fJ12rHLolhYnRqXV26KUXl0Ez0fwXOn4Ep+dzXLRirs=; b=Ln/QAbC6n5m8aEK3WWX6ncuOydoPT1faC1lF4/Z/0mnlXsrrbZzhVTRSXgnUUyjfMA 8+d2o2tSA1SX8YJ5PitMzFFHgCRdO9vA0YEYjgsYMO1vkMFkdQnbWK1y20bxjqHwMe1S bgB2ezQWbxz9s0qKVAoPxcVw8PqO22RIa62Ye0Xn1b4qe5YZwOyMCEKQ3DLe1RqAlDfc rLr17J+Mqc8FNC/xW3vEgYroNFu9gPVOb7kc+7RL4yKxaaKNPTXKFgzHFsWkvaSRUBfV E7Y65sZOmWwoaTmHEH+2OVfhkoqMXJ8qTye/l4cMitbLo0sDTxEZakeLQV6IJ19FIDdj QN8Q== X-Forwarded-Encrypted: i=1; AJvYcCWq0EDHlrpCgChLxtpE8Gy0i9sFt9qG06WB2AW4BKG/KXZaYx3k24yE9jWV46+pCWMAjYIlp8EocytbvxbT@postgresql.org X-Gm-Message-State: AOJu0YxfS+357mDHTtTrosqZRsBWoHNmkGVi2vEItRiZYNuZydAtXoiO gDaa8ia5WtVgw/C0A+pnKIFzI2WX/ZRiteMvLK9HmP6ju7IWv/ngvzZXzw9v45HM2cl8z0vAJD7 VxlRmADXqZbOVTRY0evb3/d6kSQIYeh8= X-Gm-Gg: ASbGncvFI7H8ZTteQ/7g7GfmnaG9MfCHiOi+HggxPQ24STclIOEQbFHplxrP6KYZ9X3 Z3MWwWQ8FLDjeTPlsed4X8fCw0gBWD9gh6TAS1uQ11WMtvFRjC4akjIky6/UgrI2oTRx/o+IPZB vQa5pDGF1A96agXiLMp+mmva9jpvgtwAwal4GBxnSfRjf5POZhWdXBpWkNcsq5tVSP/SCxMKBzq tuQdrzFcRByaKTsYz8= X-Google-Smtp-Source: AGHT+IH+9GZJQfTRjVTNAi7iP2tNokT8Ke11/9VoTL3QwIzKKLslwElHaHu5dpNK9NTbZuj6NOR+7o7hI522XKzOF+o= X-Received: by 2002:a17:90b:3e44:b0:323:7e33:9481 with SMTP id 98e67ed59e1d1-32515eda4e4mr16811958a91.36.1756180385085; Mon, 25 Aug 2025 20:53:05 -0700 (PDT) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> In-Reply-To: From: Alexandra Wang Date: Mon, 25 Aug 2025 20:52:28 -0700 X-Gm-Features: Ac12FXxCvWg2ZmLu-7QjJCErEC1FdPlzx-ZqNAvYUslc20EZhM6yzflhJ-n7w4A Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: jian he Cc: Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , Nikita Glukhov , PostgreSQL Hackers , "David E. Wheeler" Content-Type: multipart/mixed; boundary="000000000000047f36063d3c9c04" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000047f36063d3c9c04 Content-Type: multipart/alternative; boundary="000000000000047f34063d3c9c02" --000000000000047f34063d3c9c02 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Jian, I=E2=80=99ve attached v14, which includes only indentation and comment chan= ges from v13. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > On Sat, Aug 23, 2025 at 3:34=E2=80=AFAM Alexandra Wang > wrote: > > > > I don=E2=80=99t understand the question. In the case of an unsupported = Node > > type (not an Indices in patch 0001 or 0002), we break out of the loop > > to stop transforming the remaining subscripts. So there won=E2=80=99t b= e any > > =E2=80=98not contiguous=E2=80=99 indirection elements. > > > > Sorry, my last message is wrong. > this time, I applied v13-0001 to v13-0005. > and I found some minor issues..... > No problem. Thanks for reviewing. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > v13-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch > + /* > + * Error out, if datatype failed to consume any indirection elements. > + */ > + if (list_length(*indirection) =3D=3D indirection_length) > + { > + Node *ind =3D linitial(*indirection); > + > + if (noError) > + return NULL; > + > + if (IsA(ind, String)) > + ereport(ERROR, > + (errcode(ERRCODE_DATATYPE_MISMATCH), > + errmsg("type %s does not support dot notation", > + format_type_be(containerType)), > + parser_errposition(pstate, exprLocation(containerBase)))); > + else if (IsA(ind, A_Indices)) > + ereport(ERROR, > + (errcode(ERRCODE_DATATYPE_MISMATCH), > + errmsg("type %s does not support array subscripting", > + format_type_be(containerType)), > + parser_errposition(pstate, exprLocation(containerBase)))); > + else > + elog(ERROR, "invalid indirection operation: %d", nodeTag(ind)); > + } > > these error message still not reached after I apply > v13-0005-Implement-read-only-dot-notation-for-jsonb.patch > maybe we can simply do > > + if (noError) > + return NULL; > + > + ereport(ERROR, > + errcode(ERRCODE_DATATYPE_MISMATCH), > + errmsg("type %s does not support subscripting", > + format_type_be(containerType)), > + parser_errposition(pstate, exprLocation(containerBase))); > ? > The regression tests do not currently trigger these ERROR cases because Assignment for dot-notation has not yet been implemented. At present, the noError argument of transformContainerSubscripts() is set to true for SELECT and false for UPDATE. As a result, the ereport(ERROR) calls are never reached in SELECT queries. This patch series also does not aim to implement dot-notation for UPDATE statements that assign to a jsonb field. We have therefore made only minimal adjustments in transformAssignmentIndirection(). Since the assignment code path is separate, it likewise does not reach the ereport(ERROR) cases with in-core data types. Once dot-notation support for Assignment is added, those ERROR messages will become relevant. That said, the ERROR messages are not "dead code." They can still be triggered when working with custom data types. For example, you can define a custom array-like type by copying the in-core array type and slightly modifying its *_subscript_transform() function. For now, you can simply update array_subscript_transform() in-place with the following diff: --- a/src/backend/utils/adt/arraysubs.c +++ b/src/backend/utils/adt/arraysubs.c @@ -82,6 +82,8 @@ array_subscript_transform(SubscriptingRef *sbsref, ai =3D lfirst_node(A_Indices, idx); + if (isSlice) + break; if (isSlice) { if (ai->lidx) This way, we have a *_subscript_transform function that you can register for a custom array-like data type that does not handle slicing. Then you can hit the error message like this: test=3D# update t set arr[1:] =3D 1; ERROR: 42804: type integer[] does not support array subscripting LINE 1: update t set arr[1:] =3D 1; ^ LOCATION: transformContainerSubscripts, parse_node.c:345 test=3D# \d t Table "public.t" Column | Type | Collation | Nullable | Default --------+-----------+-----------+----------+--------- arr | integer[] | | | I know this error message is not very precise for the demo case in particular (since one might expect something about slicing), but it still demonstrates how this code path is relevant. In the meantime, I don=E2=80=99t think it=E2=80=99s worth adding a new data type to exercise t= his error message, given that we are likely to make changes to the assignment code path for in-core types. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > for V13-0004. > in master we have > if (subExpr =3D=3D NULL) > ereport(ERROR, > (errcode(ERRCODE_DATATYPE_MISMATCH), > errmsg("jsonb subscript must have text type"), > parser_errposition(pstate, > exprLocation(subExpr)))); > but this part is removed from v13-0004-Extract-coerce_jsonpath_subscript > ? I removed this one because you asked me to (see our past conversation for v11). On Wed, Jul 9, 2025 at 1:01=E2=80=AFAM Alexandra Wang wrote: > On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he > wrote: > >> v11-0004-Extract-coerce_jsonpath_subscript.patch >> + /* >> + * We known from can_coerce_type that coercion will succeed, so >> + * coerce_type could be used. Note the implicit coercion context, which >> is >> + * required to handle subscripts of different types, similar to >> overloaded >> + * functions. >> + */ >> + subExpr =3D coerce_type(pstate, >> + subExpr, subExprType, >> + targetType, -1, >> + COERCION_IMPLICIT, >> + COERCE_IMPLICIT_CAST, >> + -1); >> + if (subExpr =3D=3D NULL) >> + ereport(ERROR, >> + (errcode(ERRCODE_DATATYPE_MISMATCH), >> + errmsg("jsonb subscript must have text type"), >> >> the targetType can be "integer", then the error message >> errmsg("jsonb subscript must have text type") would be wrong? >> Also this error handling is not necessary. >> since we can_coerce_type already tell us that coercion will succeed. >> Also, do we really put v11-0004 as a separate patch? >> > > Thanks for pointing this out! I=E2=80=99ve removed the unnecessary error > handling as you suggested. I kept v12-0004 as a separate patch to make > the review easier, but I=E2=80=99ll leave it up to the committer to decid= e > whether to squash it with the other commits. > I think either way works, but I=E2=80=99d appreciate it if we could settle = on one option so we don=E2=80=99t keep going back and forth. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > coerce_jsonpath_subscript_to_int4_or_text > maybe we can just rename to > coerce_jsonpath_subscript, > then add some comments explaining why currently only support result node > coerce > to text or int4 data type. > What is the reason for renaming this function to a less explicit name? It was previously called coerce_jsonpath_subscript() because we passed INT4OID as an argument to specify the target type. I followed your earlier review comment (for v12) to remove that argument and hard-code INT4OID within the function. Given that change, I think it=E2=80=99s cleare= r to keep a more explicit name that describes what the function achieves. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > for v13-0005-Implement-read-only-dot-notation-for-jsonb.patch > > + i =3D 0; > + foreach(lc, sbsref->refupperindexpr) { > + Expr *e =3D (Expr *) lfirst(lc); > + > + /* When slicing, individual subscript bounds can be omitted */ > + if (!e) { > + sbsrefstate->upperprovided[i] =3D false; > + sbsrefstate->upperindexnull[i] =3D true; > + } else { > + sbsrefstate->upperprovided[i] =3D true; > + /* Each subscript is evaluated into appropriate array entry */ > + ExecInitExprRec(e, state, > + &sbsrefstate->upperindex[i], > + &sbsrefstate->upperindexnull[i]); > + } > + i++; > } > curly braces should be put into the next new line. > Fixed. Thank you! On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > there are two > + if (!sbsref->refjsonbpath) > +{ > +} > maybe we can put these two together. > The code blocks are different enough, and merging them would only reduce readability in my opinion. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > +SELECT (jb)['b']['x'].z FROM test_jsonb_dot_notation; -- returns NULL > with warnings > + z > +--- > + > +(1 row) > there is no warning, "returns NULL with warnings" should be removed. > Fixed. Thank you! On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > +-- clean up > +DROP TABLE test_jsonb_dot_notation; > \ No newline at end of file > > to remove "\ No newline at end of file" > you need to add a newline to jsonb.sql, you may see other regress sql > test files. > Fixed. Thank you! On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > + foreach(lc, *indirection) > + if() > + { > + } > + else > + { > + /* > + * Unexpected node type in indirection list. This should not > + * happen with current grammar, but we handle it defensively by > + * breaking out of the loop rather than crashing. In case of > + * future grammar changes that might introduce new node types, > + * this allows us to create a jsonpath from as many indirection > + * elements as we can and let transformIndirection() fallback to > + * alternative logic to handle the remaining indirection elements. > + */ > + Assert(false); /* not reachable */ > + break; > + } > + > + /* append path item */ > + path->next =3D jpi; > + path =3D jpi; > + pathlen++; > > If the above else branch is reached, it will crash due to `Assert(false);= `, > which contradicts the preceding comments. > to make the comments accurate, we need remove > " Assert(false); /* not reachable */" > ? > The Assert is intentional. We want to fail fast for the =E2=80=9Cnot reachable=E2=80=9D case in the development build, while breaking out of the loop in the production build. On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he wrote: > /* > - * Transform and convert the subscript expressions. Jsonb subscripting > - * does not support slices, look only at the upper index. > + * We would only reach here if json simplified accessor is not needed, o= r > + * if jsonb_subscript_make_jsonpath() didn't consume any indirection > + * element =E2=80=94 either way, the first indirection element could not= be > + * converted into a JsonPath component. This happens when it's a non-sli= ce > + * A_Indices with a non-integer upper index. The code below falls back t= o > + * traditional jsonb subscripting for such cases. > */ > the above comments, "non-integer" part is wrong? > For example, the below two SELECTs both use "traditional" jsonb > subscripting logic. > CREATE TABLE ts1 AS SELECT '[1, [2]]' ::jsonb jb; > SELECT (jb)[1] FROM ts1; > SELECT (jb)['a'] FROM ts1; > I updated the comment. In the updated comment, I also chose to use =E2=80=9Cpre-standard=E2=80=9D json subscripting instead of =E2=80=9Ctradit= ional=E2=80=9D json subscripting. Hope that helps! Best, Alex --000000000000047f34063d3c9c02 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Jian,

=
I=E2=80=99ve attached v14, which includes only indentation and comment= changes
from v13.

On Mon, Aug 25, 2025 at 1:10= =E2=80=AFAM jian he <jian= .universality@gmail.com> wrote:
On Sat, Aug 23, 2025 at 3:34=E2=80=AFAM Alexandra Wa= ng
<alexa= ndra.wang.oss@gmail.com> wrote:
>
> I don=E2=80=99t understand the question. In the case of an unsupported= Node
> type (not an Indices in patch 0001 or 0002), we break out of the loop<= br> > to stop transforming the remaining subscripts. So there won=E2=80=99t = be any
> =E2=80=98not contiguous=E2=80=99 indirection elements.
>

Sorry, my last message is wrong.
this time, I applied v13-0001 to v13-0005.
and I found some minor issues.....
=C2=A0
No= problem. Thanks for reviewing.
=C2=A0
On Mon, Aug 25, = 2025 at 1:10=E2=80=AFAM jian he <jian.universality@gmail.com> wrote:
v13-0002-Allow-Generic-Type-Subscripting-t= o-Accept-Dot-No.patch
+ /*
+ * Error out, if datatype failed to consume any indirection elements.
+ */
+ if (list_length(*indirection) =3D=3D indirection_length)
+ {
+ Node=C2=A0 =C2=A0*ind =3D linitial(*indirection);
+
+ if (noError)
+ return NULL;
+
+ if (IsA(ind, String))
+ ereport(ERROR,
+ (errcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("type %s does not support dot notation",
+ format_type_be(containerType)),
+ parser_errposition(pstate, exprLocation(containerBase))));
+ else if (IsA(ind, A_Indices))
+ ereport(ERROR,
+ (errcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("type %s does not support array subscripting",
+ format_type_be(containerType)),
+ parser_errposition(pstate, exprLocation(containerBase))));
+ else
+ elog(ERROR, "invalid indirection operation: %d", nodeTag(ind));=
+ }

these error message still not reached after I apply
v13-0005-Implement-read-only-dot-notation-for-jsonb.patch
maybe we can simply do

+ if (noError)
+ return NULL;
+
+ ereport(ERROR,
+ errcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("type %s does not support subscripting",
+ format_type_be(containerType)),
+ parser_errposition(pstate, exprLocation(containerBase)));
?

The regression tests do not curr= ently trigger these ERROR cases
because Assignment for dot-notation has = not yet been implemented. At
present, the noError argument of transformC= ontainerSubscripts() is set
to true for SELECT and false for UPDATE. As = a result, the
ereport(ERROR) calls are never reached in SELECT queries. = This patch
series also does not aim to implement dot-notation for UPDATE=
statements that assign to a jsonb field. We have therefore made onlyminimal adjustments in transformAssignmentIndirection(). Since the
assi= gnment code path is separate, it likewise does not reach the
ereport(ERR= OR) cases with in-core data types. Once dot-notation
support for Assignm= ent is added, those ERROR messages will become
relevant.
<= br>
That said, the ERROR messages are not "dead code." = They can still be
triggered when working with custom data types. For exa= mple, you can
define a custom array-like type by copying the in-core arr= ay type and
slightly modifying its *_subscript_transform() function. For= now, you
can simply update array_subscript_transform() in-place with th= e
following diff:

--- a/src/backend/utils/a= dt/arraysubs.c
+++ b/src/backend/utils/adt/arraysubs.c
@@ -82,6 +82,8= @@ array_subscript_transform(SubscriptingRef *sbsref,

=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ai =3D lfirst_node(A_Indices, id= x);

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (isSlice)<= br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 break;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if= (isSlice)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 if (ai->lidx)

This way, we have a *_= subscript_transform function that you can
register for a custom array-li= ke data type that does not handle
slicing. Then you can hit the error me= ssage like this:

test=3D# update t set arr[1:]= =3D 1;
ERROR: =C2=A042804: type integer[] does not support array subscr= ipting
LINE 1: update t set arr[1:] =3D 1;
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^
LOCATION: =C2=A0tr= ansformContainerSubscripts, parse_node.c:345

test= =3D# \d t
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= Table "public.t"
=C2=A0Column | =C2=A0 Type =C2=A0 =C2=A0| Co= llation | Nullable | Default
--------+-----------+-----------+----------= +---------
=C2=A0arr =C2=A0 =C2=A0| integer[] | =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|

I know= this error message is not very precise for the demo case in
particular = (since one might expect something about slicing), but it
still demonstra= tes how this code path is relevant. In the meantime, I
don=E2=80=99t thi= nk it=E2=80=99s worth adding a new data type to exercise this error
mess= age, given that we are likely to make changes to the assignment
code pat= h for in-core types.
=C2=A0
On Mon, Aug 25, 2025 at= 1:10=E2=80=AFAM jian he <jian.universality@gmail.com> wrote:
for V13-0004.
in master we have
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (subExpr =3D=3D NULL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(ERROR,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (errcode(ERRCODE_DATATYPE_MISMATCH),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0errmsg("jsonb subscript must have text type"), =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0parser_errposition(pstate, exprLocation(subExpr))));
but this part is removed from v13-0004-Extract-coerce_jsonpath_subscript ?

I removed this one because you asked me to (see our p= ast conversation
for v11).=C2=A0

On Wed, Jul 9, 2025 at 1:01=E2=80=AFAM Alexandra Wang <= alexandra.wang.oss@gmail.co= m> wrote:
On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM= jian he <jian.universality@gmail.com> wrote:
v11-0004-Extract-= coerce_jsonpath_subscript.patch
+ /*
+ * We known from can_coerce_typ= e that coercion will succeed, so
+ * coerce_type could be used. Note the= implicit coercion context, which is
+ * required to handle subscripts o= f different types, similar to overloaded
+ * functions.
+ */
+ sub= Expr =3D coerce_type(pstate,
+=C2=A0 subExpr, subExprType,
+=C2=A0 ta= rgetType, -1,
+=C2=A0 COERCION_IMPLICIT,
+=C2=A0 COERCE_IMPLICIT_CAST= ,
+=C2=A0 -1);
+ if (subExpr =3D=3D NULL)
+ ereport(ERROR,
+ (e= rrcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("jsonb subscript must h= ave text type"),

the targetType can be "integer", the= n the error message
errmsg("jsonb subscript must have text type&quo= t;) would be wrong?
Also this error handling is not necessary.
since = we can_coerce_type already tell us that coercion will succeed.
Also, do = we really put v11-0004 as a separate patch?
=C2=A0
Thanks for pointing this out! I=E2=80=99ve removed the unnecessary e= rror
handling as you suggested. I kept v12-0004 as a separate patch to m= ake
the review easier, but I=E2=80=99ll leave it up to the committer to = decide
whether to squash it with the other commits.

I think either way works, but I=E2=80=99d ap= preciate it if we could settle on
one option so we don=E2=80=99t keep go= ing back and forth.
=C2=A0
On Mon, Aug 25, 2025 at = 1:10=E2=80=AFAM jian he <= jian.universality@gmail.com> wrote:
coerce_jsonpath_subscript_to_int4_or_text
maybe we can just rename to
coerce_jsonpath_subscript,
then add some comments explaining why currently only support result node co= erce
to text or int4 data type.

What is the = reason for renaming this function to a less explicit name?
It was previo= usly called coerce_jsonpath_subscript() because we passed
INT4OID as an = argument to specify the target type. I followed your
earlier review comm= ent (for v12) to remove that argument and hard-code
INT4OID within the f= unction. Given that change, I think it=E2=80=99s clearer
to keep a more = explicit name that describes what the function
achieves.
= =C2=A0
On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he <jian.universality@gmail.com>= ; wrote:
for v13-000= 5-Implement-read-only-dot-notation-for-jsonb.patch

+ i =3D 0;
+ foreach(lc, sbsref->refupperindexpr) {
+ Expr *e =3D (Expr *) lfirst(lc);
+
+ /* When slicing, individual subscript bounds can be omitted */
+ if (!e) {
+ sbsrefstate->upperprovided[i] =3D false;
+ sbsrefstate->upperindexnull[i] =3D true;
+ } else {
+ sbsrefstate->upperprovided[i] =3D true;
+ /* Each subscript is evaluated into appropriate array entry */
+ ExecInitExprRec(e, state,
+ &sbsrefstate->upperindex[i],
+ &sbsrefstate->upperindexnull[i]);
+ }
+ i++;
=C2=A0 }
curly braces should be put into the next new line.
Fixed. Thank you!
=C2=A0
On Mon, Aug 25, 20= 25 at 1:10=E2=80=AFAM jian he <jian.universality@gmail.com> wrote:
there are two
+ if (!sbsref->refjsonbpath)
+{
+}
maybe we can put these two together.
=C2=A0
The c= ode blocks are different enough, and merging them would only
reduce read= ability in my opinion.
=C2=A0
On Mon, Aug 25, 2025 at 1:1= 0=E2=80=AFAM jian he <jia= n.universality@gmail.com> wrote:
+SELECT (jb)['b']['x'].z FROM test_jsonb_dot_notation; -- r= eturns NULL
with warnings
+ z
+---
+
+(1 row)
there is no warning, "returns NULL with warnings" should be remov= ed.

Fixed. Thank you!
=C2=A0<= /div>
On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he <jian.universality@gmail.com> wrote= :
+-- clean up
+DROP TABLE test_jsonb_dot_notation;
\ No newline at end of file

to remove "\ No newline at end of file"
you need to add a newline to jsonb.sql, you may see other regress sql
test files.
=C2=A0
Fixed. Thank you!
=C2=A0
On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian he <jian.universality@gmail.com= > wrote:
+ foreach(lc, *indirection)
+ if()
+ {
+ }
+ else
+ {
+ /*
+ * Unexpected node type in indirection list. This should not
+ * happen with current grammar, but we handle it defensively by
+ * breaking out of the loop rather than crashing. In case of
+ * future grammar changes that might introduce new node types,
+ * this allows us to create a jsonpath from as many indirection
+ * elements as we can and let transformIndirection() fallback to
+ * alternative logic to handle the remaining indirection elements.
+ */
+ Assert(false); /* not reachable */
+ break;
+ }
+
+ /* append path item */
+ path->next =3D jpi;
+ path =3D jpi;
+ pathlen++;

If the above else branch is reached, it will crash due to `Assert(false);`,=
which contradicts the preceding comments.
to make the comments accurate, we need remove
" Assert(false); /* not reachable */"
?
=C2=A0
The Assert is intentional. We want = to fail fast for the =E2=80=9Cnot
reachable=E2=80=9D case in the develop= ment build, while breaking out of the
loop in the production build.
<= /div>

=C2=A0On Mon, Aug 25, 2025 at 1:10=E2=80=AFAM jian= he <jian.universality@gm= ail.com> wrote:
=C2=A0 /*
- * Transform and convert the subscript expressions. Jsonb subscripting
- * does not support slices, look only at the upper index.
+ * We would only reach here if json simplified accessor is not needed, or<= br> + * if jsonb_subscript_make_jsonpath() didn't consume any indirection + * element =E2=80=94 either way, the first indirection element could not b= e
+ * converted into a JsonPath component. This happens when it's a non-s= lice
+ * A_Indices with a non-integer upper index. The code below falls back to<= br> + * traditional jsonb subscripting for such cases.
=C2=A0 */
the above comments, "non-integer" part is wrong?
For example, the below two SELECTs both use "traditional" jsonb subscripting logic.
CREATE TABLE ts1 AS SELECT '[1, [2]]' ::jsonb jb;
SELECT (jb)[1] FROM ts1;
SELECT (jb)['a'] FROM ts1;
=C2=A0
I = updated the comment. In the updated comment, I also chose to use
=E2=80= =9Cpre-standard=E2=80=9D json subscripting instead of =E2=80=9Ctraditional= =E2=80=9D json
subscripting. Hope that helps!



Best,
Alex
--000000000000047f34063d3c9c02-- --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch" Content-Disposition: attachment; filename="v14-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgb51 RnJvbSA4MjNkMDUzMzgyOTY2ZDFiZjIzMzVjNGQ5NTBjZjhkNTg2OTRlNGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djE0IDIvN10gQWxsb3cgR2VuZXJpYyBUeXBlIFN1YnNjcmlwdGluZyB0byBBY2NlcHQgRG90CiBO b3RhdGlvbiAoLikgYXMgSW5wdXQKClRoaXMgY2hhbmdlIGV4dGVuZHMgZ2VuZXJpYyB0eXBlIHN1 YnNjcmlwdGluZyB0byByZWNvZ25pemUgZG90Cm5vdGF0aW9uICguKSBpbiBhZGRpdGlvbiB0byBi cmFja2V0IG5vdGF0aW9uIChbXSkuIFdoaWxlIHRoaXMgZG9lcyBub3QKeWV0IHByb3ZpZGUgZnVs bCBzdXBwb3J0IGZvciBkb3Qgbm90YXRpb24sIGl0IGVuYWJsZXMgc3Vic2NyaXB0aW5nCmNvbnRh aW5lcnMgdG8gcHJvY2VzcyBpdCBpbiB0aGUgZnV0dXJlLgoKRm9yIG5vdywgY29udGFpbmVyLXNw ZWNpZmljIHRyYW5zZm9ybSBmdW5jdGlvbnMgb25seSBoYW5kbGUKc3Vic2NyaXB0aW5nIGluZGlj ZXMgYW5kIHN0b3AgcHJvY2Vzc2luZyB3aGVuIGVuY291bnRlcmluZyBkb3QKbm90YXRpb24uIEl0 IGlzIHVwIHRvIGluZGl2aWR1YWwgY29udGFpbmVycyB0byBkZWNpZGUgaG93IHRvIHRyYW5zZm9y bQpkb3Qgbm90YXRpb24gaW4gc3Vic2VxdWVudCB1cGRhdGVzLgoKQXV0aG9yZWQtYnk6IE5pa2l0 YSBHbHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kcmEg V2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBE dW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRh cmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4u dW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jICAgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfbm9kZS5jICAgfCA0MSArKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fy cmF5c3Vicy5jIHwgMTMgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMg fCAxMSArKysrKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAzICstCiA2 IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwppbmRleCBlMTU2NWUxMWQwOS4uZGMxYzdlOWI3NWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtNDQyLDggKzQ0Miw5IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCUxpc3RDZWxsICAgKmk7 CiAKIAkvKgotCSAqIFdlIGhhdmUgdG8gc3BsaXQgYW55IGZpZWxkLXNlbGVjdGlvbiBvcGVyYXRp b25zIGFwYXJ0IGZyb20KLQkgKiBzdWJzY3JpcHRpbmcuICBBZGphY2VudCBBX0luZGljZXMgbm9k ZXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlCisJICogQ29tYmluZSBmaWVsZCBuYW1l cyBhbmQgc3Vic2NyaXB0cyBpbnRvIGEgc2luZ2xlIGluZGlyZWN0aW9uIGxpc3QsIGFzCisJICog c29tZSBzdWJzY3JpcHRpbmcgY29udGFpbmVycywgc3VjaCBhcyBqc29uYiwgc3VwcG9ydCBmaWVs ZCBhY2Nlc3MgdXNpbmcKKwkgKiBkb3Qgbm90YXRpb24uIEFkamFjZW50IEFfSW5kaWNlcyBub2Rl cyBoYXZlIHRvIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUKIAkgKiBtdWx0aWRpbWVuc2lvbmFsIHN1 YnNjcmlwdCBvcGVyYXRpb24uCiAJICovCiAJZm9yZWFjaChpLCBpbmQtPmluZGlyZWN0aW9uKQpA QCAtNDYxLDE5ICs0NjIsNDMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlOb2RlCSAgICpu ZXdyZXN1bHQ7Ci0KIAkJCUFzc2VydChJc0EobiwgU3RyaW5nKSk7CisJCQlzdWJzY3JpcHRzID0g bGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKKwkJfQorCX0KKworCXdoaWxlIChzdWJzY3JpcHRzKQor CXsKKwkJLyogdHJ5IHByb2Nlc3NpbmcgY29udGFpbmVyIHN1YnNjcmlwdHMgZmlyc3QgKi8KKwkJ Tm9kZQkgICAqbmV3cmVzdWx0ID0gKE5vZGUgKikKKwkJCXRyYW5zZm9ybUNvbnRhaW5lclN1YnNj cmlwdHMocHN0YXRlLAorCQkJCQkJCQkJCSByZXN1bHQsCisJCQkJCQkJCQkJIGV4cHJUeXBlKHJl c3VsdCksCisJCQkJCQkJCQkJIGV4cHJUeXBtb2QocmVzdWx0KSwKKwkJCQkJCQkJCQkgJnN1YnNj cmlwdHMsCisJCQkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkJCSB0cnVlKTsKKworCQlpZiAoIW5l d3Jlc3VsdCkKKwkJeworCQkJLyoKKwkJCSAqIGdlbmVyaWMgc3Vic2NyaXB0aW5nIGZhaWxlZDsg ZmFsbGluZyBiYWNrIHRvIGZpZWxkIHNlbGVjdGlvbgorCQkJICogZm9yIGEgY29tcG9zaXRlIHR5 cGUuCisJCQkgKi8KKwkJCU5vZGUJICAgKm47CisKKwkJCUFzc2VydChzdWJzY3JpcHRzKTsKIAot CQkJLyogcHJvY2VzcyBzdWJzY3JpcHRzIGJlZm9yZSB0aGlzIGZpZWxkIHNlbGVjdGlvbiAqLwot CQkJd2hpbGUgKHN1YnNjcmlwdHMpCi0JCQkJcmVzdWx0ID0gKE5vZGUgKikgdHJhbnNmb3JtQ29u dGFpbmVyU3Vic2NyaXB0cyhwc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJ CQkJCQkJCQkJCQkgICBleHByVHlwZShyZXN1bHQpLAotCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5 cG1vZChyZXN1bHQpLAotCQkJCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJ CQkJCQkgICBmYWxzZSk7CisJCQluID0gbGluaXRpYWwoc3Vic2NyaXB0cyk7CisKKwkJCWlmICgh SXNBKG4sIFN0cmluZykpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0 eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAorCQkJCQkJ CQlmb3JtYXRfdHlwZV9iZShleHByVHlwZShyZXN1bHQpKSksCisJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHJlc3VsdCkpKSk7CiAKKwkJCS8qIHRyeSB0byBm aW5kIGZ1bmN0aW9uIGZvciBmaWVsZCBzZWxlY3Rpb24gKi8KIAkJCW5ld3Jlc3VsdCA9IFBhcnNl RnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCiAJCQkJCQkJ CQkJICBsaXN0X21ha2UxKHJlc3VsdCksCkBAIC00ODEsMTkgKzUwNiwxNiBAQCB0cmFuc2Zvcm1J bmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJCQkJ CQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCQkgIGxvY2F0aW9uKTsK LQkJCWlmIChuZXdyZXN1bHQgPT0gTlVMTCkKKworCQkJaWYgKCFuZXdyZXN1bHQpCiAJCQkJdW5r bm93bl9hdHRyaWJ1dGUocHN0YXRlLCByZXN1bHQsIHN0clZhbChuKSwgbG9jYXRpb24pOwotCQkJ cmVzdWx0ID0gbmV3cmVzdWx0OworCisJCQkvKiBjb25zdW1lIGZpZWxkIHNlbGVjdCAqLworCQkJ c3Vic2NyaXB0cyA9IGxpc3RfZGVsZXRlX2ZpcnN0KHN1YnNjcmlwdHMpOwogCQl9CisKKwkJcmVz dWx0ID0gbmV3cmVzdWx0OwogCX0KLQkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlm IGFueSAqLwotCXdoaWxlIChzdWJzY3JpcHRzKQotCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zv cm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0J CQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlw bW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJ ICAgZmFsc2UpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmlu ZGV4IGYwNWJhYTUwYTE1Li5jNDRhNWEwZWZmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX25vZGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCkBA IC0yMzgsNiArMjM4LDggQEAgdHJhbnNmb3JtQ29udGFpbmVyVHlwZShPaWQgKmNvbnRhaW5lclR5 cGUsIGludDMyICpjb250YWluZXJUeXBtb2QpCiAgKiBjb250YWluZXJUeXBNb2QJdHlwbW9kIGZv ciB0aGUgY29udGFpbmVyCiAgKiBpbmRpcmVjdGlvbgkJVW50cmFuc2Zvcm1lZCBsaXN0IG9mIHN1 YnNjcmlwdHMgKG11c3Qgbm90IGJlIE5JTCkKICAqIGlzQXNzaWdubWVudAkJVHJ1ZSBpZiB0aGlz IHdpbGwgYmVjb21lIGEgY29udGFpbmVyIGFzc2lnbm1lbnQuCisgKiBub0Vycm9yCQkJVHJ1ZSBm b3IgcmV0dXJuIE5VTEwgd2l0aCBubyBlcnJvciwgaWYgdGhlIGNvbnRhaW5lciB0eXBlCisgKiAJ CQkJCWlzIG5vdCBzdWJzY3JpcHRhYmxlLgogICovCiBTdWJzY3JpcHRpbmdSZWYgKgogdHJhbnNm b3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCkBAIC0yNDUsMTMgKzI0 NywxNSBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1v ZCwKIAkJCQkJCQkgTGlzdCAqKmluZGlyZWN0aW9uLAotCQkJCQkJCSBib29sIGlzQXNzaWdubWVu dCkKKwkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJIGJvb2wgbm9FcnJvcikKIHsK IAlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZjsKIAljb25zdCBTdWJzY3JpcHRSb3V0aW5lcyAqc2Jz cm91dGluZXM7CiAJT2lkCQkJZWxlbWVudFR5cGU7CiAJYm9vbAkJaXNTbGljZSA9IGZhbHNlOwog CUxpc3RDZWxsICAgKmlkeDsKKwlpbnQJCQlpbmRpcmVjdGlvbl9sZW5ndGggPSBsaXN0X2xlbmd0 aCgqaW5kaXJlY3Rpb24pOwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBjb250YWlu ZXIgdHlwZSwgc21hc2hpbmcgYW55IGRvbWFpbi4gIEluIHRoZQpAQCAtMjY3LDExICsyNzEsMTYg QEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICov CiAJc2Jzcm91dGluZXMgPSBnZXRTdWJzY3JpcHRpbmdSb3V0aW5lcyhjb250YWluZXJUeXBlLCAm ZWxlbWVudFR5cGUpOwogCWlmICghc2Jzcm91dGluZXMpCisJeworCQlpZiAobm9FcnJvcikKKwkJ CXJldHVybiBOVUxMOworCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVz IGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAogCQkJCQkJZm9ybWF0 X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBleHByTG9jYXRpb24oY29udGFpbmVyQmFzZSkpKSk7CisJfQogCiAJLyoKIAkgKiBEZXRlY3Qg d2hldGhlciBhbnkgb2YgdGhlIGluZGlyZWN0aW9uIGl0ZW1zIGFyZSBzbGljZSBzcGVjaWZpZXJz LgpAQCAtMjgyLDkgKzI5MSw5IEBAIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCSAqLwogCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewotCQlB X0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJTm9kZQkgICAq YWkgPSBsZmlyc3QoaWR4KTsKIAotCQlpZiAoYWktPmlzX3NsaWNlKQorCQlpZiAoSXNBKGFpLCBB X0luZGljZXMpICYmIGNhc3ROb2RlKEFfSW5kaWNlcywgYWkpLT5pc19zbGljZSkKIAkJewogCQkJ aXNTbGljZSA9IHRydWU7CiAJCQlicmVhazsKQEAgLTMxMiw2ICszMjEsMzIgQEAgdHJhbnNmb3Jt Q29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJc2Jzcm91dGluZXMtPnRy YW5zZm9ybShzYnNyZWYsIGluZGlyZWN0aW9uLCBwc3RhdGUsCiAJCQkJCQkgICBpc1NsaWNlLCBp c0Fzc2lnbm1lbnQpOwogCisJLyoKKwkgKiBFcnJvciBvdXQsIGlmIGRhdGF0eXBlIGZhaWxlZCB0 byBjb25zdW1lIGFueSBpbmRpcmVjdGlvbiBlbGVtZW50cy4KKwkgKi8KKwlpZiAobGlzdF9sZW5n dGgoKmluZGlyZWN0aW9uKSA9PSBpbmRpcmVjdGlvbl9sZW5ndGgpCisJeworCQlOb2RlCSAgICpp bmQgPSBsaW5pdGlhbCgqaW5kaXJlY3Rpb24pOworCisJCWlmIChub0Vycm9yKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJaWYgKElzQShpbmQsIFN0cmluZykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidHlw ZSAlcyBkb2VzIG5vdCBzdXBwb3J0IGRvdCBub3RhdGlvbiIsCisJCQkJCQkJZm9ybWF0X3R5cGVf YmUoY29udGFpbmVyVHlwZSkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhw ckxvY2F0aW9uKGNvbnRhaW5lckJhc2UpKSkpOworCQllbHNlIGlmIChJc0EoaW5kLCBBX0luZGlj ZXMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9N SVNNQVRDSCksCisJCQkJCSBlcnJtc2coInR5cGUgJXMgZG9lcyBub3Qgc3VwcG9ydCBhcnJheSBz dWJzY3JpcHRpbmciLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvbnRhaW5lclR5cGUpKSwKKwkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihjb250YWluZXJCYXNl KSkpKTsKKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgaW5kaXJlY3Rpb24gb3BlcmF0 aW9uOiAlZCIsIG5vZGVUYWcoaW5kKSk7CisJfQorCiAJLyoKIAkgKiBWZXJpZnkgd2UgZ290IGEg dmFsaWQgdHlwZSAodGhpcyBkZWZlbmRzLCBmb3IgZXhhbXBsZSwgYWdhaW5zdCBzb21lb25lCiAJ ICogdXNpbmcgYXJyYXlfc3Vic2NyaXB0X2hhbmRsZXIgYXMgdHlwc3Vic2NyaXB0IHdpdGhvdXQg c2V0dGluZyB0eXBlbGVtKS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA0Njc1YTUy MzA0NS4uM2VmNTg5N2YyZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTkzNyw3 ICs5MzcsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBlLAogCQkJCQkJCQkJCSAgY29udGFpbmVyVHlw TW9kLAogCQkJCQkJCQkJCSAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJICB0cnVlKTsKKwkJCQkJ CQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAl0eXBlTmVlZGVkID0gc2JzcmVm LT5yZWZyZXN0eXBlOwogCXR5cG1vZE5lZWRlZCA9IHNic3JlZi0+cmVmdHlwbW9kOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5c3Vicy5jCmluZGV4IDIzNGMyYzI3OGMxLi5kMDNkMzUxOWRmZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheXN1YnMuYwpAQCAtNjIsNiArNjIsNyBAQCBhcnJheV9zdWJzY3JpcHRf dHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCUxpc3QJICAgKnVwcGVySW5kZXhw ciA9IE5JTDsKIAlMaXN0CSAgICpsb3dlckluZGV4cHIgPSBOSUw7CiAJTGlzdENlbGwgICAqaWR4 OworCWludAkJCW5kaW07CiAKIAkvKgogCSAqIFRyYW5zZm9ybSB0aGUgc3Vic2NyaXB0IGV4cHJl c3Npb25zLCBhbmQgc2VwYXJhdGUgdXBwZXIgYW5kIGxvd2VyCkBAIC03Myw5ICs3NCwxNCBAQCBh cnJheV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqLwog CWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJQV9JbmRpY2VzICAqYWk7CiAJCU5vZGUJICAgKnN1 YmV4cHI7CiAKKwkJaWYgKCFJc0EobGZpcnN0KGlkeCksIEFfSW5kaWNlcykpCisJCQlicmVhazsK KworCQlhaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwogCQlpZiAoaXNTbGljZSkK IAkJewogCQkJaWYgKGFpLT5saWR4KQpAQCAtMTQ1LDE0ICsxNTEsMTUgQEAgYXJyYXlfc3Vic2Ny aXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZmxvd2Vy aW5kZXhwciA9IGxvd2VySW5kZXhwcjsKIAogCS8qIFZlcmlmeSBzdWJzY3JpcHQgbGlzdCBsZW5n dGhzIGFyZSB3aXRoaW4gaW1wbGVtZW50YXRpb24gbGltaXQgKi8KLQlpZiAobGlzdF9sZW5ndGgo dXBwZXJJbmRleHByKSA+IE1BWERJTSkKKwluZGltID0gbGlzdF9sZW5ndGgodXBwZXJJbmRleHBy KTsKKwlpZiAobmRpbSA+IE1BWERJTSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm51bWJlciBvZiBh cnJheSBkaW1lbnNpb25zICglZCkgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICglZCkiLAog CQkJCQkJbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQg bm90IGNoZWNrIGxvd2VySW5kZXhwciBzZXBhcmF0ZWx5ICovCiAKLQkqaW5kaXJlY3Rpb24gPSBO SUw7CisJKmluZGlyZWN0aW9uID0gbGlzdF9kZWxldGVfZmlyc3RfbigqaW5kaXJlY3Rpb24sIG5k aW0pOwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3Jp cHRpbmcgb3BlcmF0aW9uLiAgSXQncyB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5j CmluZGV4IDhhZDZhYTFhZDRmLi5hMGQzOGEwZmQ4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1 YnMuYwpAQCAtNTUsOSArNTUsMTQgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3Jp cHRpbmdSZWYgKnNic3JlZiwKIAkgKi8KIAlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsK LQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisJCUFfSW5k aWNlcyAgKmFpOwogCQlOb2RlCSAgICpzdWJFeHByOwogCisJCWlmICghSXNBKGxmaXJzdChpZHgp LCBBX0luZGljZXMpKQorCQkJYnJlYWs7CisKKwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMs IGlkeCk7CisKIAkJaWYgKGlzU2xpY2UpCiAJCXsKIAkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlk eCA/IGFpLT51aWR4IDogYWktPmxpZHg7CkBAIC0xNjAsNyArMTY1LDkgQEAganNvbmJfc3Vic2Ny aXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnJlc3R5 cGUgPSBKU09OQk9JRDsKIAlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOwogCi0JKmluZGlyZWN0aW9u ID0gTklMOworCS8qIFJlbW92ZSBwcm9jZXNzZWQgZWxlbWVudHMgKi8KKwlpZiAodXBwZXJJbmRl eHByKQorCQkqaW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwg bGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aAppbmRleCA1OGE0YjlkZjE1Ny4uNWNjM2NlNThjMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aApAQCAtMzYyLDcgKzM2Miw4IEBAIGV4dGVybiBTdWJzY3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNv bnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJCSBPaWQg Y29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAogCQkJ CQkJCQkJCQkJCSBMaXN0ICoqaW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkJCQkJIGJvb2wgaXNBc3Np Z25tZW50KTsKKwkJCQkJCQkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJCQkJCQkJ IGJvb2wgbm9FcnJvcik7CiBleHRlcm4gQ29uc3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBX0NvbnN0ICphY29uc3QpOwogCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfTk9ERV9IICov Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v14-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgb72 RnJvbSA4NTU1YTQ3NzRlNmJjZmQwZGMyY2IzYWY2ODk4NTE5YzAyOTMxZjYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djE0IDMvN10gRXhwb3J0IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkKClRoaXMgaXMgYSBwcmVw YXJhdGlvbiBzdGVwIGZvciBhIGZ1dHVyZSBjb21taXQgdGhhdCB3aWxsIHJldXNlIHRoZQphZm9y ZW1lbnRpb25lZCBmdW5jdGlvbi4KCkF1dGhvcmVkLWJ5OiBOaWtpdGEgR2x1a2hvdiA8Z2x1a2hv di5uLmFAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53 YW5nLm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5 N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgfCAxOSArKysrKysr KysrKysrKystLS0tCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oICAgICB8ICA0ICsrKysK IDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aC5jCmluZGV4IDc2MmY3ZThhMDlkLi45NzZhZWU4NGNmMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25wYXRoLmMKQEAgLTE2NiwxNSArMTY2LDEzIEBAIGpzb25wYXRoX3NlbmQo UEdfRlVOQ1RJT05fQVJHUykKICAqIENvbnZlcnRzIEMtc3RyaW5nIHRvIGEganNvbnBhdGggdmFs dWUuCiAgKgogICogVXNlcyBqc29ucGF0aCBwYXJzZXIgdG8gdHVybiBzdHJpbmcgaW50byBhbiBB U1QsIHRoZW4KLSAqIGZsYXR0ZW5Kc29uUGF0aFBhcnNlSXRlbSgpIGRvZXMgc2Vjb25kIHBhc3Mg dHVybmluZyBBU1QgaW50byBiaW5hcnkKKyAqIGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkgZG9l cyBzZWNvbmQgcGFzcyB0dXJuaW5nIEFTVCBpbnRvIGJpbmFyeQogICogcmVwcmVzZW50YXRpb24g b2YganNvbnBhdGguCiAgKi8KIHN0YXRpYyBEYXR1bQoganNvblBhdGhGcm9tQ3N0cmluZyhjaGFy ICppbiwgaW50IGxlbiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsKIAlKc29uUGF0aFBhcnNl UmVzdWx0ICpqc29ucGF0aCA9IHBhcnNlanNvbnBhdGgoaW4sIGxlbiwgZXNjb250ZXh0KTsKLQlK c29uUGF0aCAgICpyZXM7Ci0JU3RyaW5nSW5mb0RhdGEgYnVmOwogCiAJaWYgKFNPRlRfRVJST1Jf T0NDVVJSRUQoZXNjb250ZXh0KSkKIAkJcmV0dXJuIChEYXR1bSkgMDsKQEAgLTE4NSw4ICsxODMs MjEgQEAganNvblBhdGhGcm9tQ3N0cmluZyhjaGFyICppbiwgaW50IGxlbiwgc3RydWN0IE5vZGUg KmVzY29udGV4dCkKIAkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAl czogXCIlc1wiIiwgImpzb25wYXRoIiwKIAkJCQkJCWluKSkpOwogCisJcmV0dXJuIGpzb25QYXRo RnJvbVBhcnNlUmVzdWx0KGpzb25wYXRoLCA0ICogbGVuLCBlc2NvbnRleHQpOworfQorCisvKgor ICogQ29udmVydHMganNvbnBhdGggQWJzdHJhY3QgU3ludGF4IFRyZWUgKEFTVCkgaW50byBqc29u cGF0aCB2YWx1ZSBpbiBiaW5hcnkuCisgKi8KK0RhdHVtCitqc29uUGF0aEZyb21QYXJzZVJlc3Vs dChKc29uUGF0aFBhcnNlUmVzdWx0ICpqc29ucGF0aCwgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJ CQlzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KQoreworCUpzb25QYXRoICAgKnJlczsKKwlTdHJpbmdJ bmZvRGF0YSBidWY7CisKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKLQllbmxhcmdlU3RyaW5nSW5m bygmYnVmLCA0ICogbGVuIC8qIGVzdGltYXRpb24gKi8gKTsKKwllbmxhcmdlU3RyaW5nSW5mbygm YnVmLCBlc3RpbWF0ZWRfbGVuKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TcGFjZXMoJmJ1ZiwgSlNP TlBBVEhfSERSU1opOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCAyM2E3NmQyMzNlOS4uZTA1OTQx NjIzZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMjgxLDYgKzI4MSwxMCBAQCBleHRlcm4gSnNv blBhdGhQYXJzZVJlc3VsdCAqcGFyc2Vqc29ucGF0aChjb25zdCBjaGFyICpzdHIsIGludCBsZW4s CiBleHRlcm4gYm9vbCBqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50MzIgeGZsYWdzLCBpbnQgKnJl c3VsdCwKIAkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2NvbnRleHQpOwogCitleHRlcm4gRGF0dW0g anNvblBhdGhGcm9tUGFyc2VSZXN1bHQoSnNvblBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGgsCisJ CQkJCQkJCQkgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJCQkJCQkgc3RydWN0IE5vZGUgKmVzY29u dGV4dCk7CisKIC8qCiAgKiBTdHJ1Y3QgZm9yIGRldGFpbHMgYWJvdXQgZXh0ZXJuYWwgdmFyaWFi bGVzIHBhc3NlZCBpbnRvIGpzb25wYXRoIGV4ZWN1dG9yCiAgKi8KLS0gCjIuMzkuNSAoQXBwbGUg R2l0LTE1NCkKCg== --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0001-Allow-transformation-of-only-a-sublist-of-subscr.patch" Content-Disposition: attachment; filename="v14-0001-Allow-transformation-of-only-a-sublist-of-subscr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgaz0 RnJvbSA3NDgyNGYxY2M5NDkwNDFjMGI1ZTBhMzVhNjY4YWI3M2NlMDhhMjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djE0IDEvN10gQWxsb3cgdHJhbnNmb3JtYXRpb24gb2Ygb25seSBhIHN1Ymxpc3Qgb2Ygc3Vic2Ny aXB0cwoKVGhpcyBpcyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGFsbG93aW5nIHN1YnNjcmlwdGlu ZyBjb250YWluZXJzIHRvCnRyYW5zZm9ybSBvbmx5IGEgcHJlZml4IG9mIGFuIGluZGlyZWN0aW9u IGxpc3QgYW5kIG1vZGlmeSB0aGUgbGlzdAppbi1wbGFjZSBieSByZW1vdmluZyB0aGUgcHJvY2Vz c2VkIGVsZW1lbnRzLiBDdXJyZW50bHksIGFsbCBlbGVtZW50cwphcmUgY29uc3VtZWQsIGFuZCB0 aGUgbGlzdCBpcyBzZXQgdG8gTklMIGFmdGVyIHRyYW5zZm9ybWF0aW9uLgoKSW4gdGhlIGZvbGxv d2luZyBjb21taXQsIHN1YnNjcmlwdGluZyBjb250YWluZXJzIHdpbGwgZ2FpbiB0aGUKZmxleGli aWxpdHkgdG8gc3RvcCB0cmFuc2Zvcm1hdGlvbiB3aGVuIGVuY291bnRlcmluZyBhbiB1bnN1cHBv cnRlZAppbmRpcmVjdGlvbiBhbmQgcmV0dXJuIHRoZSByZW1haW5pbmcgaW5kaXJlY3Rpb25zIHRv IHRoZSBjYWxsZXIuCgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53YW5n Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNs YW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0Bn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5j b20+Ci0tLQogY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyAgICAgIHwgMTAgKysrKysrLS0t LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgIHwgIDkgKysrKy0tLS0tCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vi cy5jIHwgIDYgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgfCAgNiAr KysrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oICB8ICA3ICsrKysrKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQs IDI4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv aHN0b3JlL2hzdG9yZV9zdWJzLmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCmluZGV4 IDNkMDNmNjZmYTBkLi4xYjI5NTQzYWI2NyAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0 b3JlX3N1YnMuYworKysgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCkBAIC00MCw3ICs0 MCw3IEBACiAgKi8KIHN0YXRpYyB2b2lkCiBoc3RvcmVfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJ ICAgTGlzdCAqKmluZGlyZWN0aW9uLAogCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJICAgYm9vbCBpc1NsaWNlLAogCQkJCQkJICAgYm9vbCBpc0Fzc2lnbm1lbnQpCkBAIC00OSwx NSArNDksMTUgQEAgaHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpz YnNyZWYsCiAJTm9kZQkgICAqc3ViZXhwcjsKIAogCS8qIFdlIHN1cHBvcnQgb25seSBzaW5nbGUt c3Vic2NyaXB0LCBub24tc2xpY2UgY2FzZXMgKi8KLQlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0 aChpbmRpcmVjdGlvbikgIT0gMSkKKwlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0aCgqaW5kaXJl Y3Rpb24pICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImhzdG9yZSBhbGxvd3Mgb25seSBvbmUg c3Vic2NyaXB0IiksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCi0JCQkJCQkJCQll eHByTG9jYXRpb24oKE5vZGUgKikgaW5kaXJlY3Rpb24pKSkpOworCQkJCQkJCQkJZXhwckxvY2F0 aW9uKChOb2RlICopICppbmRpcmVjdGlvbikpKSk7CiAKIAkvKiBUcmFuc2Zvcm0gdGhlIHN1YnNj cmlwdCBleHByZXNzaW9uIHRvIHR5cGUgdGV4dCAqLwotCWFpID0gbGluaXRpYWxfbm9kZShBX0lu ZGljZXMsIGluZGlyZWN0aW9uKTsKKwlhaSA9IGxpbml0aWFsX25vZGUoQV9JbmRpY2VzLCAqaW5k aXJlY3Rpb24pOwogCUFzc2VydChhaS0+dWlkeCAhPSBOVUxMICYmIGFpLT5saWR4ID09IE5VTEwg JiYgIWFpLT5pc19zbGljZSk7CiAKIAlzdWJleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFp LT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsKQEAgLTgxLDYgKzgxLDggQEAgaHN0b3JlX3N1 YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJLyogRGV0ZXJtaW5l IHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIHRl eHQgKi8KIAlzYnNyZWYtPnJlZnJlc3R5cGUgPSBURVhUT0lEOwogCXNic3JlZi0+cmVmdHlwbW9k ID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwppbmRleCBkNjYyNzY4MDFjNi4uZTE1NjVlMTFkMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwpAQCAtNDY2LDE0ICs0NjYsMTMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCQlBc3NlcnQoSXNBKG4sIFN0cmluZykp OwogCiAJCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMgZmllbGQgc2VsZWN0aW9u ICovCi0JCQlpZiAoc3Vic2NyaXB0cykKKwkJCXdoaWxlIChzdWJzY3JpcHRzKQogCQkJCXJlc3Vs dCA9IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRlLAogCQkJCQkJ CQkJCQkJCQkJICAgcmVzdWx0LAogCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0KSwK IAkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBtb2QocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkJCSAg IHN1YnNjcmlwdHMsCisJCQkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJ CQkJCSAgIGZhbHNlKTsKLQkJCXN1YnNjcmlwdHMgPSBOSUw7CiAKIAkJCW5ld3Jlc3VsdCA9IFBh cnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCkBAIC00 ODgsMTIgKzQ4NywxMiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJfQogCX0KIAkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNj cmlwdHMsIGlmIGFueSAqLwotCWlmIChzdWJzY3JpcHRzKQorCXdoaWxlIChzdWJzY3JpcHRzKQog CQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwK IAkJCQkJCQkJCQkJCQkgICByZXN1bHQsCiAJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0 KSwKIAkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJICAg c3Vic2NyaXB0cywKKwkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJCQkg ICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKaW5kZXgg MjAzYjdhMzIxNzguLmYwNWJhYTUwYTE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKQEAgLTI0 NCw3ICsyNDQsNyBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCQkgTm9kZSAqY29udGFpbmVyQmFzZSwKIAkJCQkJCQkgT2lkIGNvbnRhaW5l clR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkgTGlzdCAqaW5k aXJlY3Rpb24sCisJCQkJCQkJIExpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkgYm9vbCBpc0Fz c2lnbm1lbnQpCiB7CiAJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWY7CkBAIC0yODAsNyArMjgwLDcg QEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICog ZWxlbWVudC4gIElmIGFueSBvZiB0aGUgaXRlbXMgYXJlIHNsaWNlIHNwZWNpZmllcnMgKGxvd2Vy OnVwcGVyKSwgdGhlbgogCSAqIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBtZWFucyBhIGNvbnRh aW5lciBzbGljZSBvcGVyYXRpb24uCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQor CWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4 IDRhYmEwZDlkNGQ1Li40Njc1YTUyMzA0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpA QCAtOTM2LDcgKzkzNiw3IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgIGJhc2Vub2RlLAogCQkJCQkJCQkJCSAgY29udGFpbmVy VHlwZSwKIAkJCQkJCQkJCQkgIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkJCQkgIHN1YnNjcmlw dHMsCisJCQkJCQkJCQkJICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkgIHRydWUpOwogCiAJdHlw ZU5lZWRlZCA9IHNic3JlZi0+cmVmcmVzdHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpp bmRleCAyOTQwZmI4ZThkNy4uMjM0YzJjMjc4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJz LmMKQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlTdWJXb3Jrc3BhY2UKICAq Lwogc3RhdGljIHZvaWQKIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYsCi0JCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJICBMaXN0ICoqaW5k aXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgYm9vbCBpc1Ns aWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKQEAgLTcxLDcgKzcxLDcgQEAgYXJyYXlf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKiBpbmRpcmVj dGlvbiBpdGVtcyB0byBzbGljZXMgYnkgdHJlYXRpbmcgdGhlIHNpbmdsZSBzdWJzY3JpcHQgYXMg dGhlCiAJICogdXBwZXIgYm91bmQgYW5kIHN1cHBseWluZyBhbiBhc3N1bWVkIGxvd2VyIGJvdW5k IG9mIDEuCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2goaWR4LCAq aW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNl cywgaWR4KTsKIAkJTm9kZQkgICAqc3ViZXhwcjsKQEAgLTE1Miw2ICsxNTIsOCBAQCBhcnJheV9z dWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCQkJCQkJbGlzdF9s ZW5ndGgodXBwZXJJbmRleHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQgbm90IGNoZWNrIGxv d2VySW5kZXhwciBzZXBhcmF0ZWx5ICovCiAKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CisKIAkvKgog CSAqIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRp b24uICBJdCdzIHRoZSBzYW1lCiAJICogYXMgdGhlIGFycmF5IHR5cGUgaWYgd2UncmUgc2xpY2lu ZywgZWxzZSBpdCdzIHRoZSBlbGVtZW50IHR5cGUuICBJbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IGRlNjRkNDk4NTEyLi44YWQ2YWExYWQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlN1YldvcmtzcGFj ZQogICovCiBzdGF0aWMgdm9pZAoganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRp bmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkgIExpc3Qg KippbmRpcmVjdGlvbiwKIAkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBib29s IGlzU2xpY2UsCiAJCQkJCQkgIGJvb2wgaXNBc3NpZ25tZW50KQpAQCAtNTMsNyArNTMsNyBAQCBq c29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqIFRy YW5zZm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBKc29uYiBzdWJz Y3JpcHRpbmcKIAkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5IGFuZCB0aGUg dXBwZXIgaW5kZXguCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2go aWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFf SW5kaWNlcywgaWR4KTsKIAkJTm9kZQkgICAqc3ViRXhwcjsKQEAgLTE1OSw2ICsxNTksOCBAQCBq c29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCS8qIERl dGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFs d2F5cyBqc29uYiAqLwogCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwogCXNic3JlZi0+ cmVmdHlwbW9kID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3N1YnNjcmlwdGluZy5oCmluZGV4IDIzNGU4YWQ4MDEyLi41ZDU3NmFmMzQ2ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmgKQEAgLTcxLDYgKzcxLDExIEBAIHN0cnVjdCBTdWJzY3JpcHRFeGVj U3RlcHM7CiAgKiBkb2VzIG5vdCBjYXJlIHRvIHN1cHBvcnQgc2xpY2luZywgaXQgY2FuIGp1c3Qg dGhyb3cgYW4gZXJyb3IgaWYgaXNTbGljZS4pCiAgKiBTZWUgYXJyYXlfc3Vic2NyaXB0X3RyYW5z Zm9ybSgpIGZvciBzYW1wbGUgY29kZS4KICAqCisgKiBUaGUgdHJhbnNmb3JtIG1ldGhvZCByZWNl aXZlcyBhIHBvaW50ZXIgdG8gYSBsaXN0IG9mIHJhdyBpbmRpcmVjdGlvbnMuCisgKiBUaGlzIGFs bG93cyB0aGUgbWV0aG9kIHRvIHBhcnNlIGEgc3VibGlzdCBvZiB0aGUgaW5kaXJlY3Rpb25zICh0 eXBpY2FsbHkKKyAqIHRoZSBwcmVmaXgpIGFuZCBtb2RpZnkgdGhlIG9yaWdpbmFsIGxpc3QgaW4g cGxhY2UsIGVuYWJsaW5nIHRoZSBjYWxsZXIgdG8KKyAqIGVpdGhlciBwcm9jZXNzIHRoZSByZW1h aW5pbmcgaW5kaXJlY3Rpb25zIGRpZmZlcmVudGx5IG9yIHJhaXNlIGFuIGVycm9yLgorICoKICAq IFRoZSB0cmFuc2Zvcm0gbWV0aG9kIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGlkZW50aWZ5aW5n IHRoZSByZXN1bHQgdHlwZQogICogb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb24uICBBdCBj YWxsLCByZWZjb250YWluZXJ0eXBlIGFuZCByZWZ0eXBtb2QKICAqIGRlc2NyaWJlIHRoZSBjb250 YWluZXIgdHlwZSAodGhpcyB3aWxsIGJlIGEgYmFzZSB0eXBlIG5vdCBhIGRvbWFpbiksIGFuZApA QCAtOTMsNyArOTgsNyBAQCBzdHJ1Y3QgU3Vic2NyaXB0RXhlY1N0ZXBzOwogICogYXNzaWdubWVu dCBtdXN0IHJldHVybi4KICAqLwogdHlwZWRlZiB2b2lkICgqU3Vic2NyaXB0VHJhbnNmb3JtKSAo U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCi0JCQkJCQkJCQlMaXN0ICppbmRpcmVjdGlvbiwKKwkJ CQkJCQkJCUxpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkJCXN0cnVjdCBQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQlib29sIGlzU2xpY2UsCiAJCQkJCQkJCQlib29sIGlzQXNzaWdubWVu dCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmN2QwN2M4NDU0Mi4uNThhNGI5ZGYxNTcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMzYxLDcgKzM2MSw3IEBAIGV4dGVybiBTdWJz Y3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCQkJCSBOb2RlICpjb250YWluZXJCYXNlLAogCQkJCQkJCQkJCQkJCSBP aWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAot CQkJCQkJCQkJCQkJCSBMaXN0ICppbmRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJCQkgTGlzdCAqKmlu ZGlyZWN0aW9uLAogCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCk7CiBleHRlcm4gQ29u c3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29uc3QpOwogCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Disposition: attachment; filename="v14-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgbb4 RnJvbSBkOTRiNjNhNDkyMTM0YzhiYzUzOTM4ZWFhMjIyNWVhZGU2ZjUxNTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTQgNS83XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBKU09OQiBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdCBub3Rh dGlvbiB0aGF0CmFsaWducyB3aXRoIHRoZSBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3BlY2lm aWVkIGluIFNRTDoyMDIzLgoKRXhhbXBsZXM6CgotLSBTZXR1cApjcmVhdGUgdGFibGUgdCh4IGlu dCwgeSBqc29uYik7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6 Ompzb25iOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMiwgImIiOiB7ImMiOiA0Mn19 Jzo6anNvbmI7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0 MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbmI7CgotLSBFeGlzdGluZyBzeW50YXggaW4gUG9zdGdy ZVNRTCB0aGF0IHByZWRhdGVzIHRoZSBTUUwgc3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZy b20gdDsKc2VsZWN0ICh0LnkpLT4nYictPidjJyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4w IGZyb20gdDsKCi0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNR TCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLmIgZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20g dDsKc2VsZWN0ICh0LnkpLmRbMF0gZnJvbSB0OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhh dCBzaW1wbGlmaWVkIGFjY2VzcyBpcyBlcXVpdmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICds YXggJC5KQycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVM TCBPTiBFUlJPUikKCndoZXJlOgogIFZFUCA9IDx2YWx1ZSBleHByZXNzaW9uIHByaW1hcnk+CiAg SkMgPSA8SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIG9wIGNoYWluPgoKRm9yIGV4YW1wbGUsIHRo ZSBKU09OX1FVRVJZIGVxdWl2YWxlbnRzIG9mIHRoZSBhYm92ZSBxdWVyaWVzIGFyZToKCnNlbGVj dCBqc29uX3F1ZXJ5KHksICdsYXggJC5iJyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIg TlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHks ICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2VsZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmRbMF0n IFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJS T1IpIGZyb20gdDsKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgpFeHRlbmRzIHRoZSBleGlzdGlu ZyBjb250YWluZXIgc3Vic2NyaXB0aW5nIGludGVyZmFjZSB0byBzdXBwb3J0CmNvbnRhaW5lci1z cGVjaWZpYyBpbmZvcm1hdGlvbiwgc3BlY2lmaWNhbGx5IGEgSlNPTlBhdGggZXhwcmVzc2lvbiBm b3IKanNvbmIuCgpEdXJpbmcgcXVlcnkgdHJhbnNmb3JtYXRpb24sIGlmIGRvdC1ub3RhdGlvbiBp cyBwcmVzZW50LCBjb25zdHJ1Y3RzIGEKSlNPTlBhdGggZXhwcmVzc2lvbiByZXByZXNlbnRpbmcg dGhlIGFjY2VzcyBjaGFpbi4KCkR1cmluZyBleGVjdXRpb24sIGlmIGEgSlNPTlBhdGggZXhwcmVz c2lvbiBpcyBwcmVzZW50IGluCkpzb25iU3ViV29ya3NwYWNlLCBleGVjdXRlcyBpdCB2aWEgSnNv blBhdGhRdWVyeSgpLgoKRG9lcyBub3QgdHJhbnNmb3JtIGFjY2Vzc29ycyBkaXJlY3RseSBpbnRv IEpTT05fUVVFUlkgZHVyaW5nCnRyYW5zZm9ybWF0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5h bCBxdWVyeSBzdHJ1Y3R1cmUgZm9yIEVYUExBSU4KYW5kIENSRUFURSBWSUVXLgoKQ28tYXV0aG9y ZWQtYnk6IE5pa2l0YSBHbHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVk LWJ5OiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTog TWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IE1hcmsgRGlsZ2VyIDxtYXJrLmRpbGdlckBlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTog SmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVmlrIEZl YXJpbmcgPHZpa0Bwb3N0Z3Jlc2ZyaWVuZHMub3JnPgpSZXZpZXdlZC1ieTogTmlraXRhIE1hbGFr aG92IDxodWt1dG9jQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQgPHBl dGVyQGVpc2VudHJhdXQub3JnPgpUZXN0ZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jl c0BqZWx0ZWYubmw+Ci0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0ICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgICAg ICAgICAgfCAgNzYgKystLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAg ICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYyAgICAgICAg ICAgICB8IDM1NCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICA1NCArKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNx bGpzb24uYyAgICAgICAgICB8IDExMiArKysrLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwt c3FsanNvbi5zdGRlcnIgICAgIHwgMTAwICsrKysrCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3Nx bC1zcWxqc29uLnN0ZG91dCAgICAgfCAgIDcgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3Nx bC9zcWxqc29uLnBnYyAgICAgIHwgIDMzICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pz b25iLm91dCAgICAgICAgICAgfCA0MDEgKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwgICAgICAgICAgICAgICAgfCAxMTEgKysrKy0KIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxMyBmaWxlcyBjaGFu Z2VkLCAxMjA5IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3FsX2ZlYXR1cmVzLnR4dAppbmRleCBlYmU4NTMzN2MyOC4uNDU3ZTk5MzMwNWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKQEAgLTU2OCw4ICs1NjgsOCBAQCBUODM4CUpTT05f VEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlOTwogVDgzOQlGb3JtYXR0ZWQgY2FzdCBvZiBk YXRldGltZXMgdG8vZnJvbSBjaGFyYWN0ZXIgc3RyaW5ncwkJCU5PCQogVDg0MAlIZXggaW50ZWdl ciBsaXRlcmFscyBpbiBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlCQkJWUVTCQogVDg1MQlTUUwvSlNP Tjogb3B0aW9uYWwga2V5d29yZHMgZm9yIGRlZmF1bHQgc3ludGF4CQkJWUVTCQotVDg2MAlTUUwv SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiBjb2x1bW4gcmVmZXJlbmNlIG9ubHkJCQlOTwkKLVQ4 NjEJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcjogY2FzZS1zZW5zaXRpdmUgSlNPTiBtZW1i ZXIgYWNjZXNzb3IJCQlOTwkKK1Q4NjAJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcjogY29s dW1uIHJlZmVyZW5jZSBvbmx5CQkJWUVTCQorVDg2MQlTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vz c29yOiBjYXNlLXNlbnNpdGl2ZSBKU09OIG1lbWJlciBhY2Nlc3NvcgkJCVlFUwkKIFQ4NjIJU1FM L0pTT04gc2ltcGxpZmllZCBhY2Nlc3Nvcjogd2lsZGNhcmQgbWVtYmVyIGFjY2Vzc29yCQkJTk8J CiBUODYzCVNRTC9KU09OIHNpbXBsaWZpZWQgYWNjZXNzb3I6IHNpbmdsZS1xdW90ZWQgc3RyaW5n IGxpdGVyYWwgYXMgbWVtYmVyIGFjY2Vzc29yCQkJTk8JCiBUODY0CVNRTC9KU09OIHNpbXBsaWZp ZWQgYWNjZXNzb3IJCQlOTwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGYxNTY5ODc5YjUy Li5lYWMzMWIwOTdlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0zMzIwLDUwICszMzIw LDU0IEBAIEV4ZWNJbml0U3Vic2NyaXB0aW5nUmVmKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgU3Vi c2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJCQkJCSAgIHN0YXRlLT5zdGVwc19sZW4gLSAxKTsK IAl9CiAKLQkvKiBFdmFsdWF0ZSB1cHBlciBzdWJzY3JpcHRzICovCi0JaSA9IDA7Ci0JZm9yZWFj aChsYywgc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpCisJLyogRXZhbHVhdGUgdXBwZXIgc3Vic2Ny aXB0cywgdW5sZXNzIHJlZmpzb25icGF0aCBpcyB1c2VkIGZvciBleGVjdXRpb24gKi8KKwlpZiAo IXNic3JlZi0+cmVmanNvbmJwYXRoKQogCXsKLQkJRXhwcgkgICAqZSA9IChFeHByICopIGxmaXJz dChsYyk7CisJCWkgPSAwOworCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikg eworCQkJRXhwciAqZSA9IChFeHByICopIGxmaXJzdChsYyk7CiAKLQkJLyogV2hlbiBzbGljaW5n LCBpbmRpdmlkdWFsIHN1YnNjcmlwdCBib3VuZHMgY2FuIGJlIG9taXR0ZWQgKi8KLQkJaWYgKCFl KQotCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IGZhbHNlOwotCQkJc2Jz cmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ldID0gdHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CXNic3JlZnN0YXRlLT51cHBlcnByb3ZpZGVkW2ldID0gdHJ1ZTsKLQkJCS8qIEVhY2ggc3Vic2Ny aXB0IGlzIGV2YWx1YXRlZCBpbnRvIGFwcHJvcHJpYXRlIGFycmF5IGVudHJ5ICovCi0JCQlFeGVj SW5pdEV4cHJSZWMoZSwgc3RhdGUsCi0JCQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4W2ld LAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleG51bGxbaV0pOworCQkJLyogV2hlbiBz bGljaW5nLCBpbmRpdmlkdWFsIHN1YnNjcmlwdCBib3VuZHMgY2FuIGJlIG9taXR0ZWQgKi8KKwkJ CWlmICghZSkKKwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IGZhbHNl OworCQkJCXNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSA9IHRydWU7CisJCQl9CisJCQll bHNlIHsKKwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyog RWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkg Ki8KKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+ dXBwZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSk7 CisJCQl9CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAotCS8qIEV2YWx1YXRlIGxvd2VyIHN1 YnNjcmlwdHMgc2ltaWxhcmx5ICovCi0JaSA9IDA7Ci0JZm9yZWFjaChsYywgc2JzcmVmLT5yZWZs b3dlcmluZGV4cHIpCisJLyogRXZhbHVhdGUgbG93ZXIgc3Vic2NyaXB0cyBzaW1pbGFybHksIHVu bGVzcyByZWZqc29uYnBhdGggaXMgdXNlZCBmb3IgZXhlY3V0aW9uICAqLworCWlmICghc2JzcmVm LT5yZWZqc29uYnBhdGgpCiAJewotCQlFeHByCSAgICplID0gKEV4cHIgKikgbGZpcnN0KGxjKTsK LQotCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUg b21pdHRlZCAqLwotCQlpZiAoIWUpCisJCWkgPSAwOworCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJl Zmxvd2VyaW5kZXhwcikKIAkJewotCQkJc2JzcmVmc3RhdGUtPmxvd2VycHJvdmlkZWRbaV0gPSBm YWxzZTsKLQkJCXNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSA9IHRydWU7Ci0JCX0KLQkJ ZWxzZQotCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7Ci0JCQkv KiBFYWNoIHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBhcHByb3ByaWF0ZSBhcnJheSBlbnRy eSAqLwotCQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+ bG93ZXJpbmRleFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldKTsK KwkJCUV4cHIJICAgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkvKiBXaGVuIHNsaWNp bmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLworCQkJaWYg KCFlKQorCQkJeworCQkJCXNic3JlZnN0YXRlLT5sb3dlcnByb3ZpZGVkW2ldID0gZmFsc2U7CisJ CQkJc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldID0gdHJ1ZTsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyog RWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkg Ki8KKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+ bG93ZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSk7 CisJCQl9CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAogCS8qIFNCU1JFRl9TVUJTQ1JJUFRT IGNoZWNrcyBhbmQgY29udmVydHMgYWxsIHRoZSBzdWJzY3JpcHRzIGF0IG9uY2UgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKaW5kZXggN2JjODIzNTA3ZjEuLmQxYmQ1NzVkOWJkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYwpAQCAtMjg0LDYgKzI4NCwxMyBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQog CQljYXNlIFRfUGxhY2VIb2xkZXJWYXI6CiAJCQl0eXBlID0gZXhwclR5cGUoKE5vZGUgKikgKChj b25zdCBQbGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhleHByKTsKIAkJCWJyZWFrOworCQljYXNl IFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCQkvKgorCQkJICogRmllbGRBY2Nlc3NvckV4cHIgaXMg bm90IGV2YWx1YWJsZS4gVHJlYXQgaXQgYXMgVEVYVCBmb3IgY29sbGF0aW9uLAorCQkJICogZGVw YXJzaW5nLCBhbmQgc2ltaWxhciBwdXJwb3Nlcywgc2luY2UgaXQgcmVwcmVzZW50cyBhIEpTT04g ZmllbGQgbmFtZS4KKwkJCSAqLworCQkJdHlwZSA9IFRFWFRPSUQ7CisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQp IG5vZGVUYWcoZXhwcikpOwogCQkJdHlwZSA9IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIg cXVpZXQgKi8KQEAgLTExNDYsNiArMTE1Myw5IEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhw ciwgT2lkIGNvbGxhdGlvbikKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCQkoKE1lcmdl U3VwcG9ydEZ1bmMgKikgZXhwciktPm1zZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOwor CQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCQkoKEZpZWxkQWNjZXNzb3JFeHByICopIGV4 cHIpLT5mYWVjb2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlw dGluZ1JlZjoKIAkJCSgoU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5yZWZjb2xsaWQgPSBjb2xs YXRpb247CiAJCQlicmVhazsKQEAgLTIxMjksNiArMjEzOSw3IEBAIGV4cHJlc3Npb25fdHJlZV93 YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQljYXNlIFRfU29ydEdyb3VwQ2xhdXNlOgogCQljYXNl IFRfQ1RFU2VhcmNoQ2xhdXNlOgogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKKwkJY2FzZSBU X0ZpZWxkQWNjZXNzb3JFeHByOgogCQkJLyogcHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBl eHByZXNzaW9uIHN1Ym5vZGVzICovCiAJCQlicmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlv bjoKQEAgLTMwMDgsNiArMzAxOSw3IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9k ZSAqbm9kZSwKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBUX0NURVNlYXJjaENs YXVzZToKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CisJCWNhc2UgVF9GaWVsZEFjY2Vzc29y RXhwcjoKIAkJCXJldHVybiBjb3B5T2JqZWN0KG5vZGUpOwogCQljYXNlIFRfV2l0aENoZWNrT3B0 aW9uOgogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCmluZGV4IGY5NDRkMTU0NGNhLi5k ZGY0NWRkNzNiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMTUsMjEgKzE1LDMw IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHBy LmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1 bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvc3Vic2NyaXB0aW5nLmgiCiAjaW5jbHVkZSAicGFyc2Vy L3BhcnNlX2NvZXJjZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUg InV0aWxzL2pzb25wYXRoLmgiCiAKIAotLyogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNl IGZvciBqc29uYiBzdWJzY3JpcHRpbmcgZXhlY3V0aW9uICovCisvKgorICogU3Vic2NyaXB0aW5n UmVmU3RhdGUud29ya3NwYWNlIGZvciBnZW5lcmljIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRp b24uCisgKgorICogU3RvcmVzIHN0YXRlIGZvciBib3RoIGpzb25iIHNpbXBsZSBzdWJzY3JpcHRp bmcgYW5kIGRvdCBub3RhdGlvbiBhY2Nlc3MuCisgKiBEb3Qgbm90YXRpb24gYWRkaXRpb25hbGx5 IHVzZXMgYGpzb25wYXRoYCBmb3IgSnNvblBhdGggZXZhbHVhdGlvbi4KKyAqLwogdHlwZWRlZiBz dHJ1Y3QgSnNvbmJTdWJXb3Jrc3BhY2UKIHsKIAlib29sCQlleHBlY3RBcnJheTsJLyoganNvbmIg cm9vdCBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheSAqLwogCU9pZAkJICAgKmluZGV4T2lkOwkJ LyogT0lEIG9mIGNvZXJjZWQgc3Vic2NyaXB0IGV4cHJlc3Npb24sIGNvdWxkCiAJCQkJCQkJCSAq IGJlIG9ubHkgaW50ZWdlciBvciB0ZXh0ICovCiAJRGF0dW0JICAgKmluZGV4OwkJCS8qIFN1YnNj cmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCisJSnNvblBhdGggICAqanNvbnBhdGg7CQkv KiBKc29uUGF0aCBmb3IgZG90IG5vdGF0aW9uIGV4ZWN1dGlvbiB2aWEKKwkJCQkJCQkJICogSnNv blBhdGhRdWVyeSgpICovCiB9IEpzb25iU3ViV29ya3NwYWNlOwogCiBzdGF0aWMgTm9kZSAqCkBA IC05Niw2ICsxMDUsMjU1IEBAIGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHRfdG9faW50NF9vcl90 ZXh0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqc3ViRXhwcikKIAlyZXR1cm4gc3ViRXhwcjsK IH0KIAorLyoKKyAqIER1cmluZyB0cmFuc2Zvcm1hdGlvbiwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8g YnVpbGQgYSBKc29uUGF0aAorICogZm9yIEpzb25QYXRoUXVlcnkoKSBleGVjdXRpb24uCisgKgor ICogSnNvblBhdGggaXMgbmVlZGVkIGlmIHRoZSBpbmRpcmVjdGlvbiBsaXN0IGluY2x1ZGVzOgor ICogLSBTdHJpbmctYmFzZWQgYWNjZXNzIChkb3Qgbm90YXRpb24pCisgKiAtIFNsaWNlLWJhc2Vk IHN1YnNjcmlwdGluZworICoKKyAqIE90aGVyd2lzZSwgc2ltcGxlIGpzb25iIHN1YnNjcmlwdGlu ZyBpcyBlbm91Z2guCisgKi8KK3N0YXRpYyBib29sCitqc29uYl9jaGVja19qc29ucGF0aF9uZWVk ZWQoTGlzdCAqaW5kaXJlY3Rpb24pCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxj LCBpbmRpcmVjdGlvbikKKwl7CisJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZpcnN0KGxjKTsKKwor CQlpZiAoSXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQkJcmV0dXJuIHRydWU7CisJCWVsc2UKKwkJ eworCQkJQXNzZXJ0KElzQShhY2Nlc3NvciwgQV9JbmRpY2VzKSk7CisKKwkJCWlmIChjYXN0Tm9k ZShBX0luZGljZXMsIGFjY2Vzc29yKS0+aXNfc2xpY2UpCisJCQkJcmV0dXJuIHRydWU7CisJCX0K Kwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBj b25zdHJ1Y3RpbmcgSnNvblBhdGggZXhwcmVzc2lvbnMuCisgKgorICogVGhlIG1ha2VfanNvbnBh dGhfaXRlbV8qIGZ1bmN0aW9ucyBjcmVhdGUgdmFyaW91cyB0eXBlcyBvZiBKc29uUGF0aFBhcnNl SXRlbQorICogbm9kZXMsIHdoaWNoIGFyZSB1c2VkIHRvIGJ1aWxkIEpzb25QYXRoIGV4cHJlc3Np b25zIGZvciBqc29uYiBzaW1wbGlmaWVkCisgKiBhY2Nlc3Nvci4KKyAqLworCitzdGF0aWMgSnNv blBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtKEpzb25QYXRoSXRlbVR5cGUgdHlw ZSkKK3sKKwlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvYyhzaXplb2YoKnYpKTsKKworCXYt PnR5cGUgPSB0eXBlOworCXYtPm5leHQgPSBOVUxMOworCisJcmV0dXJuIHY7Cit9CisKKy8qCisg KiBCdWlsZCBhIEpzb25QYXRoUGFyc2VJdGVtIGZvciBhIGNvbnN0YW50IGludGVnZXIgdmFsdWUu CisgKgorICogVGhpcyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEganBpTnVtZXJpYyBpdGVtIGZvciB1 c2UgaW4gSnNvblBhdGgsCisgKiBhbmQgYXBwZW5kcyBhIG1hdGNoaW5nIENvbnN0KElOVDQpIG5v ZGUgdG8gdGhlIGdpdmVuIGV4cHJlc3Npb24gbGlzdAorICogZm9yIHVzZSBpbiBFWFBMQUlOLCB2 aWV3cywgZXRjLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAtIHZhbDogaW50ZWdlciBjb25zdGFu dCB2YWx1ZQorICogLSBleHByczogbGlzdCBvZiBleHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGlu IHBsYWNlKQorICovCitzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9p dGVtX2ludChpbnQzMiB2YWwsIExpc3QgKipleHBycykKK3sKKwlKc29uUGF0aFBhcnNlSXRlbSAq anBpID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaU51bWVyaWMpOworCisJanBpLT52YWx1ZS5udW1l cmljID0KKwkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmlj LCBJbnQzMkdldERhdHVtKHZhbCkpKTsKKworCSpleHBycyA9IGxhcHBlbmQoKmV4cHJzLCBtYWtl Q29uc3QoSU5UNE9JRCwgLTEsIEludmFsaWRPaWQsIDQsCisJCQkJCQkJCQkgICBJbnQzMkdldERh dHVtKHZhbCksIGZhbHNlLCB0cnVlKSk7CisKKwlyZXR1cm4ganBpOworfQorCisvKgorICogQ29u dmVydCBhIGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiBpbnRvIGEgSnNvblBhdGhQYXJzZUl0 ZW0uCisgKgorICogVGhlIGlucHV0IGV4cHJlc3Npb24gbXVzdCBiZSBhIG5vbi1udWxsIGNvbnN0 YW50IG9mIHR5cGUgSU5UNC4gUmV0dXJucyBOVUxMIG90aGVyd2lzZS4KKyAqIFRoZSBmdW5jdGlv biBleHRyYWN0cyB0aGUgdmFsdWUgYW5kIGRlbGVnYXRlcyBpdCB0byBtYWtlX2pzb25wYXRoX2l0 ZW1faW50KCkuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBwYXJzZSBzdGF0ZSBj b250ZXh0CisgKiAtIGV4cHI6IGlucHV0IGV4cHJlc3Npb24gbm9kZQorICogLSBleHByczogbGlz dCBvZiBleHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNlKQorICovCitzdGF0aWMgSnNv blBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBOb2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7CisJQ29uc3QJICAgKmNuc3Q7CisKKwll eHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGV4cHIsIHBzdGF0ZS0+cF9leHByX2tpbmQpOwor CisJaWYgKElzQShleHByLCBDb25zdCkpCisJeworCQljbnN0ID0gKENvbnN0ICopIGV4cHI7CisJ CWlmIChjbnN0LT5jb25zdHR5cGUgPT0gSU5UNE9JRCAmJiAhKGNuc3QtPmNvbnN0aXNudWxsKSkK KwkJCXJldHVybiBtYWtlX2pzb25wYXRoX2l0ZW1faW50KERhdHVtR2V0SW50MzIoY25zdC0+Y29u c3R2YWx1ZSksIGV4cHJzKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIENvbnN0 cnVjdHMgYSBKc29uUGF0aCBleHByZXNzaW9uIGZyb20gYSBsaXN0IG9mIGluZGlyZWN0aW9ucy4K KyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aGVuIGpzb25iIHN1YnNjcmlwdGluZyBpbnZvbHZl cyBkb3Qgbm90YXRpb24sCisgKiByZXF1aXJpbmcgSnNvblBhdGgtYmFzZWQgZXZhbHVhdGlvbi4K KyAqCisgKiBUaGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIGluZGlyZWN0aW9uIGxpc3QgaW4gcGxh Y2UsIHJlbW92aW5nIHByb2Nlc3NlZAorICogZWxlbWVudHMgYXMgaXQgY29udmVydHMgdGhlbSBp bnRvIEpzb25QYXRoIGNvbXBvbmVudHMsIGFzIGZvbGxvd3M6CisgKiAtIFN0cmluZyBrZXlzIChk b3Qgbm90YXRpb24pIC0+IGpwaUtleSBpdGVtcy4KKyAqIC0gQXJyYXkgaW5kaWNlcyAtPiBqcGlJ bmRleEFycmF5IGl0ZW1zLgorICoKKyAqIEluIGFkZGl0aW9uIHRvIGJ1aWxkaW5nIHRoZSBKc29u UGF0aCBleHByZXNzaW9uLCB0aGlzIGZ1bmN0aW9uIHBvcHVsYXRlcworICogdGhlIGZvbGxvd2lu ZyBmaWVsZHMgb2YgdGhlIGdpdmVuIFN1YnNjcmlwdGluZ1JlZjoKKyAqIC0gcmVmanNvbmJwYXRo OiB0aGUgZ2VuZXJhdGVkIEpzb25QYXRoCisgKiAtIHJlZnVwcGVyaW5kZXhwcjogdXBwZXIgaW5k ZXggZXhwcmVzc2lvbnMgKG9iamVjdCBrZXlzIG9yIGFycmF5IGluZGV4ZXMpCisgKiAtIHJlZmxv d2VyaW5kZXhwcjogbG93ZXIgaW5kZXggZXhwcmVzc2lvbnMsIHJlbWFpbnMgTklMIGFzIHNsaWNl cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRl OiBQYXJzZSBzdGF0ZSBjb250ZXh0LgorICogLSBpbmRpcmVjdGlvbjogTGlzdCBvZiBzdWJzY3Jp cHRpbmcgZXhwcmVzc2lvbnMgKG1vZGlmaWVkIGluLXBsYWNlKS4KKyAqIC0gc2JzcmVmOiBTdWJz Y3JpcHRpbmdSZWYgbm9kZSB0byB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK2pzb25iX3N1YnNj cmlwdF9tYWtlX2pzb25wYXRoKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqKmluZGlyZWN0aW9u LCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZikKK3sKKwlKc29uUGF0aFBhcnNlUmVzdWx0IGpwcmVz OworCUpzb25QYXRoUGFyc2VJdGVtICpwYXRoID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaVJvb3Qp OworCUxpc3RDZWxsICAgKmxjOworCURhdHVtCQlqc3A7CisJaW50CQkJcGF0aGxlbiA9IDA7CisK KwlzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciA9IE5JTDsKKwlzYnNyZWYtPnJlZmxvd2VyaW5kZXhw ciA9IE5JTDsKKwlzYnNyZWYtPnJlZmpzb25icGF0aCA9IE5VTEw7CisKKwlqcHJlcy5leHByID0g cGF0aDsKKwlqcHJlcy5sYXggPSB0cnVlOworCisJZm9yZWFjaChsYywgKmluZGlyZWN0aW9uKQor CXsKKwkJTm9kZQkgICAqYWNjZXNzb3IgPSBsZmlyc3QobGMpOworCQlKc29uUGF0aFBhcnNlSXRl bSAqanBpOworCisJCWlmIChJc0EoYWNjZXNzb3IsIFN0cmluZykpCisJCXsKKwkJCWNoYXIJICAg KmZpZWxkID0gc3RyVmFsKGFjY2Vzc29yKTsKKwkJCUZpZWxkQWNjZXNzb3JFeHByICphY2Nlc3Nv cl9leHByOworCisJCQlqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpS2V5KTsKKwkJCWpwaS0+ dmFsdWUuc3RyaW5nLnZhbCA9IGZpZWxkOworCQkJanBpLT52YWx1ZS5zdHJpbmcubGVuID0gc3Ry bGVuKGZpZWxkKTsKKworCQkJYWNjZXNzb3JfZXhwciA9IG1ha2VOb2RlKEZpZWxkQWNjZXNzb3JF eHByKTsKKwkJCWFjY2Vzc29yX2V4cHItPnR5cGUgPSBUX0ZpZWxkQWNjZXNzb3JFeHByOworCQkJ YWNjZXNzb3JfZXhwci0+ZmllbGRuYW1lID0gZmllbGQ7CisKKwkJCXNic3JlZi0+cmVmdXBwZXJp bmRleHByID0gbGFwcGVuZChzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciwgYWNjZXNzb3JfZXhwcik7 CisJCX0KKwkJZWxzZSBpZiAoSXNBKGFjY2Vzc29yLCBBX0luZGljZXMpKQorCQl7CisJCQlBX0lu ZGljZXMgICphaSA9IGNhc3ROb2RlKEFfSW5kaWNlcywgYWNjZXNzb3IpOworCisJCQlqcGkgPSBt YWtlX2pzb25wYXRoX2l0ZW0oanBpSW5kZXhBcnJheSk7CisJCQlqcGktPnZhbHVlLmFycmF5Lm5l bGVtcyA9IDE7CisJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zID0gcGFsbG9jKHNpemVvZihqcGkt PnZhbHVlLmFycmF5LmVsZW1zWzBdKSk7CisKKwkJCWlmIChhaS0+aXNfc2xpY2UpCisJCQl7CisJ CQkJTm9kZQkgICAqZXhwciA9IGFpLT51aWR4ID8gYWktPnVpZHggOiBhaS0+bGlkeDsKKworCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENI KSwKKwkJCQkJCSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNl cyIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihleHBy KSkpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlKc29uUGF0aFBhcnNlSXRlbSAqanBpX2Zy b20gPSBOVUxMOworCisJCQkJQXNzZXJ0KGFpLT51aWR4ICYmICFhaS0+bGlkeCk7CisJCQkJanBp X2Zyb20gPSBtYWtlX2pzb25wYXRoX2l0ZW1fZXhwcihwc3RhdGUsIGFpLT51aWR4LCAmc2JzcmVm LT5yZWZ1cHBlcmluZGV4cHIpOworCQkJCWlmIChqcGlfZnJvbSA9PSBOVUxMKQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogQnJlYWsgb3V0IG9mIHRoZSBsb29wIGlmIHRoZSBzdWJzY3JpcHQgaXMg bm90IGEKKwkJCQkJICogbm9uLW51bGwgaW50ZWdlciBjb25zdGFudCwgc28gdGhhdCB3ZSBjYW4g ZmFsbCBiYWNrIHRvCisJCQkJCSAqIGpzb25iIHN1YnNjcmlwdGluZyBsb2dpYy4KKwkJCQkJICoK KwkJCQkJICogVGhpcyBpcyBuZWVkZWQgdG8gaGFuZGxlIGNhc2VzIHdpdGggbWl4ZWQgdXNhZ2Ug b2YgU1FMCisJCQkJCSAqIHN0YW5kYXJkIGpzb24gc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXgg YW5kIFBvc3RncmVTUUwKKwkJCQkJICoganNvbmIgc3Vic2NyaXB0aW5nIHN5bnRheCwgZS5nOgor CQkJCQkgKgorCQkJCQkgKiBzZWxlY3QgKGpiKS5hWydiJ10uYyBmcm9tIGpzb25iX3RhYmxlOwor CQkJCQkgKgorCQkJCQkgKiB3aGVyZSBkb3Qtbm90YXRpb24gKC5hIGFuZCAuYykgaXMgdGhlIFNR TCBzdGFuZGFyZCBqc29uCisJCQkJCSAqIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4LCBhbmQg dGhlIFsnYiddIHN1YnNjcmlwdCBpcworCQkJCQkgKiB0aGUgUG9zdGdyZVNRTCBqc29uYiBzdWJz Y3JpcHRpbmcgc3ludGF4LCBiZWNhdXNlICdiJworCQkJCQkgKiBpcyBub3QgYSBub24tbnVsbCBj b25zdGFudCBpbnRlZ2VyIGFuZCBjYW5ub3QgYmUgdXNlZAorCQkJCQkgKiBmb3IganNvbiBhcnJh eSBhY2Nlc3MuCisJCQkJCSAqCisJCQkJCSAqIEluIHRoaXMgY2FzZSwgd2UgY2Fubm90IGNyZWF0 ZSBhIEpzb25QYXRoIGl0ZW0sIHNvIHdlCisJCQkJCSAqIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBh bmQgbGV0CisJCQkJCSAqIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oKSBoYW5kbGUgdGhpcyBp bmRpcmVjdGlvbiBhcworCQkJCQkgKiBhIFBvc3RncmVTUUwganNvbmIgc3Vic2NyaXB0LgorCQkJ CQkgKi8KKwkJCQkJcGZyZWUoanBpLT52YWx1ZS5hcnJheS5lbGVtcyk7CisJCQkJCXBmcmVlKGpw aSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0u ZnJvbSA9IGpwaV9mcm9tOworCQkJCWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0udG8gPSBOVUxM OworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFVuZXhwZWN0ZWQgbm9kZSB0 eXBlIGluIGluZGlyZWN0aW9uIGxpc3QuIFRoaXMgc2hvdWxkIG5vdAorCQkJICogaGFwcGVuIHdp dGggY3VycmVudCBncmFtbWFyLCBidXQgd2UgaGFuZGxlIGl0IGRlZmVuc2l2ZWx5IGJ5CisJCQkg KiBicmVha2luZyBvdXQgb2YgdGhlIGxvb3AgcmF0aGVyIHRoYW4gY3Jhc2hpbmcuIEluIGNhc2Ug b2YKKwkJCSAqIGZ1dHVyZSBncmFtbWFyIGNoYW5nZXMgdGhhdCBtaWdodCBpbnRyb2R1Y2UgbmV3 IG5vZGUgdHlwZXMsCisJCQkgKiB0aGlzIGFsbG93cyB1cyB0byBjcmVhdGUgYSBqc29ucGF0aCBm cm9tIGFzIG1hbnkgaW5kaXJlY3Rpb24KKwkJCSAqIGVsZW1lbnRzIGFzIHdlIGNhbiBhbmQgbGV0 IHRyYW5zZm9ybUluZGlyZWN0aW9uKCkgZmFsbGJhY2sgdG8KKwkJCSAqIGFsdGVybmF0aXZlIGxv Z2ljIHRvIGhhbmRsZSB0aGUgcmVtYWluaW5nIGluZGlyZWN0aW9uIGVsZW1lbnRzLgorCQkJICov CisJCQlBc3NlcnQoZmFsc2UpOwkJLyogbm90IHJlYWNoYWJsZSAqLworCQkJYnJlYWs7CisJCX0K KworCQkvKiBhcHBlbmQgcGF0aCBpdGVtICovCisJCXBhdGgtPm5leHQgPSBqcGk7CisJCXBhdGgg PSBqcGk7CisJCXBhdGhsZW4rKzsKKwl9CisKKwlpZiAocGF0aGxlbiA9PSAwKQorCQlyZXR1cm47 CisKKwkqaW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwgcGF0 aGxlbik7CisKKwlqc3AgPSBqc29uUGF0aEZyb21QYXJzZVJlc3VsdCgmanByZXMsIDAsIE5VTEwp OworCisJc2JzcmVmLT5yZWZqc29uYnBhdGggPSAoTm9kZSAqKSBtYWtlQ29uc3QoSlNPTlBBVEhP SUQsIC0xLCBJbnZhbGlkT2lkLCAtMSwganNwLCBmYWxzZSwgZmFsc2UpOworfQorCiAvKgogICog RmluaXNoIHBhcnNlIGFuYWx5c2lzIG9mIGEgU3Vic2NyaXB0aW5nUmVmIGV4cHJlc3Npb24gZm9y IGEganNvbmIuCiAgKgpAQCAtMTEyLDQ3ICszNzAsNDUgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5z Zm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlMaXN0CSAgICp1cHBlckluZGV4cHIgPSBO SUw7CiAJTGlzdENlbGwgICAqaWR4OwogCisJLyogRGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBv ZiB0aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIGpzb25iICovCisJc2JzcmVmLT5y ZWZyZXN0eXBlID0gSlNPTkJPSUQ7CisJc2JzcmVmLT5yZWZ0eXBtb2QgPSAtMTsKKworCWlmIChp c1NsaWNlIHx8IGpzb25iX2NoZWNrX2pzb25wYXRoX25lZWRlZCgqaW5kaXJlY3Rpb24pKQorCXsK KwkJanNvbmJfc3Vic2NyaXB0X21ha2VfanNvbnBhdGgocHN0YXRlLCBpbmRpcmVjdGlvbiwgc2Jz cmVmKTsKKwkJaWYgKHNic3JlZi0+cmVmanNvbmJwYXRoKQorCQkJcmV0dXJuOworCX0KKwogCS8q Ci0JICogVHJhbnNmb3JtIGFuZCBjb252ZXJ0IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbnMuIEpz b25iIHN1YnNjcmlwdGluZwotCSAqIGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzLCBsb29rIG9ubHkg YXQgdGhlIHVwcGVyIGluZGV4LgorCSAqIFdlIHJlYWNoIGhlcmUgb25seSBpbiB0d28gY2FzZXM6 IChhKSB0aGUgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIGlzCisJICogbm90IG5lZWRlZCBhdCBh bGwgKGZvciBleGFtcGxlLCBhIHBsYWluIGFycmF5IHN1YnNjcmlwdCBsaWtlIFsxXSksIG9yCisJ ICogKGIpIGpzb25iX3N1YnNjcmlwdF9tYWtlX2pzb25wYXRoKCkgZXhhbWluZWQgdGhlIGZpcnN0 IGluZGlyZWN0aW9uCisJICogZWxlbWVudCBidXQgY291bGQgbm90IHR1cm4gaXQgaW50byBhIEpz b25QYXRoIGNvbXBvbmVudCAoZm9yIGV4YW1wbGUsCisJICogWydhJ10pLgorCSAqCisJICogSW4g Ym90aCBjYXNlcyB3ZSBmYWxsIGJhY2sgdG8gcHJlLXN0YW5kYXJkIGpzb25iIHN1YnNjcmlwdGlu ZywgY29lcmNpbmcKKwkgKiBlYWNoIHN1YnNjcmlwdCB0byBhcnJheSBpbmRleCBvciBvYmplY3Qg a2V5IGFzIG5lZWRlZC4KIAkgKi8KIAlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKKwkJ Tm9kZQkgICAqaSA9IGxmaXJzdChpZHgpOwogCQlBX0luZGljZXMgICphaTsKIAkJTm9kZQkgICAq c3ViRXhwcjsKIAogCQlpZiAoIUlzQShsZmlyc3QoaWR4KSwgQV9JbmRpY2VzKSkKIAkJCWJyZWFr OwogCi0JCWFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBpZHgpOworCQlhaSA9IGNhc3ROb2Rl KEFfSW5kaWNlcywgaSk7CiAKLQkJaWYgKGlzU2xpY2UpCi0JCXsKLQkJCU5vZGUJICAgKmV4cHIg PSBhaS0+dWlkeCA/IGFpLT51aWR4IDogYWktPmxpZHg7CisJCWlmIChhaS0+aXNfc2xpY2UpCisJ CQlicmVhazsKIAotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBz dXBwb3J0IHNsaWNlcyIpLAotCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxv Y2F0aW9uKGV4cHIpKSkpOwotCQl9CisJCUFzc2VydCghYWktPmxpZHggJiYgYWktPnVpZHgpOwog Ci0JCWlmIChhaS0+dWlkeCkKLQkJewotCQkJc3ViRXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRl LCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7Ci0JCQlzdWJFeHByID0gY29lcmNlX2pz b25wYXRoX3N1YnNjcmlwdF90b19pbnQ0X29yX3RleHQocHN0YXRlLCBzdWJFeHByKTsKLQkJfQot CQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBTbGljZSB3aXRoIG9taXR0ZWQgdXBwZXIgYm91bmQu IFNob3VsZCBub3QgaGFwcGVuIGFzIHdlIGFscmVhZHkKLQkJCSAqIGVycm9yZWQgb3V0IG9uIHNs aWNlIGVhcmxpZXIsIGJ1dCBoYW5kbGUgdGhpcyBqdXN0IGluIGNhc2UuCi0JCQkgKi8KLQkJCUFz c2VydChpc1NsaWNlICYmIGFpLT5pc19zbGljZSk7Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJIGVycm1zZygianNvbmIg c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIiksCi0JCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oYWktPnVpZHgpKSkpOwotCQl9CisJCXN1YkV4cHIg PSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgYWktPnVpZHgsIHBzdGF0ZS0+cF9leHByX2tpbmQpOwor CQlzdWJFeHByID0gY29lcmNlX2pzb25wYXRoX3N1YnNjcmlwdF90b19pbnQ0X29yX3RleHQocHN0 YXRlLCBzdWJFeHByKTsKIAogCQl1cHBlckluZGV4cHIgPSBsYXBwZW5kKHVwcGVySW5kZXhwciwg c3ViRXhwcik7CiAJfQpAQCAtMTYxLDEwICs0MTcsNiBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNm b3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCXNic3JlZi0+cmVmdXBwZXJpbmRleHByID0g dXBwZXJJbmRleHByOwogCXNic3JlZi0+cmVmbG93ZXJpbmRleHByID0gTklMOwogCi0JLyogRGV0 ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3 YXlzIGpzb25iICovCi0Jc2JzcmVmLT5yZWZyZXN0eXBlID0gSlNPTkJPSUQ7Ci0Jc2JzcmVmLT5y ZWZ0eXBtb2QgPSAtMTsKLQogCS8qIFJlbW92ZSBwcm9jZXNzZWQgZWxlbWVudHMgKi8KIAlpZiAo dXBwZXJJbmRleHByKQogCQkqaW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRp cmVjdGlvbiwgbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSk7CkBAIC0yMTksNyArNDcxLDcgQEAg anNvbmJfc3Vic2NyaXB0X2NoZWNrX3N1YnNjcmlwdHMoRXhwclN0YXRlICpzdGF0ZSwKIAkJCSAq IEZvciBqc29uYiBmZXRjaCBhbmQgYXNzaWduIGZ1bmN0aW9ucyB3ZSBuZWVkIHRvIHByb3ZpZGUg cGF0aCBpbgogCQkJICogdGV4dCBmb3JtYXQuIENvbnZlcnQgaWYgaXQncyBub3QgYWxyZWFkeSB0 ZXh0LgogCQkJICovCi0JCQlpZiAod29ya3NwYWNlLT5pbmRleE9pZFtpXSA9PSBJTlQ0T0lEKQor CQkJaWYgKCF3b3Jrc3BhY2UtPmpzb25wYXRoICYmIHdvcmtzcGFjZS0+aW5kZXhPaWRbaV0gPT0g SU5UNE9JRCkKIAkJCXsKIAkJCQlEYXR1bQkJZGF0dW0gPSBzYnNyZWZzdGF0ZS0+dXBwZXJpbmRl eFtpXTsKIAkJCQljaGFyCSAgICpjcyA9IERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNh bGwxKGludDRvdXQsIGRhdHVtKSk7CkBAIC0yNDcsMTcgKzQ5OSwzMiBAQCBqc29uYl9zdWJzY3Jp cHRfZmV0Y2goRXhwclN0YXRlICpzdGF0ZSwKIHsKIAlTdWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2Jz cmVmc3RhdGUgPSBvcC0+ZC5zYnNyZWYuc3RhdGU7CiAJSnNvbmJTdWJXb3Jrc3BhY2UgKndvcmtz cGFjZSA9IChKc29uYlN1YldvcmtzcGFjZSAqKSBzYnNyZWZzdGF0ZS0+d29ya3NwYWNlOwotCUpz b25iCSAgICpqc29uYlNvdXJjZTsKIAogCS8qIFNob3VsZCBub3QgZ2V0IGhlcmUgaWYgc291cmNl IGpzb25iIChvciBhbnkgc3Vic2NyaXB0KSBpcyBudWxsICovCiAJQXNzZXJ0KCEoKm9wLT5yZXNu dWxsKSk7CiAKLQlqc29uYlNvdXJjZSA9IERhdHVtR2V0SnNvbmJQKCpvcC0+cmVzdmFsdWUpOwot CSpvcC0+cmVzdmFsdWUgPSBqc29uYl9nZXRfZWxlbWVudChqc29uYlNvdXJjZSwKLQkJCQkJCQkJ CSAgd29ya3NwYWNlLT5pbmRleCwKLQkJCQkJCQkJCSAgc2JzcmVmc3RhdGUtPm51bXVwcGVyLAot CQkJCQkJCQkJICBvcC0+cmVzbnVsbCwKLQkJCQkJCQkJCSAgZmFsc2UpOworCWlmICh3b3Jrc3Bh Y2UtPmpzb25wYXRoKQorCXsKKwkJYm9vbAkJZW1wdHkgPSBmYWxzZTsKKwkJYm9vbAkJZXJyb3Ig PSBmYWxzZTsKKworCQkqb3AtPnJlc3ZhbHVlID0gSnNvblBhdGhRdWVyeSgqb3AtPnJlc3ZhbHVl LCB3b3Jrc3BhY2UtPmpzb25wYXRoLAorCQkJCQkJCQkJICBKU1dfQ09ORElUSU9OQUwsCisJCQkJ CQkJCQkgICZlbXB0eSwgJmVycm9yLCBOVUxMLAorCQkJCQkJCQkJICBOVUxMKTsKKworCQkqb3At PnJlc251bGwgPSBlbXB0eSB8fCBlcnJvcjsKKwl9CisJZWxzZQorCXsKKwkJSnNvbmIJICAgKmpz b25iU291cmNlID0gRGF0dW1HZXRKc29uYlAoKm9wLT5yZXN2YWx1ZSk7CisKKwkJKm9wLT5yZXN2 YWx1ZSA9IGpzb25iX2dldF9lbGVtZW50KGpzb25iU291cmNlLAorCQkJCQkJCQkJCSAgd29ya3Nw YWNlLT5pbmRleCwKKwkJCQkJCQkJCQkgIHNic3JlZnN0YXRlLT5udW11cHBlciwKKwkJCQkJCQkJ CQkgIG9wLT5yZXNudWxsLAorCQkJCQkJCQkJCSAgZmFsc2UpOworCX0KIH0KIAogLyoKQEAgLTM2 NSw3ICs2MzIsNyBAQCBqc29uYl9leGVjX3NldHVwKGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqc2Jz cmVmLAogewogCUpzb25iU3ViV29ya3NwYWNlICp3b3Jrc3BhY2U7CiAJTGlzdENlbGwgICAqbGM7 Ci0JaW50CQkJbnVwcGVyID0gc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHItPmxlbmd0aDsKKwlpbnQJ CQludXBwZXIgPSBsaXN0X2xlbmd0aChzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcik7CiAJY2hhcgkg ICAqcHRyOwogCiAJLyogQWxsb2NhdGUgdHlwZS1zcGVjaWZpYyB3b3Jrc3BhY2Ugd2l0aCBzcGFj ZSBmb3IgcGVyLXN1YnNjcmlwdCBkYXRhICovCkBAIC0zNzQsNiArNjQxLDkgQEAganNvbmJfZXhl Y19zZXR1cChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAl3b3Jrc3BhY2UtPmV4cGVj dEFycmF5ID0gZmFsc2U7CiAJcHRyID0gKChjaGFyICopIHdvcmtzcGFjZSkgKyBNQVhBTElHTihz aXplb2YoSnNvbmJTdWJXb3Jrc3BhY2UpKTsKIAorCWlmIChzYnNyZWYtPnJlZmpzb25icGF0aCkK KwkJd29ya3NwYWNlLT5qc29ucGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKGNhc3ROb2RlKENvbnN0 LCBzYnNyZWYtPnJlZmpzb25icGF0aCktPmNvbnN0dmFsdWUpOworCiAJLyoKIAkgKiBUaGlzIGNv ZGluZyBhc3N1bWVzIHNpemVvZihEYXR1bSkgPj0gc2l6ZW9mKE9pZCksIGVsc2Ugd2UgbWlnaHQK IAkgKiBtaXNhbGlnbiB0aGUgaW5kZXhPaWQgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCmluZGV4IDNkNmU2YmRiZmQyLi5iYWEzYWU5N2Q1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwpAQCAtOTMyOSwxMCArOTMyOSwxMyBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUs IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkgKiBQYXJlbnRoZXNpemUgdGhlIGFyZ3Vt ZW50IHVubGVzcyBpdCdzIGEgc2ltcGxlIFZhciBvciBhCiAJCQkJICogRmllbGRTZWxlY3QuICAo SW4gcGFydGljdWxhciwgaWYgaXQncyBhbm90aGVyCiAJCQkJICogU3Vic2NyaXB0aW5nUmVmLCB3 ZSAqbXVzdCogcGFyZW50aGVzaXplIHRvIGF2b2lkCi0JCQkJICogY29uZnVzaW9uLikKKwkJCQkg KiBjb25mdXNpb24uKSBBbHdheXMgYWRkIHBhcmVudGhlc2lzIGlmIEpTT04gc2ltcGxpZmllZAor CQkJCSAqIGFjY2Vzc29yIGlzIHVzZWQsIGZvciBub3cuCiAJCQkJICovCi0JCQkJbmVlZF9wYXJl bnMgPSAhSXNBKHNic3JlZi0+cmVmZXhwciwgVmFyKSAmJgotCQkJCQkhSXNBKHNic3JlZi0+cmVm ZXhwciwgRmllbGRTZWxlY3QpOworCQkJCW5lZWRfcGFyZW5zID0gKCFJc0Eoc2JzcmVmLT5yZWZl eHByLCBWYXIpICYmCisJCQkJCSFJc0Eoc2JzcmVmLT5yZWZleHByLCBGaWVsZFNlbGVjdCkpIHx8 CisJCQkJCQlzYnNyZWYtPnJlZmpzb25icGF0aDsKKwogCQkJCWlmIChuZWVkX3BhcmVucykKIAkJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOwogCQkJCWdldF9ydWxlX2V4cHIoKE5v ZGUgKikgc2JzcmVmLT5yZWZleHByLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwpAQCAtMTMwMDUs MTcgKzEzMDA4LDM1IEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCWxvd2xpc3RfaXRlbSA9IGxpc3RfaGVhZChzYnNy ZWYtPnJlZmxvd2VyaW5kZXhwcik7CS8qIGNvdWxkIGJlIE5VTEwgKi8KIAlmb3JlYWNoKHVwbGlz dF9pdGVtLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikKIAl7Ci0JCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJ1snKTsKLQkJaWYgKGxvd2xpc3RfaXRlbSkKKwkJTm9kZSAqdXBwZXIgPSAoTm9k ZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pOworCisJCWlmICh1cHBlciAmJiBJc0EodXBwZXIsIEZp ZWxkQWNjZXNzb3JFeHByKSkKIAkJeworCQkJRmllbGRBY2Nlc3NvckV4cHIgKmZhZSA9IChGaWVs ZEFjY2Vzc29yRXhwciAqKSB1cHBlcjsKKworCQkJLyogVXNlIGRvdC1ub3RhdGlvbiBmb3IgZmll bGQgYWNjZXNzICovCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcuJyk7CisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihmYWUtPmZpZWxkbmFtZSkp OworCisJCQkvKiBTa2lwIG1hdGNoaW5nIGxvdyBpbmRleCDigJQgZmllbGQgYWNjZXNzIGRvZXNu J3QgdXNlIHNsaWNlcyAqLworCQkJaWYgKGxvd2xpc3RfaXRlbSkKKwkJCQlsb3dsaXN0X2l0ZW0g PSBsbmV4dChzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciwgbG93bGlzdF9pdGVtKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCS8qIFVzZSBKU09OQiBhcnJheSBzdWJzY3JpcHRpbmcgKi8KKwkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1snKTsKKwkJCWlmIChsb3dsaXN0X2l0ZW0pCisJCQl7CisJ CQkJLyogSWYgc3ViZXhwcmVzc2lvbiBpcyBOVUxMLCBnZXRfcnVsZV9leHByIHByaW50cyBub3Ro aW5nICovCisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QobG93bGlzdF9pdGVtKSwg Y29udGV4dCwgZmFsc2UpOworCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJzonKTsKKwkJ CQlsb3dsaXN0X2l0ZW0gPSBsbmV4dChzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciwgbG93bGlzdF9p dGVtKTsKKwkJCX0KIAkJCS8qIElmIHN1YmV4cHJlc3Npb24gaXMgTlVMTCwgZ2V0X3J1bGVfZXhw ciBwcmludHMgbm90aGluZyAqLwotCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QobG93 bGlzdF9pdGVtKSwgY29udGV4dCwgZmFsc2UpOwotCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnOicpOwotCQkJbG93bGlzdF9pdGVtID0gbG5leHQoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIs IGxvd2xpc3RfaXRlbSk7CisJCQlnZXRfcnVsZV9leHByKHVwcGVyLCBjb250ZXh0LCBmYWxzZSk7 CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICddJyk7CiAJCX0KLQkJLyogSWYgc3ViZXhw cmVzc2lvbiBpcyBOVUxMLCBnZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICovCi0JCWdldF9y dWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KHVwbGlzdF9pdGVtKSwgY29udGV4dCwgZmFsc2UpOwot CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICddJyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCmluZGV4IDZkZmNhM2NiMzViLi43ZTg5NjIxYmQ2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgK QEAgLTcwOCwxOCArNzA4LDMwIEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGluZ1JlZgogCWlu dDMyCQlyZWZ0eXBtb2QgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGNv bGxhdGlvbiBvZiByZXN1bHQsIG9yIEludmFsaWRPaWQgaWYgbm9uZSAqLwogCU9pZAkJCXJlZmNv bGxpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0JLyogZXhwcmVzc2lvbnMg dGhhdCBldmFsdWF0ZSB0byB1cHBlciBjb250YWluZXIgaW5kZXhlcyAqLworCisJLyoKKwkgKiBl eHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIHVwcGVyIGNvbnRhaW5lciBpbmRleGVzIG9yIGV4 cHJlc3Npb25zCisJICogdGhhdCBhcmUgY29sbGVjdGVkIGJ1dCBub3QgZXZhbHVhdGVkIHdoZW4g cmVmanNvbmJwYXRoIGlzIHNldC4KKwkgKi8KIAlMaXN0CSAgICpyZWZ1cHBlcmluZGV4cHI7CiAK IAkvKgotCSAqIGV4cHJlc3Npb25zIHRoYXQgZXZhbHVhdGUgdG8gbG93ZXIgY29udGFpbmVyIGlu ZGV4ZXMsIG9yIE5JTCBmb3Igc2luZ2xlCi0JICogY29udGFpbmVyIGVsZW1lbnQuCisJICogZXhw cmVzc2lvbnMgdGhhdCBldmFsdWF0ZSB0byBsb3dlciBjb250YWluZXIgaW5kZXhlcywgb3IgTklM IGZvciBhCisJICogc2luZ2xlIGNvbnRhaW5lciBlbGVtZW50LCBvciBleHByZXNzaW9ucyB0aGF0 IGFyZSBjb2xsZWN0ZWQgYnV0IG5vdAorCSAqIGV2YWx1YXRlZCB3aGVuIHJlZmpzb25icGF0aCBp cyBzZXQuCiAJICovCiAJTGlzdAkgICAqcmVmbG93ZXJpbmRleHByOwogCS8qIHRoZSBleHByZXNz aW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgY29udGFpbmVyIHZhbHVlICovCiAJRXhwcgkgICAqcmVm ZXhwcjsKIAkvKiBleHByZXNzaW9uIGZvciB0aGUgc291cmNlIHZhbHVlLCBvciBOVUxMIGlmIGZl dGNoICovCiAJRXhwcgkgICAqcmVmYXNzZ25leHByOworCisJLyoKKwkgKiBjb250YWluZXItc3Bl Y2lmaWMgZXh0cmEgaW5mb3JtYXRpb24sIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkganNvbmIuCisJ ICogc3RvcmVzIGEgSnNvblBhdGggZXhwcmVzc2lvbiB3aGVuIGpzb25iIGRvdCBub3RhdGlvbiBp cyB1c2VkLiBOVUxMIGZvcgorCSAqIHNpbXBsZSBzdWJzY3JpcHRpbmcuCisJICovCisJTm9kZQkg ICAqcmVmanNvbmJwYXRoOwogfSBTdWJzY3JpcHRpbmdSZWY7CiAKIC8qCkBAIC0yMzcxLDQgKzIz ODMsNDAgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25mbGljdEV4cHIKIAlMaXN0CSAgICpleGNsUmVs VGxpc3Q7CS8qIHRsaXN0IG9mIHRoZSBFWENMVURFRCBwc2V1ZG8gcmVsYXRpb24gKi8KIH0gT25D b25mbGljdEV4cHI7CiAKKy8qCisgKiBGaWVsZEFjY2Vzc29yRXhwciAtIHJlcHJlc2VudHMgYSBz aW5nbGUgb2JqZWN0IG1lbWJlciBhY2Nlc3MgdXNpbmcgZG90LW5vdGF0aW9uCisgKgkJaW4gSlNP TiBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCAoZS5nLiwganNvbmJfY29sLmEpLgorICoKKyAq IFRoZXNlIG5vZGVzIGFwcGVhciBhcyBsaXN0IGVsZW1lbnRzIGluIFN1YnNjcmlwdGluZ1JlZi5y ZWZ1cHBlcmluZGV4cHIgdG8KKyAqIGluZGljYXRlIEpTT04gb2JqZWN0IGtleSBhY2Nlc3MuIFRo ZXkgYXJlIG5vdCBldmFsdWFibGUgZXhwcmVzc2lvbnMgYnkKKyAqIHRoZW1zZWx2ZXMgYnV0IHNl cnZlIGFzIHBsYWNlaG9sZGVycyB0byBwcmVzZXJ2ZSBzb3VyY2UtbGV2ZWwgc3ludGF4IGZvcgor ICogcnVsZSByZXdyaXRpbmcgYW5kIGRlcGFyc2luZyAoZS5nLiwgaW4gRVhQTEFJTiBhbmQgdmll dyBkZWZpbml0aW9ucykuCisgKiBFeGVjdXRpb24gaXMgaGFuZGxlZCBieSB0aGUgZW5jbG9zaW5n IFN1YnNjcmlwdGluZ1JlZi4KKyAqCisgKiBJZiBkb3Qtbm90YXRpb24gaXMgdXNlZCBpbiBhIFN1 YnNjcmlwdGluZ1JlZiwgdGhlIEpTT04gcGF0aCBpcyByZXByZXNlbnRlZAorICogYXMgYSBmbGF0 IGxpc3Qgb2YgRmllbGRBY2Nlc3NvckV4cHIgbm9kZXMgKGZvciBvYmplY3QgZmllbGQgYWNjZXNz KSwgQ29uc3QKKyAqIG5vZGVzIChmb3IgYXJyYXkgaW5kZXhlcyksIGFuZCBOVUxMcyAoZm9yIG9t aXR0ZWQgc2xpY2UgYm91bmRzKSwgcmF0aGVyIHRoYW4KKyAqIHRocm91Z2ggbmVzdGVkIGV4cHJl c3Npb24gdHJlZXMuCisgKgorICogTm90ZTogVGhlIGZsYXQgcmVwcmVzZW50YXRpb24gYXZvaWRz IG5lc3RlZCBGaWVsZEFjY2Vzc29yRXhwciBjaGFpbnMsCisgKiBzaW1wbGlmeWluZyBldmFsdWF0 aW9uIGFuZCBlbmFibGluZyBzdGFuZGFyZC1jb21wbGlhbnQgYmVoYXZpb3Igc3VjaCBhcworICog Y29uZGl0aW9uYWwgYXJyYXkgd3JhcHBpbmcuIFRoaXMgYXZvaWRzIHRoZSBuZWVkIGZvciBwb3Np dGlvbi1hd2FyZQorICogd3JhcHBpbmcvdW53cmFwcGluZyBsb2dpYyBkdXJpbmcgZXhlY3V0aW9u LgorICoKKyAqIEZvciBleGFtcGxlLCBpbiB0aGUgZXhwcmVzc2lvbjoKKyAqCQkoJ3siYSI6IFt7 ImIiOiAxfV19Jzo6anNvbmIpLmFbMF0uYgorICogdGhlIFN1YnNjcmlwdGluZ1JlZiB3aWxsIGNv bnRhaW46CisgKgkJLSByZWZleHByOiB0aGUgYmFzZSBleHByZXNzaW9uICh0aGUganNvbmIgdmFs dWUpCisgKgkJLSByZWZ1cHBlcmluZGV4cHI6IFtGaWVsZEFjY2Vzc29yRXhwcigiYSIpLCBDb25z dCgwKSwKKyAqCQkJRmllbGRBY2Nlc3NvckV4cHIoImIiKV0KKyAqCQktIHJlZmxvd2VyaW5kZXhw cjogW05VTEwsIE5VTEwsIE5VTExdIChzbGljZSBsb3dlciBib3VuZHMgbm90IHVzZWQgaGVyZSkK KyAqLwordHlwZWRlZiBzdHJ1Y3QgRmllbGRBY2Nlc3NvckV4cHIKK3sKKwlOb2RlVGFnCQl0eXBl OworCWNoYXIJICAgKmZpZWxkbmFtZTsJCS8qIG5hbWUgb2YgdGhlIEpTT05CIG9iamVjdCBmaWVs ZCBhY2Nlc3NlZCB2aWEKKwkJCQkJCQkJICogZG90IG5vdGF0aW9uICovCisJT2lkCQkJZmFlY29s bGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKK30JCQlGaWVsZEFjY2Vzc29y RXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYyBiL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCmluZGV4IDM5MjIxZjllYTVkLi5l NmE3ZWNlNmRhYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3Nx bC1zcWxqc29uLmMKQEAgLTQxNywxMiArNDE3LDEyMiBAQCBpZiAoc3FsY2Euc3FsY29kZSA8IDAp IHNxbHByaW50KCk7fQogCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoaXNfanNvbik7IGkr KykKIAkJICBwcmludGYoIkZvdW5kIGlzX2pzb25bJWRdOiAlc1xuIiwgaSwgaXNfanNvbltpXSA/ ICJ0cnVlIiA6ICJmYWxzZSIpOwogCi0gIHsgRUNQR2Rpc2Nvbm5lY3QoX19MSU5FX18sICJDVVJS RU5UIik7CisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWws ICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn19JyA6OiBqc29u YiApIC4gXCJhXCIgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEw MjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5V TEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNsaW5lIDExOCAic3FsanNvbi5wZ2MiCiAK IGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAxMTggInNxbGpzb24u cGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsgRUNQR2RvKF9f TElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAne1wi YVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpzb25iIC4gXCJhXCIgKSIsIEVDUEd0X0VP SVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9m KGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9F T1JUKTsKKyNsaW5lIDEyMSAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkg c3FscHJpbnQoKTt9CisjbGluZSAxMjEgInNxbGpzb24ucGdjIgorCisJLy8gZXJyb3IKKworCXsg RUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpz b24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIgKSAuIGEgKSIs IEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAy NCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBM LCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyNCAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxj b2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjQgInNxbGpzb24ucGdjIgorCisJcHJpbnRm KCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBO VUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjog MSwgXCJjXCI6IDJ9fScgOjoganNvbmIgKSAuIGEgLiBiICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BH dF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJ RUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGlu ZSAxMjcgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7 fQorI2xpbmUgMTI3ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwg anNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1h bCwgInNlbGVjdCBqc29uICggY29hbGVzY2UgKCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEs IFwiY1wiOiAyfX0nIDo6IGpzb25iICkgLiBjICkgLCAnbnVsbCcgKSApIiwgRUNQR3RfRU9JVCwg CisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hh ciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQp OworI2xpbmUgMTMwICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxw cmludCgpO30KKyNsaW5lIDEzMCAic3FsanNvbi5wZ2MiCisKKwlwcmludGYoIkZvdW5kIGpzb249 JXNcbiIsIGpzb24pOworCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdz dF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0s IFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25i ICkgLiBiIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykx MDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBO VUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzMgInNxbGpzb24ucGdjIgor CitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTMzICJzcWxqc29u LnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhf X0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAn e1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6 IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgLiB4ICkiLCBFQ1BHdF9FT0lULCAK KwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFy KSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7 CisjbGluZSAxMzYgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHBy aW50KCk7fQorI2xpbmUgMTM2ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0l c1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0 X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwg XCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIg KSBbICdiJyBdIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9u ZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9S LCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzkgInNxbGpzb24ucGdj IgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTM5ICJzcWxq c29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdk byhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICgg KCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4 XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0g KSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwo MTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEws IDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDE0MiAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5z cWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxNDIgInNxbGpzb24ucGdjIgorCisJLy8g ZXJyb3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFs LCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9LCBcImJcIjog W3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBqc29uYiApIC4gKiAp IiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwobG9uZykxLCgx MDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBMLCAwTCwg MEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTQ1ICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNx bGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0NSAic3FsanNvbi5wZ2MiCisKKwkvLyBl cnJvcgorCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWws ICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBb e1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgWyAnYicg XSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0 LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxM ICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxNDggInNxbGpzb24ucGdjIgorCitp ZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTQ4ICJzcWxqc29uLnBn YyIKKworCS8vIGVycm9yCisKKyAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQi KTsKKyNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CisjbGluZSAxNTEgInNxbGpzb24ucGdjIgorCiAKICAgcmV0dXJuIDA7CiB9CmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3RkZXJyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0 ZGVycgppbmRleCBlNTVhOTVkZDcxMS4uMTlmOGM1OGFmMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIKKysrIGIvc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgpAQCAtMjY4LDUg KzI2OCwxMDUgQEAgU1FMIGVycm9yOiBjYW5ub3QgdXNlIHR5cGUganNvbmIgaW4gUkVUVVJOSU5H IGNsYXVzZSBvZiBKU09OX1NFUklBTElaRSgpIG9uIGxpbmUKIFtOT19QSURdOiBzcWxjYTogY29k ZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEwMjog UkVTVUxUOiBmIG9mZnNldDogLTE7IGFycmF5OiBubwogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMTg6IHF1ZXJ5 OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiApIC4g ImEiICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9u CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdf ZXhlY3V0ZSBvbiBsaW5lIDExODogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAx MTg6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUg MTE4OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0 ZSBvbiBsaW5lIDEyMTogcXVlcnk6IHNlbGVjdCBqc29uICggJ3siYSI6IHsiYiI6IDEsICJjIjog Mn19JyA6OiBqc29uYiAuICJhIiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24g ZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMjE6IHVzaW5nIFBRZXhlYworW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BR cmVzdWx0IG9uIGxpbmUgMTIxOiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIHNjaGVtYSAianNvbmIi IGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IHNlbGVjdCBqc29uICggJ3siYSI6IHsiYiI6IDEsICJj IjogMn19JyA6OiBqc29uYiAuICJhIiApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAw MDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUgM0YwMDAgKHNxbGNvZGUgLTQwMCk6IHNj aGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUgMTIxCitbTk9fUElEXTogc3FsY2E6 IGNvZGU6IC00MDAsIHN0YXRlOiAzRjAwMAorU1FMIGVycm9yOiBzY2hlbWEgImpzb25iIiBkb2Vz IG5vdCBleGlzdCBvbiBsaW5lIDEyMQorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEy NDogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfX0nIDo6IGpz b25iICkgLiBhICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdy ZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNDogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24g bGluZSAxMjQ6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJRF06 IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9u IGxpbmUgMTI0OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5v CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdf ZXhlY3V0ZSBvbiBsaW5lIDEyNzogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjog MSwgImMiOiAyfX0nIDo6IGpzb25iICkgLiBhIC4gYiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9u IGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBz dGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMjc6IHVzaW5nIFBR ZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBl Y3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTI3OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdp dGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9f UElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEyNzogUkVTVUxUOiAxIG9mZnNldDogLTE7IGFy cmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzA6IHF1ZXJ5OiBzZWxlY3QganNvbiAoIGNvYWxlc2Nl ICgganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiApIC4gYyApICwg J251bGwnICkgKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jl c3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTog ZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMwOiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBs aW5lIDEzMDogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRzCitbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZ2V0X2RhdGEgb24g bGluZSAxMzA6IFJFU1VMVDogbnVsbCBvZmZzZXQ6IC0xOyBhcnJheTogbm8KK1tOT19QSURdOiBz cWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxp bmUgMTMzOiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAi YiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAw IF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24K K1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19l eGVjdXRlIG9uIGxpbmUgMTMzOiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTog MCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDEz MzogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAx MzM6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5l IDEzNjogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIi OiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIC4geCAp OyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05P X1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1 dGUgb24gbGluZSAxMzY6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBz dGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTM2OiBj b3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29k ZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEzNjog UkVTVUxUOiBbMSwgWzEyLCB7InkiOiAxfV1dIG9mZnNldDogLTE7IGFycmF5OiBubworW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUg b24gbGluZSAxMzk6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjog Mn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIFsg J2InIF0gWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3Jl Z3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTM5OiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxj YTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBv biBsaW5lIDEzOTogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRzCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZ2V0X2RhdGEg b24gbGluZSAxMzk6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0 ZSBvbiBsaW5lIDE0MjogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMi OiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkg LiBiIFsgMSBdIC4geCBbIDAgOiBdICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlv biBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAw MAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogdXNpbmcgUFFleGVjCitbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfY2hlY2tf UFFyZXN1bHQgb24gbGluZSAxNDI6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2Ny aXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitMSU5FIDE6IC4uLiwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tO T19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogcmFpc2luZyBz cWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1 cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0 YXRlOiA0MjgwNAorU1FMIGVycm9yOiBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBz bGljZXMgb24gbGluZSAxNDIKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDU6IHF1 ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6 IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gKiApOyB3aXRoIDAgcGFy YW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAx NDU6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTQ1OiBiYWQgcmVzcG9uc2Ug LSBFUlJPUjogIHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUKK0xJ TkUgMTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7Ingi OiAxfSwgeyJ4Li4uCisgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUgMEEwMDAg KHNxbGNvZGUgLTQwMCk6IHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3VwcG9ydGVkIGhl cmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTQwMCwgc3RhdGU6IDBBMDAw CitTUUwgZXJyb3I6IHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUg b24gbGluZSAxNDUKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDg6IHF1ZXJ5OiBz ZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7 IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0gWyAwIDogXSApOyB3aXRo IDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06 IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24g bGluZSAxNDg6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTog MDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTQ4OiBiYWQgcmVz cG9uc2UgLSBFUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwor TElORSAxOiAuLi54IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgWyAn YicgXSBbIDAgOiBdICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRl OiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUgNDI4MDQgKHNxbGNvZGUgLTQwMCk6 IGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyBvbiBsaW5lIDE0OAorW05P X1BJRF06IHNxbGNhOiBjb2RlOiAtNDAwLCBzdGF0ZTogNDI4MDQKK1NRTCBlcnJvcjoganNvbmIg c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQ4CiBbTk9fUElEXTog ZWNwZ19maW5pc2g6IGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbiBjbG9zZWQKIFtOT19QSURd OiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0IGIvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91dAppbmRleCA4M2Y4ZGYxM2U1YS4u NDQyZDM2OTMxZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5zdGRvdXQKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVj dGVkL3NxbC1zcWxqc29uLnN0ZG91dApAQCAtMjgsMyArMjgsMTAgQEAgRm91bmQgaXNfanNvbls0 XTogZmFsc2UKIEZvdW5kIGlzX2pzb25bNV06IGZhbHNlCiBGb3VuZCBpc19qc29uWzZdOiB0cnVl CiBGb3VuZCBpc19qc29uWzddOiBmYWxzZQorRm91bmQganNvbj17ImIiOiAxLCAiYyI6IDJ9CitG b3VuZCBqc29uPXsiYiI6IDEsICJjIjogMn0KK0ZvdW5kIGpzb249MQorRm91bmQganNvbj1udWxs CitGb3VuZCBqc29uPXsieCI6IDF9CitGb3VuZCBqc29uPVsxLCBbMTIsIHsieSI6IDF9XV0KK0Zv dW5kIGpzb249eyJ4IjogMX0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9z cWwvc3FsanNvbi5wZ2MgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdj CmluZGV4IGRkY2JjYzNiM2NiLi41N2E5YmZmNDI0ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rl c3Qvc3FsL3NxbGpzb24ucGdjCkBAIC0xMTUsNiArMTE1LDM5IEBAIEVYRUMgU1FMIEVORCBERUNM QVJFIFNFQ1RJT047CiAJICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZihpc19qc29uKTsgaSsr KQogCQkgIHByaW50ZigiRm91bmQgaXNfanNvblslZF06ICVzXG4iLCBpLCBpc19qc29uW2ldID8g InRydWUiIDogImZhbHNlIik7CiAKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6 IDEsICJjIjogMn19Jzo6anNvbmIpLiJhIikgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpz b249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oJ3siYSI6IHsiYiI6IDEs ICJjIjogMn19Jzo6anNvbmIuImEiKSBJTlRPIDpqc29uOworCS8vIGVycm9yCisKKwlFWEVDIFNR TCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIpLmEpIElOVE8g Ompzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNF TEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfX0nOjpqc29uYikuYS5iKSBJTlRPIDpq c29uOworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwlFWEVDIFNRTCBTRUxF Q1QgSlNPTihDT0FMRVNDRShKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfX0nOjpqc29uYiku YyksICdudWxsJykpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29u KTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIi OiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuYlswXSkgSU5UTyA6 anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VM RUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4Ijog WzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS5iLngpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3Vu ZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJi IjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpq c29uYilbJ2InXVswXSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpz b24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAi YiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS5iWzFdLnhbMDpd KSBJTlRPIDpqc29uOworCS8vIGVycm9yCisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6 IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19 Jzo6anNvbmIpLiopIElOVE8gOmpzb247CisJLy8gZXJyb3IKKworCUVYRUMgU1FMIFNFTEVDVCBK U09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwg eyJ5IjoxfV19XX0nOjpqc29uYilbJ2InXVswOl0pIElOVE8gOmpzb247CisJLy8gZXJyb3IKKwog ICBFWEVDIFNRTCBESVNDT05ORUNUOwogCiAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iLm91dAppbmRleCA1YTFlYjE4YWJhMi4uYjA1NGI4YjVkZDAgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmIub3V0CkBAIC00OTg5LDYgKzQ5ODksMTIgQEAgc2VsZWN0ICgnMTIzJzo6 anNvbmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5hOworIGEg CistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwogIGpzb25iIAog LS0tLS0tLQpAQCAtNTAwMSwxMiArNTAwNywyNCBAQCBzZWxlY3QgKCcxMjMnOjpqc29uYilbTlVM TF07CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5OVUxMOworIG51bGwgCist LS0tLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnXTsKICBq c29uYiAKIC0tLS0tLS0KICAxCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIp LmE7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilb MF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDE5LDYgKzUwMzcsMTIgQEAgc2VsZWN0ICgneyJh IjogMX0nOjpqc29uYilbJ25vdF9leGlzdCddOwogIAogKDEgcm93KQogCitzZWxlY3QgKCd7ImEi OiAxfSc6Ompzb25iKS4ibm90X2V4aXN0IjsKKyBub3RfZXhpc3QgCistLS0tLS0tLS0tLQorIAor KDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVtOVUxMXTsKICBqc29uYiAKIC0t LS0tLS0KQEAgLTUwMzEsNiArNTA1NSwxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompz b25iKVsnYSddOwogIAogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25i KS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpq c29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDQzLDYgKzUwNzMsMTIgQEAgc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJzEnXTsKICAiMiIKICgxIHJvdykKIAorc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOworIDEgCistLS0KKyAKKygxIHJvdykKKwog c2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsKIEVSUk9SOiAgc3Vic2NyaXB0 IHR5cGUgbnVtZXJpYyBpcyBub3Qgc3VwcG9ydGVkCiBMSU5FIDE6IHNlbGVjdCAoJ1sxLCAiMiIs IG51bGxdJzo6anNvbmIpWzEuMF07CkBAIC01MDcyLDYgKzUxMDgsMTIgQEAgc2VsZWN0ICgnWzEs ICIyIiwgbnVsbF0nOjpqc29uYilbMV1bJ2EnXTsKICAKICgxIHJvdykKIAorc2VsZWN0ICgnWzEs ICIyIiwgbnVsbF0nOjpqc29uYilbMV0uYTsKKyBhIAorLS0tCisgCisoMSByb3cpCisKIHNlbGVj dCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBdOwogIGpzb25iIAogLS0tLS0tLQpAQCAt NTA4NCw1NiArNTEyNiwxMjcgQEAgc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEs IDIsIDNdfSc6Ompzb25iKVsnYiddOwogICJjIgogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiAx LCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmI7CisgIGIgIAorLS0tLS0KKyAi YyIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNd fSc6Ompzb25iKVsnZCddOwogICAganNvbmIgICAKIC0tLS0tLS0tLS0tCiAgWzEsIDIsIDNdCiAo MSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpq c29uYikuZDsKKyAgICAgZCAgICAgCistLS0tLS0tLS0tLQorIFsxLCAyLCAzXQorKDEgcm93KQor CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydk J11bMV07CiAganNvbmIgCiAtLS0tLS0tCiAgMgogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiAx LCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmRbMV07CisgZCAKKy0tLQorIDIK KygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6 Ompzb25iKVsnZCddWydhJ107CiAganNvbmIgCiAtLS0tLS0tCiAgCiAoMSByb3cpCiAKK3NlbGVj dCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsnYSddOwor IGQgCistLS0KKyAKKygxIHJvdykKKworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjog WzEsIDIsIDNdfSc6Ompzb25iKS5kLmE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg KCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiB7ImEiOiBbMSwgMiwgM119fSc6Ompzb25iKS5kWydh J11bMF07CisgZCAKKy0tLQorIDEKKygxIHJvdykKKworc2VsZWN0ICgneyJhIjogMSwgImIiOiAi YyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYikuZC5hWzBdOworIGEgCistLS0KKyAx CisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAi YmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEnXTsKICAgICAganNvbmIgICAgIAog LS0tLS0tLS0tLS0tLS0tCiAgeyJhMiI6ICJhYWEifQogKDEgcm93KQogCitzZWxlY3QgKCd7ImEi OiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIp LmEuYTE7CisgICAgICBhMSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiYTIiOiAiYWFhIn0K KygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJi YmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddWydhMiddOwogIGpzb25iIAogLS0t LS0tLQogICJhYWEiCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFh YSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMjsKKyAgYTIgICAK Ky0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6 ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ11bJ2Ey J11bJ2EzJ107CiAganNvbmIgCiAtLS0tLS0tCiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6 IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYiku YS5hMS5hMi5hMzsKKyBhMyAKKy0tLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogWyJh MSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKVsn YSddWzFdWydiMSddOwogICAgICAgICAganNvbmIgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgWyJhYWEiLCAiYmJiIiwgImNjYyJdCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6 IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29u YikuYVsxXS5iMTsKKyAgICAgICAgICBiMSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFsiYWFhIiwgImJiYiIsICJjY2MiXQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiBb ImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIp WydhJ11bMV1bJ2IxJ11bMl07CiAganNvbmIgCiAtLS0tLS0tCiAgImNjYyIKICgxIHJvdykKIAot LS0gc2xpY2VzIGFyZSBub3Qgc3VwcG9ydGVkCi1zZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsn YSc6J2InXTsKK3NlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNj YyJdfV0sICJiIjogImJiIn0nOjpqc29uYikuYVsxXS5iMVsyXTsKKyAgYjEgICAKKy0tLS0tLS0K KyAiY2NjIgorKDEgcm93KQorCitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSc6J2InXTsg LS0gZmFpbHMKIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2Vz CiBMSU5FIDE6IHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydhJzonYiddOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpAQCAtNTgzMSwzICs1OTQ0LDI4NyBAQCBz ZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDUnOjpqc29uYjo6aW50ODsKICAxMjM0NQogKDEgcm93KQogCistLSBkb3Qgbm90YXRpb24KK0NS RUFURSBUQUJMRSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiBBUworU0VMRUNUICd7ImEiOiBbMSwg MiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoi OiAienp6In19XSwgImIiOiBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6 ICJaWloifX1dfSc6Ompzb25iIGpiOworU0VMRUNUIChqYikuYSBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7 ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6 enoifX1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLiJhIiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOyAtLSBkb3VibGUgcXVvdGUgc2hvdWxkIHdvcmsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwg IngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4n YScgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gc2luZ2xlIHF1b3RlIHNob3VsZCBu b3Qgd29yaworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiJ2EnIgorTElORSAxOiBT RUxFQ1QgKGpiKS4nYScgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAg ICAgICAgICAgXgorU0VMRUNUIChqYikuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor ICAgICAgICAgICAgICAgICAgICAgICAgIGIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMywgNCwg eyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dCisoMSByb3cpCisKK1NF TEVDVCAoamIpLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyBjIAorLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCAoamIpLmEuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor ICAgICBiICAgICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAiZCJdCisoMSByb3cpCisKK1NFTEVD VCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICBiICAKKy0tLS0t CisgImMiCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEueC55IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CisgICB5ICAgCistLS0tLS0tCisgInl5eSIKKygxIHJvdykKKworU0VMRUNUIChq YikuYi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgIHogICAKKy0tLS0tLS0K KyAiWlpaIgorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworIGMgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUICgoamIpLmIpWzpdLngg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscworRVJST1I6ICBqc29uYiBz dWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBmYWlscworRVJST1I6ICB0eXBlIGpzb25iIGlzIG5v dCBjb21wb3NpdGUKKy0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7 CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVi bGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQKKyAgIE91dHB1dDogKGpiKS5hCisoMiByb3dz KQorCitTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIi OiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCisoMSByb3cp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6 IChqYikuYVsxXQorKDIgcm93cykKKworU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworIGEgCistLS0KKyAyCisoMSByb3cpCisKKy0tIHZpZXdzIHNob3VsZCB3 b3JrCitDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpi KS5hWzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamIpLmFbM10ueC55IEFTIHkKKyAgIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKy0tIG1peGVkIHN5bnRheAorRFJPUCBWSUVXIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbgorICAgT3V0cHV0OiAoamJbJ2EnOjp0ZXh0XSkuYgorKDIgcm93cykKKworU0VM RUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMg YW4gYXJyYXkgZHVlIHRvIGxheCBtb2RlCisgICAgIGIgICAgICAKKy0tLS0tLS0tLS0tLQorIFsi YyIsICJkIl0KKygxIHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0Ug VklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKGpiWydh Jzo6dGV4dF0pLmIgQVMgYgorICAgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNU ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKyAgICAgYiAgICAgIAorLS0tLS0t LS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9u b3RhdGlvbgorICAgT3V0cHV0OiAoKGpiKS5hKVsnYic6OnRleHRdCisoMiByb3dzKQorCitTRUxF Q1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBO VUxMIGR1ZSB0byBzdHJpY3QgbW9kZQorIGEgCistLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKS5hWydi J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90 YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYSlbJ2InOjp0ZXh0XSBBUyBhCisgICBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxOworIGEgCistLS0KKyAKKygxIHJvdykKKworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pz b25iX2RvdF9ub3RhdGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IChqYikuYi54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbgorICAgT3V0cHV0OiAoKGpiKS5iLngpWyd6Jzo6dGV4dF0KKygyIHJvd3MpCisK K1NFTEVDVCAoamIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHdh cm5pbmdzCisgICB4ICAgCistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworQ1JFQVRFIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKS5iLnhbJ3on XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MSBBUworIFNFTEVDVCAoKGpiKS5iLngpWyd6Jzo6dGV4dF0gQVMgeAorICAgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MTsKKyAgIHggICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitEUk9QIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVi bGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6ICgoamJbJ2InOjp0ZXh0XSku eClbJ3onOjp0ZXh0XQorKDIgcm93cykKKworU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgIC0tIHdhcm5pbmdzCisgICB4ICAgCistLS0tLS0tCisg IlpaWiIKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFD RSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoKGpi WydiJzo6dGV4dF0pLngpWyd6Jzo6dGV4dF0gQVMgeAorICAgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKyAgIHgg ICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90 X25vdGF0aW9uCisgICBPdXRwdXQ6ICgoKGpiKS5iKVsneCc6OnRleHRdKS56CisoMiByb3dzKQor CitTRUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBy ZXR1cm5zIE5VTEwKKyB6IAorLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBWSUVXIHB1YmxpYy50 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYlsneCddLnogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQor Q1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEg QVMKKyBTRUxFQ1QgKCgoamIpLmIpWyd4Jzo6dGV4dF0pLnogQVMgegorICAgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MTsKKyB6IAorLS0tCisgCisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIp LmJbJ3gnXVsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb24KKyAgIE91dHB1dDogKChqYikuYilbJ3gnOjp0ZXh0XVsneic6OnRleHRdCisoMiBy b3dzKQorCitTRUxFQ1QgKGpiKS5iWyd4J11bJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOyAtLSByZXR1cm5zIE5VTEwKKyBiIAorLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBWSUVX IHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYlsneCdd Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYilbJ3gnOjp0ZXh0XVsneic6OnRleHRdIEFT IGIKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KK1NFTEVDVCAqIGZyb20gdGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjE7CisgYiAKKy0tLQorIAorKDEgcm93KQorCitEUk9QIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVi bGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYlsnYic6OnRleHRdWyd4 Jzo6dGV4dF0pLnoKKygyIHJvd3MpCisKK1NFTEVDVCAoamIpWydiJ11bJ3gnXS56IEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTAorIHogCistLS0KKyAKKygxIHJv dykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitT RUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2 IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1Ymxp Yy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamJbJ2InOjp0ZXh0XVsn eCc6OnRleHRdKS56IEFTIHoKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KK1NFTEVD VCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisgeiAKKy0tLQorIAorKDEgcm93 KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworLS0gY2xl YW4gdXAKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u Yi5zcWwKaW5kZXggNTdjMTFhY2RkZmUuLjRkYjE2YzQ3NTYzIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIu c3FsCkBAIC0xMzA0LDMzICsxMzA0LDUxIEBAIHNlbGVjdCBqc29uYl9pbnNlcnQoJ3siYSI6IHsi YiI6ICJ2YWx1ZSJ9fScsICd7YSwgYn0nLCAnIm5ld192YWx1ZSInLCB0cnVlKTsKIAogLS0ganNv bmIgc3Vic2NyaXB0CiBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2EnXTsKK3NlbGVjdCAoJzEyMyc6 Ompzb25iKS5hOwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwogc2VsZWN0ICgnMTIzJzo6anNv bmIpW05VTExdOworc2VsZWN0ICgnMTIzJzo6anNvbmIpLk5VTEw7CiBzZWxlY3QgKCd7ImEiOiAx fSc6Ompzb25iKVsnYSddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuYTsKIHNlbGVjdCAo J3siYSI6IDF9Jzo6anNvbmIpWzBdOwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ25vdF9l eGlzdCddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuIm5vdF9leGlzdCI7CiBzZWxlY3Qg KCd7ImEiOiAxfSc6Ompzb25iKVtOVUxMXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNv bmIpWydhJ107CitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKS5hOwogc2VsZWN0ICgn WzEsICIyIiwgbnVsbF0nOjpqc29uYilbMF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompz b25iKVsnMSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOwogc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxd Jzo6anNvbmIpWzJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbM107CiBzZWxl Y3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVstMl07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxs XSc6Ompzb25iKVsxXVsnYSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV0u YTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBdOwogc2VsZWN0ICgneyJh IjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnYiddOworc2VsZWN0ICgn eyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5iOwogc2VsZWN0ICgn eyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddOworc2VsZWN0 ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kOwogc2VsZWN0 ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWzFdOwor c2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kWzFd Owogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsn ZCddWydhJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6 anNvbmIpLmRbJ2EnXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAz XX0nOjpqc29uYikuZC5hOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogeyJhIjog WzEsIDIsIDNdfX0nOjpqc29uYikuZFsnYSddWzBdOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAi YyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYikuZC5hWzBdOwogc2VsZWN0ICgneyJh IjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25i KVsnYSddWydhMSddOworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6 ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExOwogc2VsZWN0ICgneyJhIjogeyJhMSI6 IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydh MSddWydhMiddOworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJi YmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyOwogc2VsZWN0ICgneyJhIjogeyJhMSI6 IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydh MSddWydhMiddWydhMyddOworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAi YiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyLmEzOwogc2VsZWN0ICgneyJh IjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompz b25iKVsnYSddWzFdWydiMSddOworc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIs ICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxOwogc2VsZWN0ICgn eyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6 Ompzb25iKVsnYSddWzFdWydiMSddWzJdOworc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBb ImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxWzJdOwog Ci0tLSBzbGljZXMgYXJlIG5vdCBzdXBwb3J0ZWQKLXNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIp WydhJzonYiddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107IC0tIGZhaWxz CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOjJdOwogc2VsZWN0ICgnWzEsICIy IiwgbnVsbF0nOjpqc29uYilbOjJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilb MTpdOwpAQCAtMTU5MCwzICsxNjA4LDkyIEBAIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpmbG9hdDg7CiBzZWxlY3Qg JzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpq c29uYjo6aW50MjsKIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ0Owogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDg7CisKKy0t IGRvdCBub3RhdGlvbgorQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIEFTCitT RUxFQ1QgJ3siYSI6IFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6 IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCAiYiI6IFszLCA0LCB7ImIiOiAiZyIsICJ4Ijog eyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV19Jzo6anNvbmIgamI7CisKK1NFTEVDVCAoamIpLmEg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiJhIiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOyAtLSBkb3VibGUgcXVvdGUgc2hvdWxkIHdvcmsKK1NFTEVDVCAo amIpLidhJyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBzaW5nbGUgcXVvdGUgc2hv dWxkIG5vdCB3b3JrCitTRUxFQ1QgKGpiKS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CitTRUxFQ1QgKGpiKS5jIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpi KS5hLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbMl0uYiBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0 OyAtLSBmYWlscworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 IC0tIGZhaWxzCisKKy0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7 CitTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CisKKy0tIHZpZXdzIHNob3VsZCB3b3JrCitDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpiKS5hWzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCisKKy0tIG1peGVkIHN5bnRh eAorRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpWydhJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworU0VMRUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 IC0tIHJldHVybnMgYW4gYXJyYXkgZHVlIHRvIGxheCBtb2RlCitDUkVBVEUgVklFVyBwdWJsaWMu dGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpWydhJ10uYiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitT RUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJPUCBWSUVXIHB1Ymxp Yy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NF TEVDVCAoamIpLmFbJ2InXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5z IE5VTEwgZHVlIHRvIHN0cmljdCBtb2RlCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmFbJ2InXSBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9t IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpiKS5iLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYiku Yi54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gd2FybmluZ3MKK0NSRUFU RSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYiku Yi54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsK K0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247ICAtLSB3YXJuaW5ncworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitTRUxF Q1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJPUCBWSUVXIHB1YmxpYy50 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJu cyBOVUxMCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMK K1NFTEVDVCAoamIpLmJbJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3Yg dGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx OworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmJbJ3gnXVsneidd IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5iWyd4J11bJ3onXSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwKK0NSRUFURSBWSUVX IHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYlsneCdd Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0RS T1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYilbJ2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpWydiJ11bJ3gnXS56IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTAorQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitTRUxF Q1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJPUCBWSUVXIHB1YmxpYy50 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworLS0gY2xlYW4gdXAKK0RST1AgVEFCTEUgdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGExM2U4 MTYyODkwLi5jYzY0NjQyZjM5OSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTgwNSw2 ICs4MDUsNyBAQCBGZHdSb3V0aW5lCiBGZXRjaERpcmVjdGlvbgogRmV0Y2hEaXJlY3Rpb25LZXl3 b3JkcwogRmV0Y2hTdG10CitGaWVsZEFjY2Vzc29yRXhwcgogRmllbGRTZWxlY3QKIEZpZWxkU3Rv cmUKIEZpbGUKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0007-Implement-jsonb-wildcard-member-accessor.patch" Content-Disposition: attachment; filename="v14-0007-Implement-jsonb-wildcard-member-accessor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgbf6 RnJvbSAxZjZmNmE0MzVjOWIzZGJkNDVhNjI4YmNjNDc5MWI3YmQ4M2FjODQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djE0IDcvN10gSW1wbGVtZW50IGpzb25iIHdpbGRjYXJkIG1lbWJlciBhY2Nlc3NvcgoKVGhpcyBj b21taXQgYWRkcyBzdXBwb3J0IGZvciB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzIGluIGpzb25iLCBh cwpzcGVjaWZpZWQgYnkgdGhlIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXggaW4gU1FM OjIwMjMuCgpDby1hdXRob3JlZC1ieTogTmlraXRhIEdsdWtob3YgPGdsdWtob3Yubi5hQGdtYWls LmNvbT4KQ28tYXV0aG9yZWQtYnk6IEFsZXhhbmRyYSBXYW5nIDxhbGV4YW5kcmEud2FuZy5vc3NA Z21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5u ZXQ+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWFyayBEaWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2VkYi5j b20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmlld2Vk LWJ5OiBOaWtpdGEgTWFsYWtob3YgPGh1a3V0b2NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGV0 ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClJldmlld2VkLWJ5OiBKZWx0ZSBG ZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5sPgpUZXN0ZWQtYnk6IEplbHRlIEZlbm5lbWEt TmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+Ci0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMgICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgMzQgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMgICAgICAgICAgICAgfCAgNjcgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJz dWJzLmMgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgg ICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29u LmMgICAgICAgICAgfCAgMTggKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3RkZXJyICAgICB8ICAyMyArLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRvdXQgICAgIHwgICAyICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5w Z2MgICAgICB8ICAgNSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgICAg ICAgICAgIHwgMjIyICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNv bmIuc3FsICAgICAgICAgICAgICAgIHwgIDQyICsrKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDQwNSBp bnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGQx YmQ1NzVkOWJkLi41ZjMwMzhhMWMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI5MSw2ICsy OTEsOSBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQkJICovCiAJCQl0eXBlID0gVEVY VE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRfU3RhcjoKKwkJCXR5cGUgPSBVTktOT1dOT0lEOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUg dHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGV4cHIpKTsKIAkJCXR5cGUgPSBJbnZhbGlkT2lkOwkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC0xMTU2LDYgKzExNTksOSBAQCBleHByU2V0Q29s bGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xsYXRpb24pCiAJCWNhc2UgVF9GaWVsZEFjY2Vzc29y RXhwcjoKIAkJCSgoRmllbGRBY2Nlc3NvckV4cHIgKikgZXhwciktPmZhZWNvbGxpZCA9IGNvbGxh dGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfU3RhcjoKKwkJCUFzc2VydCghT2lkSXNWYWxpZChj b2xsYXRpb24pKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJKChT dWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFr OwpAQCAtMjE0MCw2ICsyMTQ2LDcgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUg Km5vZGUsCiAJCWNhc2UgVF9DVEVTZWFyY2hDbGF1c2U6CiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRG dW5jOgogCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCWNhc2UgVF9TdGFyOgogCQkJLyog cHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNzaW9uIHN1Ym5vZGVzICovCiAJCQli cmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAgLTMwMjAsNiArMzAyNyw3IEBAIGV4 cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJY2FzZSBUX0NURVNlYXJj aENsYXVzZToKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCWNhc2UgVF9GaWVsZEFjY2Vz c29yRXhwcjoKKwkJY2FzZSBUX1N0YXI6CiAJCQlyZXR1cm4gY29weU9iamVjdChub2RlKTsKIAkJ Y2FzZSBUX1dpdGhDaGVja09wdGlvbjoKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGRiNDMwMzRiOWRi Li43MDNjNzQxNmIwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xODk3OSw2ICsxODk3OSw3IEBAIGNoZWNr X2Z1bmNfbmFtZShMaXN0ICpuYW1lcywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiBzdGF0aWMg TGlzdCAqCiBjaGVja19pbmRpcmVjdGlvbihMaXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpCiB7CisjaWYgMAogCUxpc3RDZWxsICAgKmw7CiAKIAlmb3JlYWNoKGwsIGlu ZGlyZWN0aW9uKQpAQCAtMTg5ODksNiArMTg5OTAsNyBAQCBjaGVja19pbmRpcmVjdGlvbihMaXN0 ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJcGFyc2VyX3l5ZXJy b3IoImltcHJvcGVyIHVzZSBvZiBcIipcIiIpOwogCQl9CiAJfQorI2VuZGlmCiAJcmV0dXJuIGlu ZGlyZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCBkYzFjN2U5Yjc1Yy4u N2Q1YzU2Y2FhNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNzQsNyArNzQsNiBAQCBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCSAgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJCQkJ CSAgaW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKTsKLXN0YXRpYyBOb2RlICp0cmFuc2Zv cm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CiBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2Fz dCAqdGMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDb2xsYXRlQ2xhdXNlICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2Jq ZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtMTU4LDcgKzE1Nyw3IEBAIHRy YW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCWJy ZWFrOwogCiAJCWNhc2UgVF9BX0luZGlyZWN0aW9uOgotCQkJcmVzdWx0ID0gdHJhbnNmb3JtSW5k aXJlY3Rpb24ocHN0YXRlLCAoQV9JbmRpcmVjdGlvbiAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRy YW5zZm9ybUluZGlyZWN0aW9uKHBzdGF0ZSwgKEFfSW5kaXJlY3Rpb24gKikgZXhwciwgTlVMTCk7 CiAJCQlicmVhazsKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CkBAIC00MzIsOCArNDMxLDkgQEAg dW5rbm93bl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpyZWxyZWYsIGNvbnN0 IGNoYXIgKmF0dG5hbWUsCiAJfQogfQogCi1zdGF0aWMgTm9kZSAqCi10cmFuc2Zvcm1JbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKK05vZGUgKgordHJh bnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQs CisJCQkJCSBib29sICp0cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKIHsKIAlOb2RlCSAgICpsYXN0 X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKIAlOb2RlCSAgICpyZXN1bHQgPSB0cmFuc2Zvcm1F eHByUmVjdXJzZShwc3RhdGUsIGluZC0+YXJnKTsKQEAgLTQ1NCwxMiArNDU0LDcgQEAgdHJhbnNm b3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJ CWlmIChJc0EobiwgQV9JbmRpY2VzKSkKIAkJCXN1YnNjcmlwdHMgPSBsYXBwZW5kKHN1YnNjcmlw dHMsIG4pOwogCQllbHNlIGlmIChJc0EobiwgQV9TdGFyKSkKLQkJewotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkg ZXJybXNnKCJyb3cgZXhwYW5zaW9uIHZpYSBcIipcIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUiKSwK LQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwotCQl9CisJCQlz dWJzY3JpcHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKIAkJZWxzZQogCQl7CiAJCQlBc3Nl cnQoSXNBKG4sIFN0cmluZykpOwpAQCAtNDkxLDcgKzQ4NiwyMSBAQCB0cmFuc2Zvcm1JbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAogCQkJbiA9IGxp bml0aWFsKHN1YnNjcmlwdHMpOwogCi0JCQlpZiAoIUlzQShuLCBTdHJpbmcpKQorCQkJaWYgKElz QShuLCBBX1N0YXIpKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MsIGlmIHRyYWlsaW5nIHN0YXIgZXhw YW5zaW9uIGlzIGFsbG93ZWQgKi8KKwkJCQlpZiAodHJhaWxpbmdfc3Rhcl9leHBhbnNpb24gJiYg bGlzdF9sZW5ndGgoc3Vic2NyaXB0cykgPT0gMSkKKwkJCQl7CisJCQkJCSp0cmFpbGluZ19zdGFy X2V4cGFuc2lvbiA9IHRydWU7CisJCQkJCXJldHVybiByZXN1bHQ7CisJCQkJfQorCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCSBlcnJtc2coInJvdyBleHBhbnNpb24gdmlhIFwiKlwiIGlzIG5vdCBzdXBwb3J0 ZWQgaGVyZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkp OworCQkJfQorCQkJZWxzZSBpZiAoIUlzQShuLCBTdHJpbmcpKQogCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKIAkJCQkJCSBlcnJt c2coImNhbm5vdCBzdWJzY3JpcHQgdHlwZSAlcyBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQg c3Vic2NyaXB0aW5nIiwKQEAgLTUxNyw2ICs1MjYsOSBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJcmVzdWx0ID0gbmV3cmVz dWx0OwogCX0KIAorCWlmICh0cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKKwkJKnRyYWlsaW5nX3N0 YXJfZXhwYW5zaW9uID0gZmFsc2U7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKaW5kZXggM2VmNTg5N2YyZWIuLjE0MWZjMWRmZWIxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3RhcmdldC5jCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiBzdGF0aWMgTGlzdCAq RXhwYW5kQ29sdW1uUmVmU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZiwK IAkJCQkJCQkJIGJvb2wgbWFrZV90YXJnZXRfZW50cnkpOwogc3RhdGljIExpc3QgKkV4cGFuZEFs bFRhYmxlcyhQYXJzZVN0YXRlICpwc3RhdGUsIGludCBsb2NhdGlvbik7Ci1zdGF0aWMgTGlzdCAq RXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAq aW5kLAorc3RhdGljIE5vZGUgKkV4cGFuZEluZGlyZWN0aW9uU3RhcihQYXJzZVN0YXRlICpwc3Rh dGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKIAkJCQkJCQkJICAgYm9vbCBtYWtlX3RhcmdldF9lbnRy eSwgUGFyc2VFeHByS2luZCBleHByS2luZCk7CiBzdGF0aWMgTGlzdCAqRXhwYW5kU2luZ2xlVGFi bGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJ CQkgICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24sCkBAIC0xMzQsNiArMTM0LDcgQEAg dHJhbnNmb3JtVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3Qs CiAJZm9yZWFjaChvX3RhcmdldCwgdGFyZ2V0bGlzdCkKIAl7CiAJCVJlc1RhcmdldCAgKnJlcyA9 IChSZXNUYXJnZXQgKikgbGZpcnN0KG9fdGFyZ2V0KTsKKwkJTm9kZQkgICAqdHJhbnNmb3JtZWQg PSBOVUxMOwogCiAJCS8qCiAJCSAqIENoZWNrIGZvciAic29tZXRoaW5nLioiLiAgRGVwZW5kaW5n IG9uIHRoZSBjb21wbGV4aXR5IG9mIHRoZQpAQCAtMTYyLDEzICsxNjMsMTkgQEAgdHJhbnNmb3Jt VGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3QsCiAKIAkJCQlp ZiAoSXNBKGxsYXN0KGluZC0+aW5kaXJlY3Rpb24pLCBBX1N0YXIpKQogCQkJCXsKLQkJCQkJLyog SXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCi0JCQkJCXBf dGFyZ2V0ID0gbGlzdF9jb25jYXQocF90YXJnZXQsCi0JCQkJCQkJCQkJICAgRXhwYW5kSW5kaXJl Y3Rpb25TdGFyKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkJCQkgaW5kLAotCQkJCQkJCQkJCQkJCQkJ CSB0cnVlLAotCQkJCQkJCQkJCQkJCQkJCSBleHByS2luZCkpOwotCQkJCQljb250aW51ZTsKKwkJ CQkJTm9kZQkgICAqY29sdW1ucyA9IEV4cGFuZEluZGlyZWN0aW9uU3Rhcihwc3RhdGUsCisJCQkJ CQkJCQkJCQkJCQkJaW5kLAorCQkJCQkJCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJCQkJCQkJ ZXhwcktpbmQpOworCisJCQkJCWlmIChJc0EoY29sdW1ucywgTGlzdCkpCisJCQkJCXsKKwkJCQkJ CS8qIEl0IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLworCQkJ CQkJcF90YXJnZXQgPSBsaXN0X2NvbmNhdChwX3RhcmdldCwgKExpc3QgKikgY29sdW1ucyk7CisJ CQkJCQljb250aW51ZTsKKwkJCQkJfQorCisJCQkJCXRyYW5zZm9ybWVkID0gKE5vZGUgKikgY29s dW1uczsKIAkJCQl9CiAJCQl9CiAJCX0KQEAgLTE4MCw3ICsxODcsNyBAQCB0cmFuc2Zvcm1UYXJn ZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAkJcF90YXJnZXQg PSBsYXBwZW5kKHBfdGFyZ2V0LAogCQkJCQkJICAgdHJhbnNmb3JtVGFyZ2V0RW50cnkocHN0YXRl LAogCQkJCQkJCQkJCQkJcmVzLT52YWwsCi0JCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJ dHJhbnNmb3JtZWQsCiAJCQkJCQkJCQkJCQlleHByS2luZCwKIAkJCQkJCQkJCQkJCXJlcy0+bmFt ZSwKIAkJCQkJCQkJCQkJCWZhbHNlKSk7CkBAIC0yNTEsMTAgKzI1OCwxNSBAQCB0cmFuc2Zvcm1F eHByZXNzaW9uTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCiAJCQlp ZiAoSXNBKGxsYXN0KGluZC0+aW5kaXJlY3Rpb24pLCBBX1N0YXIpKQogCQkJewotCQkJCS8qIEl0 IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLwotCQkJCXJlc3Vs dCA9IGxpc3RfY29uY2F0KHJlc3VsdCwKLQkJCQkJCQkJCSBFeHBhbmRJbmRpcmVjdGlvblN0YXIo cHN0YXRlLCBpbmQsCi0JCQkJCQkJCQkJCQkJCSAgIGZhbHNlLCBleHByS2luZCkpOworCQkJCU5v ZGUJICAgKmNvbHMgPSBFeHBhbmRJbmRpcmVjdGlvblN0YXIocHN0YXRlLCBpbmQsCisJCQkJCQkJ CQkJCQkJCSBmYWxzZSwgZXhwcktpbmQpOworCisJCQkJaWYgKCFjb2xzIHx8IElzQShjb2xzLCBM aXN0KSkKKwkJCQkJLyogSXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0 ZW1zICovCisJCQkJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgKExpc3QgKikgY29scyk7 CisJCQkJZWxzZQorCQkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgY29scyk7CisKIAkJCQlj b250aW51ZTsKIAkJCX0KIAkJfQpAQCAtMTM0NSwyMiArMTM1NywzMCBAQCBFeHBhbmRBbGxUYWJs ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBpbnQgbG9jYXRpb24pCiAgKiBGb3Igcm9idXN0bmVzcywg d2UgdXNlIGEgc2VwYXJhdGUgIm1ha2VfdGFyZ2V0X2VudHJ5IiBmbGFnIHRvIGNvbnRyb2wKICAq IHRoaXMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBleHByS2luZC4KICAqLwotc3RhdGljIExpc3Qg Kgorc3RhdGljIE5vZGUgKgogRXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAogCQkJCQkgIGJvb2wgbWFrZV90YXJnZXRfZW50cnksIFBh cnNlRXhwcktpbmQgZXhwcktpbmQpCiB7CiAJTm9kZQkgICAqZXhwcjsKKwlQYXJzZUV4cHJLaW5k IHN2X2V4cHJfa2luZDsKKwlib29sCQl0cmFpbGluZ19zdGFyX2V4cGFuc2lvbiA9IGZhbHNlOwor CisJLyogU2F2ZSBhbmQgcmVzdG9yZSBpZGVudGl0eSBvZiBleHByZXNzaW9uIHR5cGUgd2UncmUg cGFyc2luZyAqLworCUFzc2VydChleHByS2luZCAhPSBFWFBSX0tJTkRfTk9ORSk7CisJc3ZfZXhw cl9raW5kID0gcHN0YXRlLT5wX2V4cHJfa2luZDsKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gZXhw cktpbmQ7CiAKIAkvKiBTdHJpcCBvZmYgdGhlICcqJyB0byBjcmVhdGUgYSByZWZlcmVuY2UgdG8g dGhlIHJvd3R5cGUgb2JqZWN0ICovCi0JaW5kID0gY29weU9iamVjdChpbmQpOwotCWluZC0+aW5k aXJlY3Rpb24gPSBsaXN0X3RydW5jYXRlKGluZC0+aW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkgbGlz dF9sZW5ndGgoaW5kLT5pbmRpcmVjdGlvbikgLSAxKTsKKwlleHByID0gdHJhbnNmb3JtSW5kaXJl Y3Rpb24ocHN0YXRlLCBpbmQsICZ0cmFpbGluZ19zdGFyX2V4cGFuc2lvbik7CisKKwlwc3RhdGUt PnBfZXhwcl9raW5kID0gc3ZfZXhwcl9raW5kOwogCi0JLyogQW5kIHRyYW5zZm9ybSB0aGF0ICov Ci0JZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBpbmQsIGV4cHJLaW5kKTsK KwkvKiAnKicgd2FzIGNvbnN1bWVkIGJ5IGdlbmVyaWMgdHlwZSBzdWJzY3JpcHRpbmcgKi8KKwlp ZiAoIXRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uKQorCQlyZXR1cm4gZXhwcjsKIAogCS8qIEV4cGFu ZCB0aGUgcm93dHlwZSBleHByZXNzaW9uIGludG8gaW5kaXZpZHVhbCBmaWVsZHMgKi8KLQlyZXR1 cm4gRXhwYW5kUm93UmVmZXJlbmNlKHBzdGF0ZSwgZXhwciwgbWFrZV90YXJnZXRfZW50cnkpOwor CXJldHVybiAoTm9kZSAqKSBFeHBhbmRSb3dSZWZlcmVuY2UocHN0YXRlLCBleHByLCBtYWtlX3Rh cmdldF9lbnRyeSk7CiB9CiAKIC8qCkBAIC0xNzg1LDEzICsxODA1LDE4IEBAIEZpZ3VyZUNvbG5h bWVJbnRlcm5hbChOb2RlICpub2RlLCBjaGFyICoqbmFtZSkKIAkJCQljaGFyCSAgICpmbmFtZSA9 IE5VTEw7CiAJCQkJTGlzdENlbGwgICAqbDsKIAotCQkJCS8qIGZpbmQgbGFzdCBmaWVsZCBuYW1l LCBpZiBhbnksIGlnbm9yaW5nICIqIiBhbmQgc3Vic2NyaXB0cyAqLworCQkJCS8qCisJCQkJICog ZmluZCBsYXN0IGZpZWxkIG5hbWUsIGlmIGFueSwgaWdub3Jpbmcgc3Vic2NyaXB0cywgYW5kIHVz ZQorCQkJCSAqICc/Y29sdW1uPycgd2hlbiB0aGVyZSdzIGEgdHJhaWxpbmcgJyonLgorCQkJCSAq LwogCQkJCWZvcmVhY2gobCwgaW5kLT5pbmRpcmVjdGlvbikKIAkJCQl7CiAJCQkJCU5vZGUJICAg KmkgPSBsZmlyc3QobCk7CiAKIAkJCQkJaWYgKElzQShpLCBTdHJpbmcpKQogCQkJCQkJZm5hbWUg PSBzdHJWYWwoaSk7CisJCQkJCWVsc2UgaWYgKElzQShpLCBBX1N0YXIpKQorCQkJCQkJZm5hbWUg PSAiP2NvbHVtbj8iOwogCQkJCX0KIAkJCQlpZiAoZm5hbWUpCiAJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25ic3Vicy5jCmluZGV4IDg3ZTMwMjk1MTNhLi5jYjcyZDEyY2EzZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYnN1YnMuYwpAQCAtMTI0LDcgKzEyNCw3IEBAIGpzb25iX2NoZWNrX2pzb25wYXRo X25lZWRlZChMaXN0ICppbmRpcmVjdGlvbikKIAl7CiAJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZp cnN0KGxjKTsKIAotCQlpZiAoSXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQlpZiAoSXNBKGFjY2Vz c29yLCBTdHJpbmcpIHx8IElzQShhY2Nlc3NvciwgQV9TdGFyKSkKIAkJCXJldHVybiB0cnVlOwog CQllbHNlCiAJCXsKQEAgLTM0MCw2ICszNDAsMTYgQEAganNvbmJfc3Vic2NyaXB0X21ha2VfanNv bnBhdGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICoqaW5kaXJlY3Rpb24sIFN1YnNjcmlwdGkK IAkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLnRvID0gTlVMTDsKIAkJCX0KIAkJfQorCQll bHNlIGlmIChJc0EoYWNjZXNzb3IsIEFfU3RhcikpCisJCXsKKwkJCVN0YXIgKnN0YXJfbm9kZTsK KwkJCWpwaSA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlBbnlLZXkpOworCisJCQlzdGFyX25vZGUg PSBtYWtlTm9kZShTdGFyKTsKKwkJCXN0YXJfbm9kZS0+dHlwZSA9IFRfU3RhcjsKKworCQkJc2Jz cmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBsYXBwZW5kKHNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBz dGFyX25vZGUpOworCQl9CiAJCWVsc2UKIAkJewogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwppbmRleCBiYWEzYWU5N2Q1Ny4uYWNlMGVmZjUyZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKQEAgLTEzMDEwLDcgKzEzMDEwLDExIEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3Jp cHRpbmdSZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJTm9kZSAq dXBwZXIgPSAoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pOwogCi0JCWlmICh1cHBlciAmJiBJ c0EodXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKKwkJaWYgKHVwcGVyICYmIElzQSh1cHBlciwg U3RhcikpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLioiKTsKKwkJfQor CQllbHNlIGlmICh1cHBlciAmJiBJc0EodXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKIAkJewog CQkJRmllbGRBY2Nlc3NvckV4cHIgKmZhZSA9IChGaWVsZEFjY2Vzc29yRXhwciAqKSB1cHBlcjsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA3ZTg5NjIxYmQ2NS4uN2U0MTg4MzBmMjIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oCkBAIC0yNDE5LDQgKzI0MTksMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgRmll bGRBY2Nlc3NvckV4cHIKIAlPaWQJCQlmYWVjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogfQkJCUZpZWxkQWNjZXNzb3JFeHByOwogCisvKgorICogU3RhciAtIHJlcHJl c2VudHMgYSB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzb3IgKGUuZy4sICIuKiIpIHVzZWQgaW4gSlNP TkIgc2ltcGxpZmllZCBhY2Nlc3Nvci4KKyAqCisgKiBUaGlzIG5vZGUgc2VydmVzIGFzIGEgc3lu dGFjdGljIHBsYWNlaG9sZGVyIGluIHRoZSBleHByZXNzaW9uIHRyZWUgYW5kIGRvZXMgbm90IGdl dCBldmFsdWF0ZWQsIGhlbmNlIGl0CisgKiBoYXMgbm8gYXNzb2NpYXRlZCB0eXBlIG9yIGNvbGxh dGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhcgoreworCU5vZGVUYWcJCXR5cGU7Cit9CQkJ U3RhcjsKKworCiAjZW5kaWYJCQkJCQkJLyogUFJJTU5PREVTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oCmluZGV4IGVmYmFmZjhlNzEwLi5jOWY2YTc3MjRjMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oCkBAIC0yMiw0ICsyMiw3IEBAIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1FeHByKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2luZCBleHByS2luCiAKIGV4dGVy biBjb25zdCBjaGFyICpQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKTsK IAorZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9JbmRpcmVjdGlvbiAqaW5kLAorCQkJCQkJCQkgIGJvb2wgKnRyYWlsaW5nX3N0YXJfZXhwYW5z aW9uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX0VYUFJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYwppbmRleCA5MzViNDdhM2I5YS4u NTg1ZDliMTQ0NDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9z cWwtc3FsanNvbi5jCkBAIC01MTUsOSArNTE1LDkgQEAgaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBz cWxwcmludCgpO30KIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAx NDUgInNxbGpzb24ucGdjIgogCi0JLy8gZXJyb3IKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIs IGpzb24pOwogCi0JeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3Jt YWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwi OiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgWyAn YicgXSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwg TlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6 IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9 XX1dfScgOjoganNvbmIgKSAuICogLiB4ICkiLCBFQ1BHdF9FT0lULCAKIAlFQ1BHdF9jaGFyLChq c29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCiAJRUNQR3RfTk9f SU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CiAjbGluZSAxNDggInNx bGpzb24ucGdjIgpAQCAtNTI3LDcgKzUyNyw3IEBAIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CiAKIAlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCi0JeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wi eFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgOiBdICkiLCBFQ1BHdF9F T0lULCAKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwg InNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7 XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBd IFsgMCA6IF0gKSIsIEVDUEd0X0VPSVQsIAogCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQs KGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKIAlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwg LCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCkBAIC01 MzcsMTIgKzUzNywyMiBAQCBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQogCiAJ cHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKIAotICB7IEVDUEdkaXNjb25uZWN0KF9f TElORV9fLCAiQ1VSUkVOVCIpOworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBF Q1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6 IDJ9LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBq c29uYiApIC4gYiBbIDogXSApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxv bmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRP UiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOwogI2xpbmUgMTU0ICJzcWxqc29uLnBn YyIKIAogaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KICNsaW5lIDE1NCAic3Fs anNvbi5wZ2MiCiAKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisgIHsgRUNQ R2Rpc2Nvbm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7CisjbGluZSAxNTcgInNxbGpzb24ucGdj IgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTU3ICJzcWxq c29uLnBnYyIKKwogCiAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVyciBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIKaW5kZXggZjNmODk5YzZkODcuLjRi OTA4ODU0NWQ2IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQv c3FsLXNxbGpzb24uc3RkZXJyCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5zdGRlcnIKQEAgLTM0NywyMiArMzQ3LDE5IEBAIFNRTCBlcnJvcjogc2No ZW1hICJqc29uYiIgZG9lcyBub3QgZXhpc3Qgb24gbGluZSAxMjEKIFtOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQ1 OiB1c2luZyBQUWV4ZWMKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1b Tk9fUElEXTogZWNwZ19jaGVja19QUXJlc3VsdCBvbiBsaW5lIDE0NTogYmFkIHJlc3BvbnNlIC0g RVJST1I6ICByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlCi1MSU5F IDE6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4Ijog MX0sIHsieC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgXgorW05PX1BJRF06IGVjcGdfcHJv Y2Vzc19vdXRwdXQgb24gbGluZSAxNDU6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZp ZWxkcwogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKLVtOT19QSURdOiBy YWlzaW5nIHNxbHN0YXRlIDBBMDAwIChzcWxjb2RlIC00MDApOiByb3cgZXhwYW5zaW9uIHZpYSAi KiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIG9uIGxpbmUgMTQ1Ci1bTk9fUElEXTogc3FsY2E6IGNv ZGU6IC00MDAsIHN0YXRlOiAwQTAwMAotU1FMIGVycm9yOiByb3cgZXhwYW5zaW9uIHZpYSAiKiIg aXMgbm90IHN1cHBvcnRlZCBoZXJlIG9uIGxpbmUgMTQ1Ci1bTk9fUElEXTogZWNwZ19leGVjdXRl IG9uIGxpbmUgMTQ4OiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6 IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSBb ICdiJyBdIFsgMCA6IF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcx X3JlZ3Jlc3Npb24KK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTQ1OiBSRVNVTFQ6 IFt7ImIiOiAxLCAiYyI6IDJ9LCBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjogMX1dfV1dIG9m ZnNldDogLTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAw MDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDg6IHF1ZXJ5OiBzZWxlY3QganNv biAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIs IHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gKiAuIHggKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBv biBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwg c3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQ4OiB1c2luZyBQ UWV4ZWMKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTog ZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDE0ODogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3 aXRoIDEgZmllbGRzCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05P X1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxNDg6IFJFU1VMVDogW3sieCI6IDF9LCB7Ingi OiBbMTIsIHsieSI6IDF9XX1dIG9mZnNldDogLTE7IGFycmF5OiBubworW05PX1BJRF06IGVjcGdf Z2V0X2RhdGEgb24gbGluZSAxNDg6IFJFU1VMVDogWzEsIFsxMiwgeyJ5IjogMX1dXSBvZmZzZXQ6 IC0xOyBhcnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1b Tk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTUxOiBxdWVyeTogc2VsZWN0IGpzb24gKCAo ICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBj b25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGlu ZSAxNTE6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJi IjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0g WyAwIDogXSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxNTE6IHVzaW5nIFBRZXhlYwogW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKQEAgLTM3MCw1ICszNjcsMTMgQEAgU1FMIGVycm9yOiByb3cg ZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIG9uIGxpbmUgMTQ1CiBbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06IGVjcGdfZ2V0X2Rh dGEgb24gbGluZSAxNTE6IFJFU1VMVDogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6IDF9XX1d IG9mZnNldDogLTE7IGFycmF5OiBubwogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTog MDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNTQ6IHF1ZXJ5OiBzZWxlY3Qg anNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBb MTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gYiBbIDogXSApOyB3aXRoIDAgcGFyYW1ldGVy KHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2Rl OiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNTQ6IHVz aW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTU0OiBjb3JyZWN0bHkgZ290IDEgdHVw bGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw CitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE1NDogUkVTVUxUOiBbeyJ4IjogMX0s IHsieCI6IFsxMiwgeyJ5IjogMX1dfV0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06IGVjcGdfZmluaXNoOiBjb25u ZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24gY2xvc2VkCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVj dGVkL3NxbC1zcWxqc29uLnN0ZG91dCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5zdGRvdXQKaW5kZXggZDAxYTg0NTdmMDEuLjE0NWRjOTVkNDMwIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rk b3V0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRvdXQKQEAgLTM2LDUgKzM2LDcgQEAgRm91bmQganNvbj17IngiOiAxfQogRm91bmQganNvbj1b MSwgWzEyLCB7InkiOiAxfV1dCiBGb3VuZCBqc29uPXsieCI6IDF9CiBGb3VuZCBqc29uPVsxMiwg eyJ5IjogMX1dCitGb3VuZCBqc29uPVt7ImIiOiAxLCAiYyI6IDJ9LCBbeyJ4IjogMX0sIHsieCI6 IFsxMiwgeyJ5IjogMX1dfV1dCitGb3VuZCBqc29uPVsxLCBbMTIsIHsieSI6IDF9XV0KIEZvdW5k IGpzb249W3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6IDF9XX1dCiBGb3VuZCBqc29uPVt7Ingi OiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19XQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwv c3FsanNvbi5wZ2MKaW5kZXggOTQyM2QyNWZkMGIuLjJhZjUwYjVkYTRiIDEwMDY0NAotLS0gYS9z cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MKQEAgLTE0Myw3ICsxNDMsMTAgQEAgRVhFQyBT UUwgRU5EIERFQ0xBUkUgU0VDVElPTjsKIAlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24p OwogCiAJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6 IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS4qKSBJTlRPIDpqc29u OwotCS8vIGVycm9yCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMg U1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0s IHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuKi54KSBJTlRPIDpqc29uOworCXByaW50 ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CiAKIAlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3si YSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1d fV19Jzo6anNvbmIpWydiJ11bMDpdKSBJTlRPIDpqc29uOwogCXByaW50ZigiRm91bmQganNvbj0l c1xuIiwganNvbik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25i Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IDkxNzY5Mjdh ZmMxLi4xZmZhOTg0ZmViNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q c29uYi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTYw NTIsOCArNjA1MiwxNzUgQEAgU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbiB0OwogIHsieSI6ICJZWVkiLCAieiI6ICJaWloifQogKDEgcm93KQogCi1TRUxF Q1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gZmFpbHMKLUVSUk9S OiAgdHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCisvKiB3aWxkIGNhcmQgbWVtYmVyIGFjY2Vz cyAqLworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAg ICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiLCAiZiIsIHsieSI6ICJ5eXki LCAieiI6ICJ6enoifV0KKygxIHJvdykKKworU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6 ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9 fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCiso MSByb3cpCisKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0Owor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJk IiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIi OiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisKK1NFTEVD VCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwg IngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7 InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XV0KKygxIHJvdykKKworU0VMRUNUIChqYikuKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb WzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIs ICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6Ijog IlpaWiJ9fV1dCisoMSByb3cpCisKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAi dCIKK0xJTkUgMTogU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CisgICAgICAgICAgICAgICAgXgorU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW1sxLCAyLCB7ImIiOiAi YyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1d LCBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dXQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg ICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbImMiLCAiZCIsICJmIiwgeyJ5IjogInl5 eSIsICJ6IjogInp6eiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLiouYiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworIGIgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIChqYiku YS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyB4IAorLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCAoamIpLmEuKi55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICB5 ICAgCistLS0tLS0tCisgInl5eSIKKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qLiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0t LS0KKyBbInl5eSIsICJ6enoiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZ WSIsICJ6IjogIlpaWiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZ IiwgInoiOiAiWlpaIn1dCisoMSByb3cpCisKK1NFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKKyB4IAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoKGpi KS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyB4IAorLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCAoKGpiKS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24g dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9XQor KDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg W3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9XQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS4qLnguKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor ICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBbInl5eSIsICJ6enoiLCAiWVlZIiwgIlpaWiJdCisoMSByb3cpCisKK1NFTEVDVCAo amIpLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgeSAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tCisgWyJ5eXkiLCAiWVlZIl0KKygxIHJvdykKKworU0VMRUNUIChq YikuKi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICB6ICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0KKyBbInp6eiIsICJaWloiXQorKDEgcm93KQorCitTRUxFQ1QgKGpi KS4qLioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgIHkgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgIllZWSJdCisoMSByb3cpCisKK1NFTEVDVCAoamIp LiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgID9jb2x1bW4/ ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgInp6 eiIsICJZWVkiLCAiWlpaIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi4qLiouKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgKGpiKS5hLmIuYy4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Cisg P2NvbHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuKi4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgP2NvbHVtbj8gICAgCistLS0tLS0tLS0t LS0tLS0tCisgWyJ5eXkiLCAienp6Il0KKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qWzpdLiog RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0t LS0tLS0tLS0KKyBbInl5eSIsICJ6enoiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLipbKl0u KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBub3Qgc3VwcG9ydGVkCitFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIqIgorTElORSAxOiBTRUxFQ1QgKGpiKS5hLipbKl0u KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIChqYikuYS4qKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIG5v dCBzdXBwb3J0ZWQKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIioqIgorTElORSAx OiBTRUxFQ1QgKGpiKS5hLioqLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICAgICAgICAgICAgICAgICBeCiAtLSBleHBsYWlucyBzaG91bGQgd29yawogRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbiB0OwogICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIApA QCAtNjA4MSw2ICs2MjQ4LDQ1IEBAIFNFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKICAyCiAoMSByb3cpCiAKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb24KKyAgIE91dHB1dDogKGpiKS5hLioKKygyIHJvd3MpCisKK1NFTEVDVCAoamIp LmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICA/Y29s dW1uPyAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFsiYyIsICJkIiwgImYiLCB7InkiOiAieXl5IiwgInoiOiAienp6In1dCiso MSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4qWzE6 XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24K KyAgIE91dHB1dDogKGpiKS5hLipbOl0uKgorKDIgcm93cykKKworU0VMRUNUIChqYikuYS4qWzE6 XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgCisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYiku YS4qWzE6Ml0uKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb24KKyAgIE91dHB1dDogKGpiKS5hLipbOjJdLiouYgorKDIgcm93cykKKworU0VMRUNU IChqYikuYS4qWzE6Ml0uKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgYiAKKy0t LQorIAorKDEgcm93KQorCiAtLSB2aWV3cyBzaG91bGQgd29yawogQ1JFQVRFIFZJRVcgdGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMgU0VMRUNUIChqYikuYVszXS54LnkgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKIFxzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQpAQCAtNjEw OSw2ICs2MzE1LDE3IEBAIFNFTEVDVCAqIGZyb20gdjM7CiAgInl5eSIKICgxIHJvdykKIAorQ1JF QVRFIFZJRVcgdjQgQVMgU0VMRUNUIChqYikuYS4qWzpdLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1xzdiB2NAorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjQgQVMKKyBT RUxFQ1QgKGpiKS5hLipbOl0uKiBBUyAiP2NvbHVtbj8iCisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHY0OworICAgID9jb2x1bW4/ICAgIAorLS0tLS0tLS0t LS0tLS0tLQorIFsieXl5IiwgInp6eiJdCisoMSByb3cpCisKIC0tIG1peGVkIHN5bnRheAogRFJP UCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK QEAgLTYzNDQsNCArNjU2MSw1IEBAIE5PVElDRTogIFsyXQogLS0gY2xlYW4gdXAKIERST1AgVklF VyB2MjsKIERST1AgVklFVyB2MzsKK0RST1AgVklFVyB2NDsKIERST1AgVEFCTEUgdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggYmY5ZmFmNTJjYWIuLjM0 NjU3NmEwODViIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNjI5LDEzICsxNjI5LDQ5IEBA IFNFTEVDVCAoamIpLmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVD VCAoamIpLmFbOjJdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVDVCAoamIp LmFbOl0uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUICgoamIpLmIpWzpd LnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwotU0VMRUNUIChqYikuYS4qIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGZhaWxzCisKKy8qIHdpbGQgY2FyZCBtZW1iZXIg YWNjZXNzICovCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUICh0LmpiKS4qIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NF TEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYiku YS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKi54IEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLioueSBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVD VCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpi KS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpiKS4qKVs6 XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLioueCBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgKGpiKS4qLngueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuKi4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVD VCAoamIpLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4q LiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIuYy4q IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLiouKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qWzpdLiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKlsqXS4qIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCAoamIpLmEuKioueCBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBub3Qgc3VwcG9ydGVkCiAKIC0tIGV4cGxhaW5zIHNo b3VsZCB3b3JrCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CiBTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBTRUxFQ1QgKGpiKS5h WzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOl0uKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qWzE6XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOjJd LiouYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qWzE6Ml0u Ki5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiAKIC0tIHZpZXdzIHNob3VsZCB3b3Jr CiBDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpiKS5h WzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpAQCAtMTY0Niw2ICsxNjgyLDkg QEAgU0VMRUNUICogZnJvbSB2MjsKIENSRUFURSBWSUVXIHYzIEFTIFNFTEVDVCAoamIpLmFbOjNd LngueVstMTpdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBcc3YgdjMKIFNFTEVDVCAq IGZyb20gdjM7CitDUkVBVEUgVklFVyB2NCBBUyBTRUxFQ1QgKGpiKS5hLipbOl0uKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHY0CitTRUxFQ1QgKiBmcm9tIHY0OwogCiAtLSBt aXhlZCBzeW50YXgKIERST1AgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKQEAgLTE3 NDcsNCArMTc4Niw1IEBAICQkIExBTkdVQUdFIHBscGdzcWw7CiAtLSBjbGVhbiB1cAogRFJPUCBW SUVXIHYyOwogRFJPUCBWSUVXIHYzOworRFJPUCBWSUVXIHY0OwogRFJPUCBUQUJMRSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0006-Implement-Jsonb-subscripting-with-slicing.patch" Content-Disposition: attachment; filename="v14-0006-Implement-Jsonb-subscripting-with-slicing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgbd5 RnJvbSA3N2E3ZjI0MzdmYWNhNjg4YTE0MGEyZjQ2NjJkZmYxNmNjZmU5ZTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTQgNi83XSBJbXBsZW1lbnQgSnNvbmIgc3Vic2NyaXB0aW5nIHdpdGggc2xpY2luZwoK UHJldmlvdXNseSwgc2xpY2luZyB3YXMgbm90IHN1cHBvcnRlZCBmb3IganNvbmIgc3Vic2NyaXB0 aW5nLiBUaGlzIGNvbW1pdAppbXBsZW1lbnRzIHN1YnNjcmlwdGluZyB3aXRoIHNsaWNpbmcgYXMg cGFydCBvZiB0aGUgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yCnN5bnRheCBzcGVjaWZpZWQgaW4g U1FMOjIwMjMuCgpDby1hdXRob3JlZC1ieTogTmlraXRhIEdsdWtob3YgPGdsdWtob3Yubi5hQGdt YWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IEFsZXhhbmRyYSBXYW5nIDxhbGV4YW5kcmEud2FuZy5v c3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFu ZS5uZXQ+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogTWFyayBEaWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2Vk Yi5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmll d2VkLWJ5OiBOaWtpdGEgTWFsYWtob3YgPGh1a3V0b2NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog UGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClRlc3RlZC1ieTogTWFyayBE aWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2VkYi5jb20+ClRlc3RlZC1ieTogSmlhbiBIZSA8 amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYnN1YnMuYyAgICAgICAgICAgICB8ICAzMyArKystCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLmMgICAgICAgICAgfCAgMTYgKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQv c3FsLXNxbGpzb24uc3RkZXJyICAgICB8ICAyNiArKy0tCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLnN0ZG91dCAgICAgfCAgIDMgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L3NxbC9zcWxqc29uLnBnYyAgICAgIHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iLm91dCAgICAgICAgICAgfCAxNDUgKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICAgICAgICAgICAgfCAgNTMgKysrKysrLQogNyBmaWxl cyBjaGFuZ2VkLCAyNDMgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25ic3Vicy5jCmluZGV4IGRkZjQ1ZGQ3M2IyLi44N2UzMDI5NTEzYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMTkyLDkgKzE5MiwxMCBAQCBtYWtlX2pzb25wYXRoX2l0 ZW1faW50KGludDMyIHZhbCwgTGlzdCAqKmV4cHJzKQogICogLSBwc3RhdGU6IHBhcnNlIHN0YXRl IGNvbnRleHQKICAqIC0gZXhwcjogaW5wdXQgZXhwcmVzc2lvbiBub2RlCiAgKiAtIGV4cHJzOiBs aXN0IG9mIGV4cHJlc3Npb24gbm9kZXMgKHVwZGF0ZWQgaW4gcGxhY2UpCisgKiAtIG5vX2Vycm9y OiByZXR1cm5zIE5VTEwgd2hlbiB0aGUgZGF0YSB0eXBlIGRvZXNuJ3QgbWF0Y2guIE90aGVyd2lz ZSwgZW1pdHMgYW4gRVJST1IuCiAgKi8KIHN0YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAqCi1tYWtl X2pzb25wYXRoX2l0ZW1fZXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIExpc3Qg KipleHBycykKK21ha2VfanNvbnBhdGhfaXRlbV9leHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqZXhwciwgTGlzdCAqKmV4cHJzLCBib29sIG5vX2Vycm9yKQogewogCUNvbnN0CSAgICpjbnN0 OwogCkBAIC0yMDcsNyArMjA4LDE0IEBAIG1ha2VfanNvbnBhdGhfaXRlbV9leHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgTGlzdCAqKmV4cHJzKQogCQkJcmV0dXJuIG1ha2VfanNv bnBhdGhfaXRlbV9pbnQoRGF0dW1HZXRJbnQzMihjbnN0LT5jb25zdHZhbHVlKSwgZXhwcnMpOwog CX0KIAotCXJldHVybiBOVUxMOworCWlmIChub19lcnJvcikKKwkJcmV0dXJuIE5VTEw7CisJZWxz ZQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJZXJybXNnKCJvbmx5IG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIGFyZSBzdXBw b3J0ZWQgZm9yIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3Vic2NyaXB0aW5nIiksCisJCQkJ ZXJyaGludCgidXNlIGludCBkYXRhIHR5cGUgZm9yIHN1YnNjcmlwdGluZyB3aXRoIHNsaWNpbmcu IiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSk7 CiB9CiAKIC8qCkBAIC0yNzcsMTkgKzI4NSwyOCBAQCBqc29uYl9zdWJzY3JpcHRfbWFrZV9qc29u cGF0aChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKippbmRpcmVjdGlvbiwgU3Vic2NyaXB0aQog CiAJCQlpZiAoYWktPmlzX3NsaWNlKQogCQkJewotCQkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlk eCA/IGFpLT51aWR4IDogYWktPmxpZHg7CisJCQkJd2hpbGUgKGxpc3RfbGVuZ3RoKHNic3JlZi0+ cmVmbG93ZXJpbmRleHByKSA8IGxpc3RfbGVuZ3RoKHNic3JlZi0+cmVmdXBwZXJpbmRleHByKSkK KwkJCQkJc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgPSBsYXBwZW5kKHNic3JlZi0+cmVmbG93ZXJp bmRleHByLCBOVUxMKTsKKworCQkJCWlmIChhaS0+bGlkeCkKKwkJCQkJanBpLT52YWx1ZS5hcnJh eS5lbGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+bGlk eCwgJnNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBmYWxzZSk7CisJCQkJZWxzZQorCQkJCQlqcGkt PnZhbHVlLmFycmF5LmVsZW1zWzBdLmZyb20gPSBtYWtlX2pzb25wYXRoX2l0ZW1faW50KDAsICZz YnNyZWYtPnJlZmxvd2VyaW5kZXhwcik7CiAKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBz dWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMiKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZXhwcikpKSk7CisJCQkJaWYgKGFpLT51aWR4KQor CQkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLnRvID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4 cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBmYWxzZSk7CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2Vf anNvbnBhdGhfaXRlbShqcGlMYXN0KTsKKwkJCQkJc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBs YXBwZW5kKHNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBOVUxMKTsKKwkJCQl9CiAJCQl9CiAJCQll bHNlCiAJCQl7CiAJCQkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaV9mcm9tID0gTlVMTDsKIAogCQkJ CUFzc2VydChhaS0+dWlkeCAmJiAhYWktPmxpZHgpOwotCQkJCWpwaV9mcm9tID0gbWFrZV9qc29u cGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHBy KTsKKwkJCQlqcGlfZnJvbSA9IG1ha2VfanNvbnBhdGhfaXRlbV9leHByKHBzdGF0ZSwgYWktPnVp ZHgsICZzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciwgdHJ1ZSk7CiAJCQkJaWYgKGpwaV9mcm9tID09 IE5VTEwpCiAJCQkJewogCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb24uYwppbmRleCBlNmE3ZWNlNmRhYi4uOTM1YjQ3YTNiOWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCisr KyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCkBAIC01 MDUsNyArNTA1LDcgQEAgaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KIGlmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAxNDIgInNxbGpzb24ucGdjIgog Ci0JLy8gZXJyb3IKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wi eFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiAqICkiLCBFQ1BHdF9FT0lULCAK IAlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFy KSwgCkBAIC01MjUsMTQgKzUyNSwyNCBAQCBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQogaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KICNsaW5lIDE0OCAic3Fs anNvbi5wZ2MiCiAKLQkvLyBlcnJvcgorCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7 CiAKLSAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKwl7IEVDUEdkbyhf X0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAn e1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6 IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0gKSIsIEVDUEd0X0VPSVQs IAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNo YXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JU KTsKICNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CiAjbGluZSAxNTEgInNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29u PSVzXG4iLCBqc29uKTsKKworICB7IEVDUEdkaXNjb25uZWN0KF9fTElORV9fLCAiQ1VSUkVOVCIp OworI2xpbmUgMTU0ICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxw cmludCgpO30KKyNsaW5lIDE1NCAic3FsanNvbi5wZ2MiCisKIAogICByZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRlcnIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rk ZXJyCmluZGV4IDE5ZjhjNThhZjA2Li5mM2Y4OTljNmQ4NyAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgorKysgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyCkBAIC0zMzksMTMg KzMzOSwxMCBAQCBTUUwgZXJyb3I6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxp bmUgMTIxCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06 IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogdXNpbmcgUFFleGVjCiBbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24g bGluZSAxNDI6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90 IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IC4uLiwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjog anNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBlY3Bn X3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQyOiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGgg MSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE0MjogUkVTVUxUOiBbMTIsIHsieSI6IDF9XSBvZmZz ZXQ6IC0xOyBhcnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw Ci1bTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIg c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCi1bTk9fUElEXTog c3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjgwNAotU1FMIGVycm9yOiBqc29uYiBzdWJzY3Jp cHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKIFtOT19QSURdOiBlY3BnX2V4 ZWN1dGUgb24gbGluZSAxNDU6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEs ICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29u YiApIC4gKiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxNDU6IHVzaW5nIFBRZXhlYwpAQCAtMzYxLDEyICszNTgsMTcg QEAgU1FMIGVycm9yOiByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJl IG9uIGxpbmUgMTQ1CiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05P X1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0ODogdXNpbmcgUFFleGVjCiBbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1 bHQgb24gbGluZSAxNDg6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRv ZXMgbm90IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IC4uLngiOiAxfSwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBdIFsgMCA6IF0gKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURd OiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQ4OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVz IHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE0ODogUkVTVUxUOiBbeyJ4IjogMX0sIHsi eCI6IFsxMiwgeyJ5IjogMX1dfV0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5l IDE1MTogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIi OiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgOiBd ICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhl Y3V0ZSBvbiBsaW5lIDE1MTogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxNTE6 IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTUx OiBSRVNVTFQ6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19XSBvZmZzZXQ6IC0xOyBh cnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1bTk9fUElE XTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIgc3Vic2NyaXB0 IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQ4Ci1bTk9fUElEXTogc3FsY2E6IGNv ZGU6IC00MDAsIHN0YXRlOiA0MjgwNAotU1FMIGVycm9yOiBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDgKIFtOT19QSURdOiBlY3BnX2ZpbmlzaDogY29u bmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uIGNsb3NlZAogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbi5zdGRvdXQgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0 ZWQvc3FsLXNxbGpzb24uc3Rkb3V0CmluZGV4IDQ0MmQzNjkzMWYxLi5kMDFhODQ1N2YwMSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0 ZG91dAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3Rkb3V0CkBAIC0zNSwzICszNSw2IEBAIEZvdW5kIGpzb249bnVsbAogRm91bmQganNvbj17Ingi OiAxfQogRm91bmQganNvbj1bMSwgWzEyLCB7InkiOiAxfV1dCiBGb3VuZCBqc29uPXsieCI6IDF9 CitGb3VuZCBqc29uPVsxMiwgeyJ5IjogMX1dCitGb3VuZCBqc29uPVt7IngiOiAxfSwgeyJ4Ijog WzEyLCB7InkiOiAxfV19XQorRm91bmQganNvbj1beyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijog MX1dfV0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5w Z2MgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCmluZGV4IDU3YTli ZmY0MjRkLi45NDIzZDI1ZmQwYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L3NxbC9zcWxqc29uLnBnYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b24ucGdjCkBAIC0xNDAsMTMgKzE0MCwxNiBAQCBFWEVDIFNRTCBFTkQgREVDTEFSRSBTRUNUSU9O OwogCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CiAKIAlFWEVDIFNRTCBTRUxFQ1Qg SlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIs IHsieSI6MX1dfV19Jzo6anNvbmIpLmJbMV0ueFswOl0pIElOVE8gOmpzb247Ci0JLy8gZXJyb3IK KwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJRVhFQyBTUUwgU0VMRUNUIEpT T04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7 InkiOjF9XX1dfSc6Ompzb25iKS4qKSBJTlRPIDpqc29uOwogCS8vIGVycm9yCiAKIAlFWEVDIFNR TCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7 IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpWydiJ11bMDpdKSBJTlRPIDpqc29uOwotCS8v IGVycm9yCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNF TEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6 IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuYls6XSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZv dW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAgIEVYRUMgU1FMIERJU0NPTk5FQ1Q7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggYjA1NGI4YjVkZDAuLjkxNzY5MjdhZmMxIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTI0NywyMyArNTI0NywzNCBAQCBz ZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6 ICJiYiJ9Jzo6anNvbmIpLmFbMV0uYgogKDEgcm93KQogCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompz b25iKVsnYSc6J2InXTsgLS0gZmFpbHMKLUVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90 IHN1cHBvcnQgc2xpY2VzCitFUlJPUjogIG9ubHkgbm9uLW51bGwgaW50ZWdlciBjb25zdGFudHMg YXJlIHN1cHBvcnRlZCBmb3IganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzdWJzY3JpcHRpbmcK IExJTkUgMTogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0hJTlQ6ICB1c2UgaW50IGRhdGEgdHlwZSBmb3Igc3Vic2NyaXB0aW5nIHdp dGggc2xpY2luZy4KIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzE6Ml07Ci1FUlJP UjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElORSAxOiBzZWxl Y3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOjJdOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICBqc29uYiAgICAKKy0tLS0tLS0tLS0tLS0KKyBb IjIiLCBudWxsXQorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6 Ml07Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElO RSAxOiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6Ml07Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgIGpzb25iICAgICAgCistLS0tLS0t LS0tLS0tLS0tCisgWzEsICIyIiwgbnVsbF0KKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMTpdOwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3Vw cG9ydCBzbGljZXMKLUxJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMTpd OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAganNvbmIg ICAgCistLS0tLS0tLS0tLS0tCisgWyIyIiwgbnVsbF0KKygxIHJvdykKKwogc2VsZWN0ICgnWzEs ICIyIiwgbnVsbF0nOjpqc29uYilbOl07Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5v dCBzdXBwb3J0IHNsaWNlcworICAgICBqc29uYiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsx LCAiMiIsIG51bGxdCisoMSByb3cpCisKIGNyZWF0ZSBURU1QIFRBQkxFIHRlc3RfanNvbmJfc3Vi c2NyaXB0ICgKICAgICAgICBpZCBpbnQsCiAgICAgICAgdGVzdF9qc29uIGpzb25iCkBAIC02MDA1 LDggKzYwMTYsNDIgQEAgU0VMRUNUIChqYikuYS5iLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKICAKICgxIHJvdykKIAotU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMKK1NFTEVDVCAoKGpiKS5iKVs6XS54IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgIHggICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsieSI6ICJZWVkiLCAieiI6ICJaWloifQorKDEgcm93KQorCitTRUxF Q1QgKGpiKS5hWzI6M10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICBiICAg ICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAiZCJdCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmFb MjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgYiAgICAgIAorLS0tLS0t LS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hWzoyXS5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgIGIgIAorLS0tLS0KKyAiYyIKKygxIHJvdykKKwor U0VMRUNUIChqYikuYVs6XS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgIGIg ICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKworU0VMRUNUICgoamIp LmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgeCAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ5IjogIllZWSIsICJ6 IjogIlpaWiJ9CisoMSByb3cpCisKIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOyAtLSBmYWlscwogRVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUK IC0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCkBAIC02MDQyLDYgKzYwODcsMjggQEAgQ1JFQVRFIFZJ RVcgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMgU0VMRUNUIChqYikuYVszXS54LnkgRlJP TSB0ZXN0X2pzb25iX2QKIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxIEFTCiAgU0VMRUNUIChqYikuYVszXS54LnkgQVMgeQogICAgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorQ1JFQVRFIFZJRVcgdjIgQVMgU0VMRUNUIChqYikuYVsz Ol0ueC55WzotMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB2MgorQ1JFQVRF IE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjIgQVMKKyBTRUxFQ1QgKGpiKS5hWzM6XS54LnlbMDon LTEnOjppbnRlZ2VyXSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxF Q1QgKiBmcm9tIHYyOworIHkgCistLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgdjMgQVMg U0VMRUNUIChqYikuYVs6M10ueC55Wy0xOl0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1xzdiB2MworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjMgQVMKKyBTRUxFQ1QgKGpi KS5hWzA6M10ueC55WyctMSc6OmludGVnZXI6XSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHYzOworICAgeSAgIAorLS0tLS0tLQorICJ5eXkiCiso MSByb3cpCisKIC0tIG1peGVkIHN5bnRheAogRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKQEAgLTYyMjYsNSArNjI5Myw1NSBAQCBTRUxF Q1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwogKDEgcm93KQogCiBEUk9QIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworLS0ganNvbmIgYXJyYXkgYWNj ZXNzIGluIHBscGdzcWwKK0RPICQkCisgICAgREVDTEFSRQorICAgICAgICBhIGpzb25iIDo9ICdb MSwyLDMsNCw1LDYsN10nOjpqc29uYjsKKyAgICBCRUdJTgorICAgICAgICBXSElMRSBhIElTIE5P VCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAgUkFJU0UgTk9USUNFICcl JywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IGFbMjpdOworICAgICAgICAgICAgRU5EIExPT1A7 CisgICAgRU5ECiskJCBMQU5HVUFHRSBwbHBnc3FsOworTk9USUNFOiAgWzEsIDIsIDMsIDQsIDUs IDYsIDddCitOT1RJQ0U6ICBbMywgNCwgNSwgNiwgN10KK05PVElDRTogIFs1LCA2LCA3XQorTk9U SUNFOiAgNworLS0ganNvbmIgZG90IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAorICAgIERFQ0xB UkUKKyAgICAgICAgYSBqc29uYiA6PSAneyIiOiA2LCAiTlUiOiBbeyIiOiBbWzNdXX0sIFs2XSwg WzJdLCAiYkNpIl0sICJhYWYiOiBbLTYsIC04XX0nOjpqc29uYjsKKyAgICBCRUdJTgorICAgICAg ICBXSElMRSBhIElTIE5PVCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAg UkFJU0UgTk9USUNFICclJywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IENPQUxFU0NFKGEuIk5V IiwgYVsyXSk7IC0tIGZhaWxzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQkIExB TkdVQUdFIHBscGdzcWw7CitOT1RJQ0U6ICB7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZd LCBbMl0sICJiQ2kiXSwgImFhZiI6IFstNiwgLThdfQorRVJST1I6ICBtaXNzaW5nIEZST00tY2xh dXNlIGVudHJ5IGZvciB0YWJsZSAiYSIKK0xJTkUgMTogYSA6PSBDT0FMRVNDRShhLiJOVSIsIGFb Ml0pCisgICAgICAgICAgICAgICAgICAgICAgXgorUVVFUlk6ICBhIDo9IENPQUxFU0NFKGEuIk5V IiwgYVsyXSkKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBs aW5lIDggYXQgYXNzaWdubWVudAorRE8gJCQKKyAgICBERUNMQVJFCisgICAgICAgIGEganNvbmIg Oj0gJ3siIjogNiwgIk5VIjogW3siIjogW1szXV19LCBbNl0sIFsyXSwgImJDaSJdLCAiYWFmIjog Wy02LCAtOF19Jzo6anNvbmI7CisgICAgQkVHSU4KKyAgICAgICAgV0hJTEUgYSBJUyBOT1QgTlVM TAorICAgICAgICAgICAgTE9PUAorICAgICAgICAgICAgICAgIFJBSVNFIE5PVElDRSAnJScsIGE7 CisgICAgICAgICAgICAgICAgYSA6PSBDT0FMRVNDRSgoYSkuIk5VIiwgYVsyXSk7IC0tIHN1Y2Nl ZWRzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitOT1RJQ0U6ICB7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZdLCBbMl0sICJiQ2kiXSwg ImFhZiI6IFstNiwgLThdfQorTk9USUNFOiAgW3siIjogW1szXV19LCBbNl0sIFsyXSwgImJDaSJd CitOT1RJQ0U6ICBbMl0KIC0tIGNsZWFuIHVwCitEUk9QIFZJRVcgdjI7CitEUk9QIFZJRVcgdjM7 CiBEUk9QIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3Fs CmluZGV4IDRkYjE2YzQ3NTYzLi5iZjlmYWY1MmNhYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbApA QCAtMTYyMyw3ICsxNjIzLDEyIEBAIFNFTEVDVCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOwogU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKIFNFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBT RUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotU0VMRUNUICgo amIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscworU0VM RUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNU IChqYikuYVsyOjNdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbOjJd LmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbOl0uYiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIGZhaWxzCiAKIC0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCkBAIC0xNjM1 LDYgKzE2NDAsMTIgQEAgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOwogLS0gdmlld3Mgc2hvdWxkIHdvcmsKIENSRUFURSBWSUVXIHRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CiBcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFURSBWSUVXIHYyIEFT IFNFTEVDVCAoamIpLmFbMzpdLngueVs6LTFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 Citcc3YgdjIKK1NFTEVDVCAqIGZyb20gdjI7CitDUkVBVEUgVklFVyB2MyBBUyBTRUxFQ1QgKGpi KS5hWzozXS54LnlbLTE6XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHYzCitT RUxFQ1QgKiBmcm9tIHYzOwogCiAtLSBtaXhlZCBzeW50YXgKIERST1AgVklFVyB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKQEAgLTE2OTUsNSArMTcwNiw0NSBAQCBTRUxFQ1QgKGpiKVsnYidd Wyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUICogZnJvbSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKIERST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjE7CiAKKy0tIGpzb25iIGFycmF5IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAor ICAgIERFQ0xBUkUKKyAgICAgICAgYSBqc29uYiA6PSAnWzEsMiwzLDQsNSw2LDddJzo6anNvbmI7 CisgICAgQkVHSU4KKyAgICAgICAgV0hJTEUgYSBJUyBOT1QgTlVMTAorICAgICAgICAgICAgTE9P UAorICAgICAgICAgICAgICAgIFJBSVNFIE5PVElDRSAnJScsIGE7CisgICAgICAgICAgICAgICAg YSA6PSBhWzI6XTsKKyAgICAgICAgICAgIEVORCBMT09QOworICAgIEVORAorJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworLS0ganNvbmIgZG90IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAorICAgIERF Q0xBUkUKKyAgICAgICAgYSBqc29uYiA6PSAneyIiOiA2LCAiTlUiOiBbeyIiOiBbWzNdXX0sIFs2 XSwgWzJdLCAiYkNpIl0sICJhYWYiOiBbLTYsIC04XX0nOjpqc29uYjsKKyAgICBCRUdJTgorICAg ICAgICBXSElMRSBhIElTIE5PVCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAg ICAgUkFJU0UgTk9USUNFICclJywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IENPQUxFU0NFKGEu Ik5VIiwgYVsyXSk7IC0tIGZhaWxzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQk IExBTkdVQUdFIHBscGdzcWw7CisKK0RPICQkCisgICAgREVDTEFSRQorICAgICAgICBhIGpzb25i IDo9ICd7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZdLCBbMl0sICJiQ2kiXSwgImFhZiI6 IFstNiwgLThdfSc6Ompzb25iOworICAgIEJFR0lOCisgICAgICAgIFdISUxFIGEgSVMgTk9UIE5V TEwKKyAgICAgICAgICAgIExPT1AKKyAgICAgICAgICAgICAgICBSQUlTRSBOT1RJQ0UgJyUnLCBh OworICAgICAgICAgICAgICAgIGEgOj0gQ09BTEVTQ0UoKGEpLiJOVSIsIGFbMl0pOyAtLSBzdWNj ZWVkcworICAgICAgICAgICAgRU5EIExPT1A7CisgICAgRU5ECiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCiAtLSBjbGVhbiB1cAorRFJPUCBWSUVXIHYyOworRFJPUCBWSUVXIHYzOwogRFJPUCBUQUJM RSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000047f36063d3c9c04 Content-Type: application/octet-stream; name="v14-0004-Extract-coerce_jsonpath_subscript.patch" Content-Disposition: attachment; filename="v14-0004-Extract-coerce_jsonpath_subscript.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mes0fgb93 RnJvbSA5Y2M0NDA5NGQ4OTY3NjhjNmZjZTBhMjUwZWZjYTY3NGYyMzI0MjkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTQgNC83XSBFeHRyYWN0IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoKQoKVGhpcyBp cyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2Ug dGhlCmFmb3JlbWVudGlvbmVkIGZ1bmN0aW9uLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBHbHVr aG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEgV2Fu ZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5z dGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEg PG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJz LmMgfCAxMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NjUgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IGEwZDM4YTBmZDgwLi5mOTQ0ZDE1NDRjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtMzIsNiArMzIsNjkgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3Bh Y2UKIAlEYXR1bQkgICAqaW5kZXg7CQkJLyogU3Vic2NyaXB0IHZhbHVlcyBpbiBEYXR1bSBmb3Jt YXQgKi8KIH0gSnNvbmJTdWJXb3Jrc3BhY2U7CiAKK3N0YXRpYyBOb2RlICoKK2NvZXJjZV9qc29u cGF0aF9zdWJzY3JpcHRfdG9faW50NF9vcl90ZXh0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq c3ViRXhwcikKK3sKKwlPaWQJCQlzdWJFeHByVHlwZSA9IGV4cHJUeXBlKHN1YkV4cHIpOworCU9p ZAkJCXRhcmdldFR5cGUgPSBJbnZhbGlkT2lkOworCisJaWYgKHN1YkV4cHJUeXBlICE9IFVOS05P V05PSUQpCisJeworCQlPaWQJCQl0YXJnZXRzWzJdID0ge0lOVDRPSUQsIFRFWFRPSUR9OworCisJ CS8qCisJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vic2NyaXB0IHR5cGVzLCBidXQg Y2FzZXMgd2hlbiBhCisJCSAqIHN1YnNjcmlwdCBjb3VsZCBiZSBjb2VyY2VkIHRvIG11bHRpcGxl IHRhcmdldCB0eXBlcyBtdXN0IGJlCisJCSAqIGF2b2lkZWQsIHNpbWlsYXIgdG8gb3ZlcmxvYWRl ZCBmdW5jdGlvbnMuIEl0IGNvdWxkIGJlIHBvc3NpYmx5CisJCSAqIGV4dGVuZCB3aXRoIGpzb25w YXRoIGluIHRoZSBmdXR1cmUuCisJCSAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykK KwkJeworCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgxLCAmc3ViRXhwclR5cGUsICZ0YXJnZXRzW2ld LCBDT0VSQ0lPTl9JTVBMSUNJVCkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBPbmUgdHlwZSBoYXMg YWxyZWFkeSBzdWNjZWVkZWQsIGl0IG1lYW5zIHRoZXJlIGFyZSB0d28KKwkJCQkgKiBjb2VyY2lv biB0YXJnZXRzIHBvc3NpYmxlLCBmYWlsdXJlLgorCQkJCSAqLworCQkJCWlmIChPaWRJc1ZhbGlk KHRhcmdldFR5cGUpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBlICVz IGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3JtYXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAorCQkJCQkJ CSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUg dHlwZSwgaW50ZWdlciBvciB0ZXh0LiIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisKKwkJCQl0YXJnZXRUeXBlID0gdGFyZ2V0 c1tpXTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIE5vIHN1aXRhYmxlIHR5cGVzIHdlcmUgZm91 bmQsIGZhaWx1cmUuCisJCSAqLworCQlpZiAoIU9pZElzVmFsaWQodGFyZ2V0VHlwZSkpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZvcm1h dF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCisJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQg bXVzdCBiZSBjb2VyY2libGUgdG8gZWl0aGVyIGludGVnZXIgb3IgdGV4dC4iKSwKKwkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKwl9CisJ ZWxzZQorCQl0YXJnZXRUeXBlID0gVEVYVE9JRDsKKworCS8qCisJICogV2Uga25vd24gZnJvbSBj YW5fY29lcmNlX3R5cGUgdGhhdCBjb2VyY2lvbiB3aWxsIHN1Y2NlZWQsIHNvCisJICogY29lcmNl X3R5cGUgY291bGQgYmUgdXNlZC4gTm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwg d2hpY2ggaXMKKwkgKiByZXF1aXJlZCB0byBoYW5kbGUgc3Vic2NyaXB0cyBvZiBkaWZmZXJlbnQg dHlwZXMsIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZAorCSAqIGZ1bmN0aW9ucy4KKwkgKi8KKwlzdWJF eHByID0gY29lcmNlX3R5cGUocHN0YXRlLAorCQkJCQkJICBzdWJFeHByLCBzdWJFeHByVHlwZSwK KwkJCQkJCSAgdGFyZ2V0VHlwZSwgLTEsCisJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAorCQkJ CQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCSAgLTEpOworCisJcmV0dXJuIHN1YkV4 cHI7Cit9CiAKIC8qCiAgKiBGaW5pc2ggcGFyc2UgYW5hbHlzaXMgb2YgYSBTdWJzY3JpcHRpbmdS ZWYgZXhwcmVzc2lvbiBmb3IgYSBqc29uYi4KQEAgLTUxLDcgKzExNCw3IEBAIGpzb25iX3N1YnNj cmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAKIAkvKgogCSAqIFRyYW5z Zm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBKc29uYiBzdWJzY3Jp cHRpbmcKLQkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5IGFuZCB0aGUgdXBw ZXIgaW5kZXguCisJICogZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMsIGxvb2sgb25seSBhdCB0aGUg dXBwZXIgaW5kZXguCiAJICovCiAJZm9yZWFjaChpZHgsICppbmRpcmVjdGlvbikKIAl7CkBAIC03 NSw3MSArMTM4LDggQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYg KnNic3JlZiwKIAogCQlpZiAoYWktPnVpZHgpCiAJCXsKLQkJCU9pZAkJCXN1YkV4cHJUeXBlID0g SW52YWxpZE9pZCwKLQkJCQkJCXRhcmdldFR5cGUgPSBVTktOT1dOT0lEOwotCiAJCQlzdWJFeHBy ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsK LQkJCXN1YkV4cHJUeXBlID0gZXhwclR5cGUoc3ViRXhwcik7Ci0KLQkJCWlmIChzdWJFeHByVHlw ZSAhPSBVTktOT1dOT0lEKQotCQkJewotCQkJCU9pZAkJCXRhcmdldHNbMl0gPSB7SU5UNE9JRCwg VEVYVE9JRH07Ci0KLQkJCQkvKgotCQkJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vi c2NyaXB0IHR5cGVzLCBidXQgY2FzZXMgd2hlbiBhCi0JCQkJICogc3Vic2NyaXB0IGNvdWxkIGJl IGNvZXJjZWQgdG8gbXVsdGlwbGUgdGFyZ2V0IHR5cGVzIG11c3QgYmUKLQkJCQkgKiBhdm9pZGVk LCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rpb25zLiBJdCBjb3VsZCBiZQotCQkJCSAqIHBv c3NpYmx5IGV4dGVuZCB3aXRoIGpzb25wYXRoIGluIHRoZSBmdXR1cmUuCi0JCQkJICovCi0JCQkJ Zm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCi0JCQkJewotCQkJCQlpZiAoY2FuX2NvZXJjZV90 eXBlKDEsICZzdWJFeHByVHlwZSwgJnRhcmdldHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKLQkJ CQkJewotCQkJCQkJLyoKLQkJCQkJCSAqIE9uZSB0eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwg aXQgbWVhbnMgdGhlcmUgYXJlCi0JCQkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0cyBwb3NzaWJs ZSwgZmFpbHVyZS4KLQkJCQkJCSAqLwotCQkJCQkJaWYgKHRhcmdldFR5cGUgIT0gVU5LTk9XTk9J RCkKLQkJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCi0JCQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBu b3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkJCSBl cnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUgdHlw ZSwgaW50ZWdlciBvciB0ZXh0LiIpLAotCQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKLQotCQkJCQkJdGFyZ2V0VHlwZSA9IHRhcmdl dHNbaV07Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIE5vIHN1aXRhYmxlIHR5cGVz IHdlcmUgZm91bmQsIGZhaWx1cmUuCi0JCQkJICovCi0JCQkJaWYgKHRhcmdldFR5cGUgPT0gVU5L Tk9XTk9JRCkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFUWVBFX01JU01BVENIKSwKLQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBu b3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkgZXJy aGludCgianNvbmIgc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGVpdGhlciBpbnRlZ2Vy IG9yIHRleHQuIiksCi0JCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2Nh dGlvbihzdWJFeHByKSkpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCQl0YXJnZXRUeXBlID0gVEVYVE9J RDsKLQotCQkJLyoKLQkJCSAqIFdlIGtub3duIGZyb20gY2FuX2NvZXJjZV90eXBlIHRoYXQgY29l cmNpb24gd2lsbCBzdWNjZWVkLCBzbwotCQkJICogY29lcmNlX3R5cGUgY291bGQgYmUgdXNlZC4g Tm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwKLQkJCSAqIHdoaWNoIGlzIHJlcXVp cmVkIHRvIGhhbmRsZSBzdWJzY3JpcHRzIG9mIGRpZmZlcmVudCB0eXBlcywKLQkJCSAqIHNpbWls YXIgdG8gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCi0JCQkgKi8KLQkJCXN1YkV4cHIgPSBjb2VyY2Vf dHlwZShwc3RhdGUsCi0JCQkJCQkJCSAgc3ViRXhwciwgc3ViRXhwclR5cGUsCi0JCQkJCQkJCSAg dGFyZ2V0VHlwZSwgLTEsCi0JCQkJCQkJCSAgQ09FUkNJT05fSU1QTElDSVQsCi0JCQkJCQkJCSAg Q09FUkNFX0lNUExJQ0lUX0NBU1QsCi0JCQkJCQkJCSAgLTEpOwotCQkJaWYgKHN1YkV4cHIgPT0g TlVMTCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBzdWJzY3JpcHQgbXVzdCBoYXZlIHRl eHQgdHlwZSIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlv bihzdWJFeHByKSkpKTsKKwkJCXN1YkV4cHIgPSBjb2VyY2VfanNvbnBhdGhfc3Vic2NyaXB0X3Rv X2ludDRfb3JfdGV4dChwc3RhdGUsIHN1YkV4cHIpOwogCQl9CiAJCWVsc2UKIAkJewotLSAKMi4z OS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000047f36063d3c9c04--