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 1tfZij-003QbC-QB for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Feb 2025 07:21: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 1tfZii-00CSgK-Tc for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Feb 2025 07:21:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tfZii-00CSgC-2a for pgsql-hackers@lists.postgresql.org; Wed, 05 Feb 2025 07:21:12 +0000 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tfZie-003GsL-1F for pgsql-hackers@postgresql.org; Wed, 05 Feb 2025 07:21:11 +0000 Received: by mail-pl1-x644.google.com with SMTP id d9443c01a7336-2165448243fso32536405ad.1 for ; Tue, 04 Feb 2025 23:21:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738740067; x=1739344867; 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=lUb+DEI6oNTt0C/BqVHak+0x+ap3qhaU7jKp34/hEn8=; b=eLsEvfneoo9nqqAENycfmpE6wLcVKEmgUkoSjSPHLz0xwINoaVi4lrFZkuwabhpRtY tWePprQvfChZkqlrH9//5GqZickFejDnl1Ty/W5H2TFglITUfDubuaoR+8h8vNJR5kc+ fAf0s9MzCUPcTubEL+om1KNZJyM73FQ57Vbm4+qq8d9JKUllM4t6xja5VV4977yfskff 1DXcdiQpqZuZQBTdJjS3qMO1SldOmZ13YPW4D5VptMhVeyM9GKZmQGkJvBSXd56oXmaL 11sToIhJOD4RvnvB9shO7e9SEiXfx/URExQk1SvXmNL2+/7CwyOA9wo7aBMcyWuCGf1R PZ3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738740067; x=1739344867; 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=lUb+DEI6oNTt0C/BqVHak+0x+ap3qhaU7jKp34/hEn8=; b=kxhdGC5xTw3rGNX6kwja6lO7e6Js+4ysDazE8g5n9SDLU6q+QWj5txYqiBs34E5WDt Qy231xwCw+YK4tmsluUydcb2B+iS+6BLBgXOpApHGcFGmsG6wis7yYuNi537X2gy4cXF pqD+p+xOdH2NaVX9Pu6I1y5f6RsUwAx4I1txqsje/ZBMH+OSuPu1bBoNdZ/ZSeFicg+H V12wuhIsZtTYrjWkTcMohpt5sRSSR51AAve0uS5X/CpvvjyUH9lMHxKiemVKOBhgWfMd pkAHpH+Ke0PNPMGIC8eujdxolJpnyCSsO0mzKaPleIZuk3hXWwuA0RwnVXuHHH5i/PXU xPrw== X-Forwarded-Encrypted: i=1; AJvYcCX9KQan+NBjXThLVwikGv4o2eRXeTgDyquzu/WvDQM5AcBKh2u24MoB0lu5AtLdOajzGee1npACUggDln4n@postgresql.org X-Gm-Message-State: AOJu0YxtffryGG9GLe5iG2v8CppFYDljxVjVIR/tqMP2gcab7CIF4qor MGfBiwxTZvYo/9DETQM54OTfsIXNutjdpMdPOWxZgyMkwpzG9e5SwTwDoT+mNUwiGLisLMyMj49 OM7VSkE7Y1KOkbPyfI5JqRj8g99w= X-Gm-Gg: ASbGncuu2qSD0mP0rMsUivXf/DlS64j2HWiO+Uz1XSuLk+h36p0koesBhL5uW4x/KN+ BmpjY9DMQG3U/y8hC6mYqOUuhV/p9KG6ID8Yo3cLYMo9FrnwQj8PXtIobXK82QboSJ3EpNIVG/h nsRltmtcv/Ktnq8sgZ4L0j/Qr2IX4B4g== X-Google-Smtp-Source: AGHT+IE2/hi2N8yvHe5aEcJ8YVVSHyE/33Nav1MAqENN+7Klvp2+2bI2zDvi5kVJ/CbKxyJ6okFob+qi5vnllWyIBv0= X-Received: by 2002:a05:6a00:44c4:b0:725:db34:6a8c with SMTP id d2e1a72fcca58-730351428b2mr3347497b3a.13.1738740066774; Tue, 04 Feb 2025 23:21:06 -0800 (PST) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> In-Reply-To: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> From: Alexandra Wang Date: Wed, 5 Feb 2025 01:20:30 -0600 X-Gm-Features: AWEUYZm8of6vXJsSF9UXTsrUmLIu4GvD0Wg3RPWrpLopdLF2HDL6newNgVMzGvU Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: Peter Eisentraut Cc: Andrew Dunstan , Nikita Glukhov , PostgreSQL Hackers , "David E. Wheeler" , jian he Content-Type: multipart/mixed; boundary="00000000000009b350062d5ff81f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000009b350062d5ff81f Content-Type: multipart/alternative; boundary="00000000000009b34f062d5ff81d" --00000000000009b34f062d5ff81d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi hackers, On Tue, Nov 26, 2024 at 3:12=E2=80=AFAM Peter Eisentraut wrote: > On 21.11.24 23:46, Andrew Dunstan wrote: > >> Questions: > >> > >> 1. Since Nikita=E2=80=99s patches did not address the JSON data type, = and JSON > >> currently does not support subscripting, should we limit the initial > >> feature set to JSONB dot-notation for now? In other words, if we aim > >> to fully support JSON simplified accessors for the plain JSON type, > >> should we handle support for plain JSON subscripting as a follow-up > >> effort? > >> > >> 2. I have yet to have a more thorough review of Nikita=E2=80=99s patch= es. > >> One area I am not familiar with is the hstore-related changes. How > >> relevant is hstore to the JSON simplified accessor? > >> > > > > We can't change the way the "->" operator works, as there could well be > > uses of it in the field that rely on its current behaviour. But maybe w= e > > could invent a new operator which is compliant with the standard > > semantics for dot access, and call that. Then we'd get the best > > performance, and also we might be able to implement it for the plain > > JSON type. If that proves not possible we can think about not > > implementing for plain JSON, but I'd rather not go there until we have > to. > > Yes, I think writing a custom operator that is similar to "->" but has > the required semantics is the best way forward. (Maybe it can be just a > function?) > > > I don't think we should be including hstore changes here - we should > > just be aiming at implementing the standard for JSON access. hstore > > changes if any should be a separate feature. The aren't relevant to JSO= N > > access, although they might use some of the same infrastructure, > > depending on implementation. > > In a future version, the operator/function mentioned above could be a > catalogued property of a type, similar to typsubscript. Then you could > also apply this to other types. But let's leave that for later. > > If I understand it correctly, Nikita's patch uses the typsubscript > support function to handle both bracket subscripting and dot notation. > I'm not sure if it's right to mix these two together. Maybe I didn't > understand that correctly. > I=E2=80=99ve been working on a custom operator-like function to support dot notation in lax mode for JSONB. However, I realized this approach has the following drawbacks: 1. Handling both dot notation and bracket subscripting together becomes complicated, as we still need to consider jsonb=E2=80=99s existing type subscript functions. 2. Chaining N dot-access operators causes multiple unnecessary deserialization/serialization cycles: for each operator call, the source jsonb binary is converted to an in-memory JsonbValue, then the relevant field is extracted, and finally it=E2=80=99s turned back into a binary jsonb object. This hurts performance. A direct use of the jsonpath functions API seems more efficient. 3. Correctly applying lax mode requires different handling for the first, middle, and last operators, which adds further complexity. Because of these issues, I took a closer look at Nikita=E2=80=99s patch. Hi= s solution generalizes the existing jsonb typesubscript support function to handle both bracket subscripting and dot notation. It achieves this by translating dot notation into a jsonpath expression during transformation, and then calls JsonPathQuery at execution. Overall, I find this approach more efficient for chained accessors and more flexible for future enhancements. I attached a minimized version of Nikita=E2=80=99s patch (v7): - The first three patches are refactoring steps that could be squashed if preferred. - The last two patches implement dot notation and wildcard access, respectively. Changes in this new version: - Removed code handling hstore, as Andrew pointed out it isn=E2=80=99t directly relevant to JSON access and should be handled separately. - Split tests for dot notation and wildcard access. - Dropped the two patches in v6 that enabled non-parenthesized column references (per Nikita=E2=80=99s suggestion, this will need its own separ= ate discussion). For reference, I=E2=80=99ve also attached the operator-like function approa= ch in 0001-WIP-Operator-approach-JSONB-dot-notation.txt. I=E2=80=99d appreciate any feedback and thoughts! Best, Alex --00000000000009b34f062d5ff81d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi hackers,

On= Tue, Nov 26, 2024 at 3:12=E2=80=AFAM Peter Eisentraut <peter@eisentraut.org> wrot= e:
On 21.11.24 2= 3:46, Andrew Dunstan wrote:
>> Questions:
>>
>> 1. Since Nikita=E2=80=99s patches did not address the JSON data ty= pe, and JSON
>> currently does not support subscripting, should we limit the initi= al
>> feature set to JSONB dot-notation for now? In other words, if we a= im
>> to fully support JSON simplified accessors for the plain JSON type= ,
>> should we handle support for plain JSON subscripting as a follow-u= p
>> effort?
>>
>> 2. I have yet to have a more thorough review of Nikita=E2=80=99s p= atches.
>> One area I am not familiar with is the hstore-related changes. How=
>> relevant is hstore to the JSON simplified accessor?
>>
>
> We can't change the way the "->" operator works, as t= here could well be
> uses of it in the field that rely on its current behaviour. But maybe = we
> could invent a new operator which is compliant with the standard
> semantics for dot access, and call that. Then we'd get the best > performance, and also we might be able to implement it for the plain <= br> > JSON type. If that proves not possible we can think about not
> implementing for plain JSON, but I'd rather not go there until we = have to.

Yes, I think writing a custom operator that is similar to "->"= but has
the required semantics is the best way forward.=C2=A0 (Maybe it can be just= a
function?)

> I don't think we should be including hstore changes here - we shou= ld
> just be aiming at implementing the standard for JSON access. hstore > changes if any should be a separate feature. The aren't relevant t= o JSON
> access, although they might use some of the same infrastructure,
> depending on implementation.

In a future version, the operator/function mentioned above could be a
catalogued property of a type, similar to typsubscript.=C2=A0 Then you coul= d
also apply this to other types.=C2=A0 But let's leave that for later.
If I understand it correctly, Nikita's patch uses the typsubscript
support function to handle both bracket subscripting and dot notation.
I'm not sure if it's right to mix these two together.=C2=A0 Maybe I= didn't
understand that correctly.

I=E2=80=99ve= been working on a custom operator-like function to support dot
notation= in lax mode for JSONB. However, I realized this approach has
the follow= ing drawbacks:

1. Handling both dot notation and bracket subscriptin= g together
becomes complicated, as we still need to consider jsonb=E2=80= =99s existing
type subscript functions.

2. Chaining N dot-= access operators causes multiple unnecessary
deserialization/serializati= on cycles: for each operator call, the source
jsonb binary is converted = to an in-memory JsonbValue, then the
relevant field is extracted, and fi= nally it=E2=80=99s turned back into a
binary jsonb object. This hurts pe= rformance. A direct use of the
jsonpath functions API seems more efficie= nt.

3. Correctly applying lax mode requires different handlin= g for the
first, middle, and last operators, which adds further complexi= ty.

Because of these issues, I took a closer look at Nikita=E2=80=99= s patch. His
solution generalizes the existing jsonb typesubscript suppo= rt function
to handle both bracket subscripting and dot notation. It ach= ieves this
by translating dot notation into a jsonpath expression during=
transformation, and then calls JsonPathQuery at execution.
Overall, = I find this approach more efficient for chained accessors and
more flexi= ble for future enhancements.

I attached a minimized version of Nikit= a=E2=80=99s patch (v7):

- The first three patches are refactoring st= eps that could be squashed
=C2=A0 if preferred.
- The last two patche= s implement dot notation and wildcard access,
=C2=A0 respectively.
Changes in this new version:
- Removed code handling hstore, as Andrew= pointed out it isn=E2=80=99t
=C2=A0 directly relevant to JSON access an= d should be handled separately.
- Split tests for dot notation and wildc= ard access.
- Dropped the two patches in v6 that enabled non-parenthesiz= ed column
=C2=A0 references (per Nikita=E2=80=99s suggestion, this will = need its own separate
discussion).

For reference, I=E2=80=99ve al= so attached the operator-like function approach
in 0001-WIP-Operator-app= roach-JSONB-dot-notation.txt.

I=E2=80=99d appreciate any feedback an= d thoughts!

Best,
Alex

--00000000000009b34f062d5ff81d-- --00000000000009b350062d5ff81f Content-Type: text/plain; charset="UTF-8"; name="0001-WIP-Operator-apporach-JSONB-dot-notation.txt" Content-Disposition: attachment; filename="0001-WIP-Operator-apporach-JSONB-dot-notation.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6rkc4dl5 RnJvbSA1NjI0MTg5NTU3OGUwZDE2ZDY2NTE4Yjg0NzAwMDU3NzljZDIxMzJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxNCBKYW4gMjAyNSAxNToxNDozNSAtMDYwMApTdWJqZWN0OiBb UEFUQ0hdIFtXSVBdIE9wZXJhdG9yIGFwcG9yYWNoOiBKU09OQiBkb3Qgbm90YXRpb24KTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkltcGxlbWVudCBhbiBvcGVyYXRvci1saWtlIGZ1 bmN0aW9uIGBqc29uYl9vYmplY3RfZmllbGRfZG90KClgIHRoYXQKYWNjZXNzZXMgSlNPTkIgb2Jq ZWN0IGZpZWxkcyBvbmUgYXQgYSB0aW1lLgoKQXJyYXkgdW53cmFwcGluZyAobGF4IG1vZGUpIGlz IGhhbmRsZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uCndoZXRoZXIgdGhlIG9wZXJhdGlvbiBp cyB0aGUgZmlyc3QgaW4gYSBjaGFpbiBvZiBpbmRpcmVjdGlvbnMuClNpbWlsYXJseSwgY29uZGl0 aW9uYWwgd3JhcHBpbmcgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24Kd2hldGhl ciB0aGUgb3BlcmF0aW9uIGlzIHRoZSBsYXN0IGluIHRoYXQgY2hhaW4uCgpUT0RPOgotIEN1cnJl bnRseSwgdGhpcyBjb21taXQgbWlnaHQgZ2VuZXJhdGUgaW5jb3JyZWN0IHJlc3VsdHMgd2hlbiBt aXhpbmcKICBkb3Qgbm90YXRpb24gYWNjZXNzIHdpdGggZXhpc3Rpbmcgc3Vic2NyaXB0aW5nIGFj Y2Vzcy4gRml4aW5nIHRoaXMKc2hvdWxkIG5vdCBiZSBkaWZmaWN1bHQuIEhvd2V2ZXIsIHBlcmZv cm1hbmNlIGNvbXBhcmlzb25zIHdpdGggdGhlCmFsdGVybmF0aXZlIGFwcHJvYWNoIGhhdmUgbGVk IHRvIHBvc3Rwb25pbmcgdGhlIGZpeC4KLSBJZGVhbGx5LCB0aGUgZnVuY3Rpb24gd291bGQgdXNl IEpzb25QYXRoIG9yIGEgcGlwZWxpbmVkIGNoYWluIG9mCiAgb3BlcmF0b3JzIGluc3RlYWQgb2Yg aGFuZGxpbmcgZWFjaCBkb3QgYWNjZXNzCmluZGl2aWR1YWxseeKAlGVzc2VudGlhbGx5IHdoYXQg SnNvblBhdGhRdWVyeSgpIGRvZXPigJRsZWFkaW5nIHRvIHRoZQphbHRlcm5hdGl2ZSBhcHByb2Fj aC4KClBlcmZvcm1hbmNlIGNvbXBhcmlzb24gd2l0aCB0aGUgZ2VuZXJpYyBzdWJzY3JpcHRpbmcg YXBwcm9hY2g6CgotLSBzZXR1cDoKY3JlYXRlIHRhYmxlIHRibChpZCBpbnQsIGNvbDEganNvbmIp OwppbnNlcnQgaW50byB0Ymwgc2VsZWN0IGksICd7IngiOiJ2eCIsICJ5IjpbeyJhIjpbMSwyLDNd fSwgeyJiIjpbMSwgMiwKeyJqIjoidmoifV19XX0nIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDAwMClpOwoKLS0gcXVlcnkgMTogY2hhaW5lZCBkb3QgYWNjZXNzClNFTEVDVCBpZCwgKGNvbDEp LnguYi5qIEFTIGpzb25iX29wZXJhdG9yIEZST00gdGJsOwoKLS0gcGdiZW5jaCAtbiAtZiA8cXVl cnkgMT4uc3FsIHRlc3QgLVQxMDAKClRoaXMgcGF0Y2g6Cm51bWJlciBvZiB0cmFuc2FjdGlvbnMg YWN0dWFsbHkgcHJvY2Vzc2VkOiA2NjIwCmxhdGVuY3kgYXZlcmFnZSA9IDE1LjEwNyBtcwp0cHMg PSA2Ni4xOTMwMTcgKHdpdGhvdXQgaW5pdGlhbCBjb25uZWN0aW9uIHRpbWUpCgpOaWtpdGEncyBw YXRjaCAoZ2VuZXJpYyBzdWJzY3JpcHRpbmcgdXNpbmcganNvbl9xdWVyeSgpKToKbnVtYmVyIG9m IHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDgwMzYKbGF0ZW5jeSBhdmVyYWdlID0g MTIuNDQ1IG1zCnRwcyA9IDgwLjM1MjA3NSAod2l0aG91dCBpbml0aWFsIGNvbm5lY3Rpb24gdGlt ZSkKCkl0IGlzIGV4cGVjdGVkIHRoYXQgdGhpcyBwYXRjaCBpcyBsZXNzIHBlcmZvcm1hbnQgYmVj YXVzZSBpdCBjdXJyZW50bHkKZGVzZXJpYWxpemVzIGFuZCBzZXJpYWxpemVzIHRoZSBuZXN0ZWQg SlNPTkIgYmluYXJ5IHRocmVlIHRpbWVzIChvbmNlCmZvciBlYWNoIGludm9jYXRpb24gb2YgdGhl IG9wZXJhdG9yLWxpa2UgZnVuY3Rpb24pLgoKLS0gcXVlcnkgMjogc2luZ2xlIGRvdCBhY2Nlc3MK U0VMRUNUIGlkLCAoY29sMSkueCBBUyBqc29uYl9vcGVyYXRvciBGUk9NIHRibDsKCi0tIHBnYmVu Y2ggLW4gLWYgPHF1ZXJ5IDI+LnNxbCB0ZXN0IC1UMTAwCgpUaGlzIHBhdGNoOgpudW1iZXIgb2Yg dHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogNTY1MwpsYXRlbmN5IGF2ZXJhZ2UgPSAx Ny42OTEgbXMKdHBzID0gNTYuNTI0NDk2ICh3aXRob3V0IGluaXRpYWwgY29ubmVjdGlvbiB0aW1l KQoKTmlraXRhJ3MgcGF0Y2g6Cm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vz c2VkOiA0OTg5CmxhdGVuY3kgYXZlcmFnZSA9IDIwLjA0NCBtcwp0cHMgPSA0OS44OTAxODkgKHdp dGhvdXQgaW5pdGlhbCBjb25uZWN0aW9uIHRpbWUpCgpUaGlzIHBhdGNoIHBlcmZvcm1zIHNsaWdo dGx5IGJldHRlciBmb3Igc2luZ2xlIGRvdCBhY2Nlc3NlcywgdGhvdWdoCnRoZSBtYXJnaW4gaXMg bm90IHNpZ25pZmljYW50LgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAg IHwgIDMzICsrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgIHwgIDM2ICsr KysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgIHwgMjYyICsrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0IHwg ICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICB8ICAgNCArCiBzcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfZnVuYy5oICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iLm91dCB8IDEwMyArKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvanNvbmIuc3FsICAgICAgfCAgNDcgKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNDgxIGluc2Vy dGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggYmFk MWRmNzMyZWEuLmUzYjY2MjY5ODNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTQ0MCw2 ICs0NDAsOCBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5k aXJlY3Rpb24gKmluZCkKIAlMaXN0CSAgICpzdWJzY3JpcHRzID0gTklMOwogCWludAkJCWxvY2F0 aW9uID0gZXhwckxvY2F0aW9uKHJlc3VsdCk7CiAJTGlzdENlbGwgICAqaTsKKwlib29sCQlqc29u X2FjY2Vzc29yX2NoYWluX2ZpcnN0ID0gZmFsc2U7CisJYm9vbAkJanNvbl9hY2Nlc3Nvcl9jaGFp bl9sYXN0ID0gZmFsc2U7CiAKIAkvKgogCSAqIFdlIGhhdmUgdG8gc3BsaXQgYW55IGZpZWxkLXNl bGVjdGlvbiBvcGVyYXRpb25zIGFwYXJ0IGZyb20KQEAgLTQ2Miw2ICs0NjQsOCBAQCB0cmFuc2Zv cm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJ ZWxzZQogCQl7CiAJCQlOb2RlCSAgICpuZXdyZXN1bHQ7CisJCQlPaWQJCQlyZXN1bHRfdHlwaWQ7 CisJCQlPaWQJCQlyZXN1bHRfYmFzZXR5cGlkOwogCiAJCQlBc3NlcnQoSXNBKG4sIFN0cmluZykp OwogCkBAIC00NzUsMTMgKzQ3OSwyOCBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsK IAkJCXN1YnNjcmlwdHMgPSBOSUw7CiAKLQkJCW5ld3Jlc3VsdCA9IFBhcnNlRnVuY09yQ29sdW1u KHBzdGF0ZSwKLQkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCi0JCQkJCQkJCQkJICBsaXN0X21h a2UxKHJlc3VsdCksCi0JCQkJCQkJCQkJICBsYXN0X3NyZiwKLQkJCQkJCQkJCQkgIE5VTEwsCi0J CQkJCQkJCQkJICBmYWxzZSwKLQkJCQkJCQkJCQkgIGxvY2F0aW9uKTsKKwkJCXJlc3VsdF90eXBp ZCA9IGV4cHJUeXBlKHJlc3VsdCk7CisJCQlyZXN1bHRfYmFzZXR5cGlkID0gKHJlc3VsdF90eXBp ZCA9PSBKU09OT0lEIHx8IHJlc3VsdF90eXBpZCA9PSBKU09OQk9JRCkgPworCQkJCXJlc3VsdF90 eXBpZCA6IGdldEJhc2VUeXBlKHJlc3VsdF90eXBpZCk7CisKKwkJCWlmIChyZXN1bHRfYmFzZXR5 cGlkID09IEpTT05CT0lEKQorCQkJeworCQkJCWpzb25fYWNjZXNzb3JfY2hhaW5fZmlyc3QgPSAo aSA9PSBsaXN0X2hlYWQoaW5kLT5pbmRpcmVjdGlvbikpOworCQkJCWlmIChsbmV4dChpbmQtPmlu ZGlyZWN0aW9uLCBpKSA9PSBOVUxMKQorCQkJCQlqc29uX2FjY2Vzc29yX2NoYWluX2xhc3QgPSB0 cnVlOworCQkJCW5ld3Jlc3VsdCA9IFBhcnNlSnNvbmJTaW1wbGlmaWVkQWNjZXNzb3JPYmplY3RG aWVsZChwc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJCXN0clZhbChuKSwKKwkJCQkJCQkJCQkJCQkJ CQkJcmVzdWx0LAorCQkJCQkJCQkJCQkJCQkJCQlsb2NhdGlvbiwgcmVzdWx0X2Jhc2V0eXBpZCwg anNvbl9hY2Nlc3Nvcl9jaGFpbl9maXJzdCwganNvbl9hY2Nlc3Nvcl9jaGFpbl9sYXN0KTsKKwkJ CX0KKwkJCWVsc2UKKwkJCQluZXdyZXN1bHQgPSBQYXJzZUZ1bmNPckNvbHVtbihwc3RhdGUsCisJ CQkJCQkJCQkJCSAgbGlzdF9tYWtlMShuKSwKKwkJCQkJCQkJCQkJICBsaXN0X21ha2UxKHJlc3Vs dCksCisJCQkJCQkJCQkJCSAgbGFzdF9zcmYsCisJCQkJCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkJ CQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJICBsb2NhdGlvbik7CiAJCQlpZiAobmV3cmVzdWx0ID09 IE5VTEwpCiAJCQkJdW5rbm93bl9hdHRyaWJ1dGUocHN0YXRlLCByZXN1bHQsIHN0clZhbChuKSwg bG9jYXRpb24pOwogCQkJcmVzdWx0ID0gbmV3cmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMK aW5kZXggNTgzYmJiZjIzMmYuLmRiYTJhNjBmYWRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMK QEAgLTE5MDIsNiArMTkwMiw0MiBAQCBGdW5jTmFtZUFzVHlwZShMaXN0ICpmdW5jbmFtZSkKIAly ZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogUGFyc2VKc29uYlNpbXBsaWZpZWRBY2Nlc3Nvck9i amVjdEZpZWxkIC0KKyAqCSAgaGFuZGxlcyBmdW5jdGlvbiBjYWxscyB3aXRoIGEgc2luZ2xlIGFy Z3VtZW50IHRoYXQgaXMgb2YganNvbiB0eXBlLgorICoJICBJZiB0aGUgZnVuY3Rpb24gY2FsbCBp cyBhY3R1YWxseSBhIGNvbHVtbiBwcm9qZWN0aW9uLCByZXR1cm4gYSBzdWl0YWJseQorICoJICB0 cmFuc2Zvcm1lZCBleHByZXNzaW9uIHRyZWUuICBJZiBub3QsIHJldHVybiBOVUxMLgorICovCitO b2RlICoKK1BhcnNlSnNvbmJTaW1wbGlmaWVkQWNjZXNzb3JPYmplY3RGaWVsZChQYXJzZVN0YXRl ICpwc3RhdGUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBOb2RlICpmaXJzdF9hcmcsIGludCBsb2Nh dGlvbiwKKwkJCQkJCQkJCQlPaWQgYmFzZXR5cGlkLCBib29sIGZpcnN0X29wLCBib29sIGxhc3Rf b3ApCit7CisJRnVuY0V4cHIgICAqcmVzdWx0OworCU5vZGUJICAgKnJleHByOworCisJaWYgKGJh c2V0eXBpZCAhPSBKU09OQk9JRCkKKwkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHR5cGUgT0lE OiAldSIsIGJhc2V0eXBpZCk7CisKKwlyZXhwciA9IChOb2RlICopIG1ha2VDb25zdCgKKwkJCQkJ CQkgICBURVhUT0lELAorCQkJCQkJCSAgIC0xLAorCQkJCQkJCSAgIEludmFsaWRPaWQsCisJCQkJ CQkJICAgLTEsCisJCQkJCQkJICAgQ1N0cmluZ0dldFRleHREYXR1bShmdW5jbmFtZSksCisJCQkJ CQkJICAgZmFsc2UsCisJCQkJCQkJICAgZmFsc2UpOworCXJlc3VsdCA9IG1ha2VGdW5jRXhwcig0 MTAwLAorCQkJCQkJICBKU09OQk9JRCwKKwkJCQkJCSAgbGlzdF9tYWtlNChmaXJzdF9hcmcsIHJl eHByLAorCQkJCQkJCQkJIG1ha2VCb29sQ29uc3QoZmlyc3Rfb3AsIGZhbHNlKSwKKwkJCQkJCQkJ CSBtYWtlQm9vbENvbnN0KGxhc3Rfb3AsIGZhbHNlKSksCisJCQkJCQkgIEludmFsaWRPaWQsCisJ CQkJCQkgIEludmFsaWRPaWQsCisJCQkJCQkgIENPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKworCXJl dHVybiAoTm9kZSAqKSByZXN1bHQ7Cit9CisKIC8qCiAgKiBQYXJzZUNvbXBsZXhQcm9qZWN0aW9u IC0KICAqCSAgaGFuZGxlcyBmdW5jdGlvbiBjYWxscyB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IHRo YXQgaXMgb2YgY29tcGxleCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCmluZGV4IGMy ZTkwZjFhM2JmLi5hMzJhZWYzYmZhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAt ODc5LDYgKzg3OSwyNjggQEAganNvbmJfb2JqZWN0X2ZpZWxkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UEdfUkVUVVJOX05VTEwoKTsKIH0KIAorc3RhdGljIHZvaWQKK2V4cGFuZF9qYnZCaW5hcnlfaW5f bWVtb3J5KGNvbnN0IEpzb25iVmFsdWUgKmJpbmFyeVZhbCwgSnNvbmJWYWx1ZSAqZXhwYW5kZWRW YWwpCit7CisJQXNzZXJ0KGJpbmFyeVZhbC0+dHlwZSA9PSBqYnZCaW5hcnkpOworCUpzb25iQ29u dGFpbmVyICpjb250YWluZXIgPSAoSnNvbmJDb250YWluZXIgKikgYmluYXJ5VmFsLT52YWwuYmlu YXJ5LmRhdGE7CisJSnNvbmJJdGVyYXRvciAqaXQ7CisJSnNvbmJWYWx1ZQl2OworCUpzb25iSXRl cmF0b3JUb2tlbiB0b2tlbjsKKworCWl0ID0gSnNvbmJJdGVyYXRvckluaXQoY29udGFpbmVyKTsK Kwl0b2tlbiA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnYsIGZhbHNlKTsKKworCWlmICh0b2tl biA9PSBXSkJfQkVHSU5fT0JKRUNUKQorCXsKKwkJLyoKKwkJICogV2UnbGwgcmVhZCBhbGwga2V5 cy92YWx1ZXMgdW50aWwgV0pCX0VORF9PQkpFQ1QgYW5kIGJ1aWxkCisJCSAqIGV4cGFuZGVkVmFs LT50eXBlID0gamJ2T2JqZWN0LgorCQkgKi8KKwkJTGlzdAkgICAqa2V5dmFscyA9IE5JTDsKKwor CQl3aGlsZSAoKHRva2VuID0gSnNvbmJJdGVyYXRvck5leHQoJml0LCAmdiwgZmFsc2UpKSAhPSBX SkJfRU5EX09CSkVDVCkKKwkJeworCQkJaWYgKHRva2VuID09IFdKQl9LRVkpCisJCQl7CisJCQkJ SnNvbmJWYWx1ZQlrZXk7CisKKwkJCQlrZXkgPSB2OworCQkJCXRva2VuID0gSnNvbmJJdGVyYXRv ck5leHQoJml0LCAmdiwgdHJ1ZSk7CisJCQkJaWYgKHRva2VuID09IFdKQl9WQUxVRSkKKwkJCQl7 CisJCQkJCUpzb25iVmFsdWUJdmFsOworCQkJCQlKc29uYlZhbHVlICpvYmpQYWlyOworCisJCQkJ CWlmICh2LnR5cGUgPT0gamJ2QmluYXJ5KQorCQkJCQl7CisJCQkJCQkvKiBSZWN1cnNpdmVseSBl eHBhbmQgbmVzdGVkIG9iamVjdHMvYXJyYXlzLiAqLworCQkJCQkJZXhwYW5kX2pidkJpbmFyeV9p bl9tZW1vcnkoJnYsICZ2YWwpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLyog U2NhbGFyIG9yIGFscmVhZHkgamJ2T2JqZWN0L2pidkFycmF5LiBDb3B5IGFzLWlzLiAqLworCQkJ CQkJdmFsID0gdjsKKwkJCQkJfQorCisJCQkJCS8qCisJCQkJCSAqIEJ1aWxkIGEgc21hbGwgcGFp ciAoa2V5LCB2YWx1ZSkuIFdlJ2xsIHN0b3JlIHRoZW0gaW4gYQorCQkJCQkgKiBsaXN0LgorCQkJ CQkgKi8KKwkJCQkJb2JqUGFpciA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkgKiAyKTsKKwkJ CQkJb2JqUGFpclswXSA9IGtleTsKKwkJCQkJb2JqUGFpclsxXSA9IHZhbDsKKwkJCQkJa2V5dmFs cyA9IGxhcHBlbmQoa2V5dmFscywgb2JqUGFpcik7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLyog Tm93IGNvbnZlcnQgb3VyIGtleXZhbHMgbGlzdCBpbnRvIGEgamJ2T2JqZWN0LiAqLworCQlpbnQJ CQluUGFpcnMgPSBsaXN0X2xlbmd0aChrZXl2YWxzKTsKKworCQlleHBhbmRlZFZhbC0+dHlwZSA9 IGpidk9iamVjdDsKKwkJZXhwYW5kZWRWYWwtPnZhbC5vYmplY3QublBhaXJzID0gblBhaXJzOwor CQlleHBhbmRlZFZhbC0+dmFsLm9iamVjdC5wYWlycyA9IHBhbGxvYyhzaXplb2YoSnNvbmJQYWly KSAqIG5QYWlycyk7CisKKwkJeworCQkJaW50CQkJaSA9IDA7CisJCQlMaXN0Q2VsbCAgICpsYzsK KworCQkJZm9yZWFjaChsYywga2V5dmFscykKKwkJCXsKKwkJCQlKc29uYlZhbHVlICprdiA9IChK c29uYlZhbHVlICopIGxmaXJzdChsYyk7CisKKwkJCQkvKiBrdlswXSA9IGtleSwga3ZbMV0gPSB2 YWx1ZSAqLworCisJCQkJZXhwYW5kZWRWYWwtPnZhbC5vYmplY3QucGFpcnNbaV0ua2V5ID0ga3Zb MF07CisJCQkJZXhwYW5kZWRWYWwtPnZhbC5vYmplY3QucGFpcnNbaV0udmFsdWUgPSBrdlsxXTsK KwkJCQlleHBhbmRlZFZhbC0+dmFsLm9iamVjdC5wYWlyc1tpXS5vcmRlciA9IGk7CisJCQkJaSsr OworCQkJfQorCQl9CisJfQorCWVsc2UgaWYgKHRva2VuID09IFdKQl9CRUdJTl9BUlJBWSkKKwl7 CisJCS8qCisJCSAqIFdlJ2xsIHJlYWQgYXJyYXkgZWxlbXMgdW50aWwgV0pCX0VORF9BUlJBWSBh bmQgYnVpbGQKKwkJICogZXhwYW5kZWRWYWwtPnR5cGUgPSBqYnZBcnJheS4KKwkJICovCisJCUxp c3QJICAgKmVsZW1zID0gTklMOworCisJCXdoaWxlICgodG9rZW4gPSBKc29uYkl0ZXJhdG9yTmV4 dCgmaXQsICZ2LCB0cnVlKSkgIT0gV0pCX0VORF9BUlJBWSkKKwkJeworCQkJaWYgKHRva2VuID09 IFdKQl9FTEVNKQorCQkJeworCQkJCS8qIElmIGl0J3MgamJ2QmluYXJ5LCByZWN1cnNpdmVseSBl eHBhbmQgYWdhaW4uICovCisJCQkJSnNvbmJWYWx1ZQl2YWw7CisKKwkJCQlpZiAodi50eXBlID09 IGpidkJpbmFyeSkKKwkJCQl7CisJCQkJCWV4cGFuZF9qYnZCaW5hcnlfaW5fbWVtb3J5KCZ2LCAm dmFsKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJdmFsID0gdjsKKwkJCQl9CisJCQkJ SnNvbmJWYWx1ZSAqZWxlbUNvcHkgPSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKTsKKworCQkJ CSplbGVtQ29weSA9IHZhbDsKKwkJCQllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGVsZW1Db3B5KTsK KwkJCX0KKwkJfQorCisJCWV4cGFuZGVkVmFsLT50eXBlID0gamJ2QXJyYXk7CisJCWV4cGFuZGVk VmFsLT52YWwuYXJyYXkubkVsZW1zID0gbGlzdF9sZW5ndGgoZWxlbXMpOworCQlleHBhbmRlZFZh bC0+dmFsLmFycmF5LnJhd1NjYWxhciA9IGZhbHNlOworCQlleHBhbmRlZFZhbC0+dmFsLmFycmF5 LmVsZW1zID0gcGFsbG9jKHNpemVvZihKc29uYlZhbHVlKSAqIGV4cGFuZGVkVmFsLT52YWwuYXJy YXkubkVsZW1zKTsKKworCQl7CisJCQlpbnQJCQlpID0gMDsKKwkJCUxpc3RDZWxsICAgKmxjOwor CisJCQlmb3JlYWNoKGxjLCBlbGVtcykKKwkJCXsKKwkJCQlKc29uYlZhbHVlICp2cHRyID0gKEpz b25iVmFsdWUgKikgbGZpcnN0KGxjKTsKKworCQkJCWV4cGFuZGVkVmFsLT52YWwuYXJyYXkuZWxl bXNbaSsrXSA9ICp2cHRyOworCQkJfQorCQl9CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFBv c3NpYmx5IGEgc2NhbGFyIGNvbnRhaW5lciAoV0pCX0VMRU0gb3IgV0pCX1ZBTFVFIHdpdGggamJ2 TnVtZXJpYywKKwkJICogamJ2U3RyaW5nLCBldGMuKS4gSWYgdGhpcyBjb250YWluZXIgdHJ1bHkg b25seSBoYXMgb25lIHNjYWxhciwKKwkJICogdG9rZW4gbWlnaHQgYmUgV0pCX0VMRU0gb3Igc2lt aWxhci4gRm9yIHNpbXBsaWNpdHksIGxldCdzIGNoZWNrCisJCSAqIHRtcC50eXBlLiBJZiBpdCdz IGpidlN0cmluZy9qYnZOdW1lcmljLCBjb3B5IGl0IGRpcmVjdGx5LgorCQkgKi8KKwkJZXhwYW5k ZWRWYWwtPnR5cGUgPSB2LnR5cGU7CisJCWV4cGFuZGVkVmFsLT52YWwgPSB2LnZhbDsKKwl9Cit9 CisKK3N0YXRpYyBMaXN0ICoKK2pzb25iX29iamVjdF9maWVsZF91bndyYXBfYXJyYXkoSnNvbmJD b250YWluZXIgKmpiLCB0ZXh0ICprZXksIGJvb2wgdW53cmFwX25lc3RlZCkKK3sKKwlKc29uYkl0 ZXJhdG9yICppdDsKKwlKc29uYlZhbHVlCXY7CisJSnNvbmJJdGVyYXRvclRva2VuIHRva2VuOwor CUxpc3QJICAgKnJlc3VsdExpc3QgPSBOSUw7CisJaW50CQkJYXJyYXlTaXplOworCisJaXQgPSBK c29uYkl0ZXJhdG9ySW5pdChqYik7CisJdG9rZW4gPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2 LCBmYWxzZSk7CisKKwlBc3NlcnQodG9rZW4gPT0gV0pCX0JFR0lOX0FSUkFZKTsKKwlhcnJheVNp emUgPSB2LnZhbC5hcnJheS5uRWxlbXM7CisKKwkvKiBVbndyYXAgb3V0LW1vc3QgYXJyYXkgZWxl bWVudHMgYW5kIGV4dHJhY3QgdGhlIGtleSB2YWx1ZSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwg YXJyYXlTaXplOyBpKyspCisJeworCQl0b2tlbiA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnYs IHRydWUpOworCQlpZiAodG9rZW4gPT0gV0pCX0VMRU0gJiYgdi50eXBlID09IGpidkJpbmFyeSkK KwkJeworCQkJSnNvbmJDb250YWluZXIgKmVsZW1Db250YWluZXIgPSAoSnNvbmJDb250YWluZXIg Kikgdi52YWwuYmluYXJ5LmRhdGE7CisKKwkJCWlmIChKc29uQ29udGFpbmVySXNPYmplY3QoZWxl bUNvbnRhaW5lcikpCisJCQl7CisJCQkJSnNvbmJWYWx1ZSAqZXh0cmFjdGVkVmFsdWU7CisJCQkJ SnNvbmJWYWx1ZQl2YnVmOworCisJCQkJZXh0cmFjdGVkVmFsdWUgPSBnZXRLZXlKc29uVmFsdWVG cm9tQ29udGFpbmVyKGVsZW1Db250YWluZXIsCisJCQkJCQkJCQkJCQkJCQkgIFZBUkRBVEFfQU5Z KGtleSksCisJCQkJCQkJCQkJCQkJCQkgIFZBUlNJWkVfQU5ZX0VYSERSKGtleSksCisJCQkJCQkJ CQkJCQkJCQkgICZ2YnVmKTsKKwkJCQlpZiAoZXh0cmFjdGVkVmFsdWUgIT0gTlVMTCkKKwkJCQl7 CisJCQkJCUpzb25iVmFsdWUgKmNvcHk7CisKKwkJCQkJaWYgKGV4dHJhY3RlZFZhbHVlLT50eXBl ID09IGpidkJpbmFyeSkKKwkJCQkJeworCQkJCQkJSnNvbmJWYWx1ZQlleHBhbmRlZDsKKworCQkJ CQkJZXhwYW5kX2pidkJpbmFyeV9pbl9tZW1vcnkoZXh0cmFjdGVkVmFsdWUsICZleHBhbmRlZCk7 CisKKwkJCQkJCWNvcHkgPSBwYWxsb2Moc2l6ZW9mKGV4cGFuZGVkKSk7CisJCQkJCQkqY29weSA9 IGV4cGFuZGVkOworCQkJCQkJcmVzdWx0TGlzdCA9IGxhcHBlbmQocmVzdWx0TGlzdCwgY29weSk7 CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQljb3B5ID0gcGFsbG9jKHNpemVvZigq ZXh0cmFjdGVkVmFsdWUpKTsKKwkJCQkJCSpjb3B5ID0gKmV4dHJhY3RlZFZhbHVlOworCQkJCQkJ cmVzdWx0TGlzdCA9IGxhcHBlbmQocmVzdWx0TGlzdCwgY29weSk7CisJCQkJCX0KKwkJCQl9CisJ CQl9CisJCQllbHNlIGlmICh1bndyYXBfbmVzdGVkICYmIEpzb25Db250YWluZXJJc0FycmF5KGVs ZW1Db250YWluZXIpKQorCQkJeworCQkJCXJlc3VsdExpc3QgPSBqc29uYl9vYmplY3RfZmllbGRf dW53cmFwX2FycmF5KGVsZW1Db250YWluZXIsIGtleSwgZmFsc2UpOworCQkJfQorCQl9CisJfQor CXRva2VuID0gSnNvbmJJdGVyYXRvck5leHQoJml0LCAmdiwgdHJ1ZSk7CisKKwlyZXR1cm4gcmVz dWx0TGlzdDsKK30KKworRGF0dW0KK2pzb25iX29iamVjdF9maWVsZF9kb3QoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlKc29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgwKTsKKwl0ZXh0CSAg ICprZXkgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKKwlib29sCQlmaXJzdF9vcCA9IFBHX0dFVEFS R19CT09MKDIpOworCWJvb2wJCWxhc3Rfb3AgPSBQR19HRVRBUkdfQk9PTCgzKTsKKworCWlmIChK Ql9ST09UX0lTX09CSkVDVChqYikpCisJeworCQlKc29uYlZhbHVlICp2OworCQlKc29uYlZhbHVl CXZidWY7CisKKwkJdiA9IGdldEtleUpzb25WYWx1ZUZyb21Db250YWluZXIoJmpiLT5yb290LAor CQkJCQkJCQkJCSBWQVJEQVRBX0FOWShrZXkpLAorCQkJCQkJCQkJCSBWQVJTSVpFX0FOWV9FWEhE UihrZXkpLAorCQkJCQkJCQkJCSAmdmJ1Zik7CisKKwkJaWYgKHYgIT0gTlVMTCkKKwkJCVBHX1JF VFVSTl9KU09OQl9QKEpzb25iVmFsdWVUb0pzb25iKHYpKTsKKwl9CisJZWxzZSBpZiAoSkJfUk9P VF9JU19BUlJBWShqYikpCisJeworCQlMaXN0CSAgICpyZXN1bHRMaXN0OworCQlKc29uYlZhbHVl CXJlc3VsdFZhbDsKKworCQlyZXN1bHRMaXN0ID0ganNvbmJfb2JqZWN0X2ZpZWxkX3Vud3JhcF9h cnJheSgmamItPnJvb3QsIGtleSwgIWZpcnN0X29wKTsKKworCQlpZiAobGlzdF9sZW5ndGgocmVz dWx0TGlzdCkgPT0gMCkKKwkJCVBHX1JFVFVSTl9OVUxMKCk7CisJCWVsc2UgaWYgKCFsYXN0X29w IHx8IGxpc3RfbGVuZ3RoKHJlc3VsdExpc3QpID4gMSkKKwkJeworCQkJLyogQ29uZGl0aW9uYWwg d3JhcCByZXN1bHQgKi8KKwkJCXJlc3VsdFZhbC50eXBlID0gamJ2QXJyYXk7CisJCQlyZXN1bHRW YWwudmFsLmFycmF5LnJhd1NjYWxhciA9IGZhbHNlOworCQkJcmVzdWx0VmFsLnZhbC5hcnJheS5u RWxlbXMgPSBsaXN0X2xlbmd0aChyZXN1bHRMaXN0KTsKKwkJCXJlc3VsdFZhbC52YWwuYXJyYXku ZWxlbXMgPSAoSnNvbmJWYWx1ZSAqKSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpICogbGlzdF9s ZW5ndGgocmVzdWx0TGlzdCkpOworCisJCQlpbnQJCQlpZHggPSAwOworCQkJTGlzdENlbGwgICAq bGM7CisJCQlKc29uYlZhbHVlICplbGVtOworCisJCQlmb3JlYWNoKGxjLCByZXN1bHRMaXN0KQor CQkJeworCQkJCWVsZW0gPSAoSnNvbmJWYWx1ZSAqKSBsZmlyc3QobGMpOworCQkJCXJlc3VsdFZh bC52YWwuYXJyYXkuZWxlbXNbaWR4KytdID0gKmVsZW07CisJCQl9CisJCX0KKwkJZWxzZQorCQkJ cmVzdWx0VmFsID0gKihKc29uYlZhbHVlICopIGxpbml0aWFsKHJlc3VsdExpc3QpOworCisJCVBH X1JFVFVSTl9KU09OQl9QKEpzb25iVmFsdWVUb0pzb25iKCZyZXN1bHRWYWwpKTsKKwl9CisKKwlQ R19SRVRVUk5fTlVMTCgpOworfQorCiBEYXR1bQoganNvbl9vYmplY3RfZmllbGRfdGV4dChQR19G VU5DVElPTl9BUkdTKQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVy YXRvci5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAppbmRleCA2ZDlk YzE1MjhkNi4uNzA4ODdkM2ZkNGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf b3BlcmF0b3IuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CkBA IC0zMTczLDcgKzMxNzMsNyBAQAogeyBvaWQgPT4gJzM5NjcnLCBkZXNjciA9PiAnZ2V0IHZhbHVl IGZyb20ganNvbiBhcyB0ZXh0IHdpdGggcGF0aCBlbGVtZW50cycsCiAgIG9wcm5hbWUgPT4gJyM+ PicsIG9wcmxlZnQgPT4gJ2pzb24nLCBvcHJyaWdodCA9PiAnX3RleHQnLCBvcHJyZXN1bHQgPT4g J3RleHQnLAogICBvcHJjb2RlID0+ICdqc29uX2V4dHJhY3RfcGF0aF90ZXh0JyB9LAoteyBvaWQg PT4gJzMyMTEnLCBkZXNjciA9PiAnZ2V0IGpzb25iIG9iamVjdCBmaWVsZCcsCit7IG9pZCA9PiAn MzIxMScsIG9pZF9zeW1ib2wgPT4gJ09JRF9KU09OQl9PQkpFQ1RfRklFTERfT1AnLCBkZXNjciA9 PiAnZ2V0IGpzb25iIG9iamVjdCBmaWVsZCcsCiAgIG9wcm5hbWUgPT4gJy0+Jywgb3BybGVmdCA9 PiAnanNvbmInLCBvcHJyaWdodCA9PiAndGV4dCcsIG9wcnJlc3VsdCA9PiAnanNvbmInLAogICBv cHJjb2RlID0+ICdqc29uYl9vYmplY3RfZmllbGQnIH0sCiB7IG9pZCA9PiAnMzQ3NycsIGRlc2Ny ID0+ICdnZXQganNvbmIgb2JqZWN0IGZpZWxkIGFzIHRleHQnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggNWI4YzJhZDJhNTQuLmNhYmRlMmUwN2U4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTkzMzgsNiArOTMzOCwxMCBAQAogeyBvaWQgPT4gJzM5NjgnLCBkZXNjciA9PiAnZ2V0 IHRoZSB0eXBlIG9mIGEganNvbiB2YWx1ZScsCiAgIHByb25hbWUgPT4gJ2pzb25fdHlwZW9mJywg cHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdqc29uJywKICAgcHJvc3JjID0+ ICdqc29uX3R5cGVvZicgfSwKK3sgb2lkID0+ICc0MTAwJywKKyAgcHJvbmFtZSA9PiAnanNvbmJf b2JqZWN0X2ZpZWxkX2RvdCcsIHByb3JldHR5cGUgPT4gJ2pzb25iJywKKyAgcHJvYXJndHlwZXMg PT4gJ2pzb25iIHRleHQgYm9vbCBib29sJywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGZp ZWxkX25hbWUsIGZpcnN0X29wLCBsYXN0X29wfScsCisgIHByb3NyYyA9PiAnanNvbmJfb2JqZWN0 X2ZpZWxkX2RvdCcgfSwKIAogIyB1dWlkCiB7IG9pZCA9PiAnMjk1MicsIGRlc2NyID0+ICdJL08n LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2Z1bmMuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9mdW5jLmgKaW5kZXggYTZmMjRiODNkODQuLjc0NWQyYzc1YzkzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZnVuYy5oCisrKyBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9mdW5jLmgKQEAgLTM0LDYgKzM0LDggQEAgdHlwZWRlZiBlbnVtCiBl eHRlcm4gTm9kZSAqUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpm dW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJCQkJCQkJICAgTm9kZSAqbGFzdF9zcmYsIEZ1bmNDYWxs ICpmbiwgYm9vbCBwcm9jX2NhbGwsCiAJCQkJCQkJICAgaW50IGxvY2F0aW9uKTsKK2V4dGVybiBO b2RlICpQYXJzZUpzb25iU2ltcGxpZmllZEFjY2Vzc29yT2JqZWN0RmllbGQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgTm9kZSAqZmlyc3RfYXJnLCBpbnQgbG9jYXRp b24sCisJCQkJCQkJCQkJCQkJIE9pZCBiYXNldHlwaWQsIGJvb2wgZmlyc3Rfb3AsIGJvb2wgbGFz dF9vcCk7CiAKIGV4dGVybiBGdW5jRGV0YWlsQ29kZSBmdW5jX2dldF9kZXRhaWwoTGlzdCAqZnVu Y25hbWUsCiAJCQkJCQkJCQkgIExpc3QgKmZhcmdzLCBMaXN0ICpmYXJnbmFtZXMsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IDJiYWZmOTMxYmYyLi5lMGMwNzU3ZjQ3NSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTU3ODEsMyArNTc4MSwxMDYgQEAgc2Vs ZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1 Jzo6anNvbmI6OmludDg7CiAgMTIzNDUKICgxIHJvdykKIAorLS0gc2ltcGxlIGRvdCBub3RhdGlv bgorLS0gVE9ETzogYWRkIGNvbW1lbnRzCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbigKKyAgICB2ZXAganNvbmIsIC0tIHZhbHVlIGV4cHJlc3Npb24g cHJpbWFyeQorICAgIGpjICB0ZXh0IC0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBvcGVyYXRv ciBjaGFpbgorKQorICAgIFJFVFVSTlMgVEFCTEUoZG90X2FjY2VzcyBqc29uYiwgZXhwZWN0ZWQg anNvbmIpCisgICAgTEFOR1VBR0UgcGxwZ3NxbAorQVMgJCQKK0RFQ0xBUkUKKyAgICBkeW5fc3Fs IHRleHQ7CitCRUdJTgorICAgIGR5bl9zcWwgOj0gZm9ybWF0KCRmJAorICAgIFNFTEVDVAorICAg ICAgICh2ZXApLiVzIEFTIGRvdF9hY2Nlc3MsCisgICAgICAganNvbl9xdWVyeSh2ZXAsICdsYXgg JC4lcycgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJP UikgQVMgZXhwZWN0ZWQKKyAgICBGUk9NIChTRUxFQ1QgJDE6Ompzb25iIEFTIHZlcCkgZHVtbXkK KyAgJGYkLCBqYywgamMpOworCisgICAgLS0gICAgIC0tIE9QVElPTkFMOiBKdXN0IHRvIHNlZSB0 aGUgY29uc3RydWN0ZWQgU1FMIGluIGxvZ3MKKy0tICAgICBSQUlTRSBOT1RJQ0UgJ0V4ZWN1dGlu ZzogJScsIGR5bl9zcWw7CisKKyAgICAtLSBFeGVjdXRlIHRoZSBkeW5hbWljIHF1ZXJ5LCBzdWJz dGl0dXRpbmcgcF9jb2wgYXMgcGFyYW1ldGVyICMxCisgICAgUkVUVVJOIFFVRVJZIEVYRUNVVEUg ZHluX3NxbCBVU0lORyB2ZXA7CitFTkQ7CiskJDsKKy0tIGFjY2VzcyBtZW1iZXIgb2JqZWN0IGZp ZWxkIG9mIGEganNvbiBvYmplY3QKK3NlbGVjdCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRp b24oJ3siYSI6IDEsICJiIjogNDJ9Jzo6anNvbmIsICdiJyk7CisgZG90X2FjY2VzcyB8IGV4cGVj dGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyA0MiAgICAgICAgIHwgNDIKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbigneyJhIjogMSwgImIiOiA0 Mn0nOjpqc29uYiwgJ25vdF9leGlzdCcpOworIGRvdF9hY2Nlc3MgfCBleHBlY3RlZCAKKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgICB8IAorKDEgcm93KQorCitzZWxlY3QgKiBm cm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uKCd7ImEiOiAxLCAiYiI6IDQyLCAiYiI6MTJ9Jzo6 anNvbmIsICdiJyk7IC0tIHJldHVybiBsYXN0IGZvciBkdXBsaWNhdGUga2V5CisgZG90X2FjY2Vz cyB8IGV4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyAxMiAgICAgICAgIHwgMTIK KygxIHJvdykKKworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbigneyJhIjog MSwgImIiOiAxMiwgImIiOjQyfSc6Ompzb25iLCAnYicpOworIGRvdF9hY2Nlc3MgfCBleHBlY3Rl ZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgNDIgICAgICAgICB8IDQyCisoMSByb3cpCisK K3NlbGVjdCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24oJ3siYSI6IDIsICJiIjogeyJj IjogNDJ9fSc6Ompzb25iLCAnYi5jJyk7CisgZG90X2FjY2VzcyB8IGV4cGVjdGVkIAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyA0MiAgICAgICAgIHwgNDIKKygxIHJvdykKKworc2VsZWN0ICog ZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbigneyJhIjogNCwgImIiOiB7ImMiOiB7ImQiOiBb MTEsIDEyXX19fSc6Ompzb25iLCAnYi5jLmQnKTsKKyBkb3RfYWNjZXNzIHwgZXhwZWN0ZWQgCist LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxMSwgMTJdICAgfCBbMTEsIDEyXQorKDEgcm93KQor CistLSBhY2Nlc3MgbWVtYmVyIG9iamVjdCBmaWVsZCBvZiBhIGpzb24gYXJyYXk6IGFwcGx5IGxh eCBtb2RlICsgY29uZGl0aW9uYWwgd3JhcAorLS0gdW53cmFwIHRoZSBvdXRlci1tb3N0IGFycmF5 IGludG8gc2VxdWVuY2UgYW5kIGNvbmRpdGlvbmFsIHdyYXAgdGhlIHJlc3VsdHMKKy0tIG9ubHkg dW53cmFwIHRoZSBvdXRlciBtb3N0IGFycmF5CitzZWxlY3QgKiBmcm9tIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uKCdbeyJ4IjogNDJ9XSc6Ompzb25iLCAneCcpOworIGRvdF9hY2Nlc3MgfCBleHBl Y3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgNDIgICAgICAgICB8IDQyCisoMSByb3cp CisKK3NlbGVjdCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24oJ1sieCJdJzo6anNvbmIs ICd4Jyk7CisgZG90X2FjY2VzcyB8IGV4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyAgICAgICAgICAgIHwgCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24oJ1tbeyJ4IjogNDJ9XV0nOjpqc29uYiwgJ3gnKTsKKyBkb3RfYWNjZXNzIHwgZXhw ZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgICAgfCAKKygxIHJvdykK KworLS0gd3JhcCB0aGUgcmVzdWx0IGludG8gYW4gYXJyYXkgb24gdGhlIGNvbmRpdGlvbmFsIG9m IG1vcmUgdGhhbiBvbmUgbWF0Y2hlZCBvYmplY3Qga2V5cworc2VsZWN0ICogZnJvbSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbignW3sieCI6IDQyfSwgeyJ4IjogeyJ5IjogeyJ6IjogMTJ9fX1dJzo6 anNvbmIsICd4Jyk7CisgICAgICAgZG90X2FjY2VzcyAgICAgICB8ICAgICAgICBleHBlY3RlZCAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgWzQyLCB7InkiOiB7InoiOiAxMn19XSB8IFs0MiwgeyJ5IjogeyJ6IjogMTJ9fV0KKygxIHJv dykKKworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbignW3sieCI6IDQyfSwg W3sieCI6IHsieSI6IHsieiI6IDEyfX19XV0nOjpqc29uYiwgJ3gnKTsKKyBkb3RfYWNjZXNzIHwg ZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIDQyICAgICAgICAgfCA0MgorKDEg cm93KQorCitzZWxlY3QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uKCdbeyJ4IjogNDJ9 LCB7IngiOiBbeyJ5IjogMTJ9LCB7InkiOiB7InoiOiAxMn19XX1dJzo6anNvbmIsICd4LnknKTsK KyAgIGRvdF9hY2Nlc3MgICAgfCAgICBleHBlY3RlZCAgICAgCistLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLQorIFsxMiwgeyJ6IjogMTJ9XSB8IFsxMiwgeyJ6IjogMTJ9XQorKDEg cm93KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggNTQ0YmI2MTBlMmQuLjVhNmQ4MjBiNTA3 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNTcyLDMgKzE1NzIsNTAgQEAgc2VsZWN0ICcx MjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNv bmI6OmZsb2F0ODsKIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQyOwogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDQ7CiBzZWxl Y3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUn Ojpqc29uYjo6aW50ODsKKworLS0gc2ltcGxlIGRvdCBub3RhdGlvbgorLS0gVE9ETzogYWRkIGNv bW1lbnRzCisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uKAorICAgIHZlcCBqc29uYiwgLS0gdmFsdWUgZXhwcmVzc2lvbiBwcmltYXJ5CisgICAgamMg IHRleHQgLS0gSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIG9wZXJhdG9yIGNoYWluCispCisgICAg UkVUVVJOUyBUQUJMRShkb3RfYWNjZXNzIGpzb25iLCBleHBlY3RlZCBqc29uYikKKyAgICBMQU5H VUFHRSBwbHBnc3FsCitBUyAkJAorREVDTEFSRQorICAgIGR5bl9zcWwgdGV4dDsKK0JFR0lOCisg ICAgZHluX3NxbCA6PSBmb3JtYXQoJGYkCisgICAgU0VMRUNUCisgICAgICAgKHZlcCkuJXMgQVMg ZG90X2FjY2VzcywKKyAgICAgICBqc29uX3F1ZXJ5KHZlcCwgJ2xheCAkLiVzJyBXSVRIIENPTkRJ VElPTkFMIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBBUyBleHBlY3RlZAor ICAgIEZST00gKFNFTEVDVCAkMTo6anNvbmIgQVMgdmVwKSBkdW1teQorICAkZiQsIGpjLCBqYyk7 CisKKyAgICAtLSAgICAgLS0gT1BUSU9OQUw6IEp1c3QgdG8gc2VlIHRoZSBjb25zdHJ1Y3RlZCBT UUwgaW4gbG9ncworLS0gICAgIFJBSVNFIE5PVElDRSAnRXhlY3V0aW5nOiAlJywgZHluX3NxbDsK KworICAgIC0tIEV4ZWN1dGUgdGhlIGR5bmFtaWMgcXVlcnksIHN1YnN0aXR1dGluZyBwX2NvbCBh cyBwYXJhbWV0ZXIgIzEKKyAgICBSRVRVUk4gUVVFUlkgRVhFQ1VURSBkeW5fc3FsIFVTSU5HIHZl cDsKK0VORDsKKyQkOworCistLSBhY2Nlc3MgbWVtYmVyIG9iamVjdCBmaWVsZCBvZiBhIGpzb24g b2JqZWN0CitzZWxlY3QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uKCd7ImEiOiAxLCAi YiI6IDQyfSc6Ompzb25iLCAnYicpOworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbigneyJhIjogMSwgImIiOiA0Mn0nOjpqc29uYiwgJ25vdF9leGlzdCcpOworc2VsZWN0ICog ZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbigneyJhIjogMSwgImIiOiA0MiwgImIiOjEyfSc6 Ompzb25iLCAnYicpOyAtLSByZXR1cm4gbGFzdCBmb3IgZHVwbGljYXRlIGtleQorc2VsZWN0ICog ZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbigneyJhIjogMSwgImIiOiAxMiwgImIiOjQyfSc6 Ompzb25iLCAnYicpOworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbigneyJh IjogMiwgImIiOiB7ImMiOiA0Mn19Jzo6anNvbmIsICdiLmMnKTsKK3NlbGVjdCAqIGZyb20gdGVz dF9qc29uYl9kb3Rfbm90YXRpb24oJ3siYSI6IDQsICJiIjogeyJjIjogeyJkIjogWzExLCAxMl19 fX0nOjpqc29uYiwgJ2IuYy5kJyk7CisKKy0tIGFjY2VzcyBtZW1iZXIgb2JqZWN0IGZpZWxkIG9m IGEganNvbiBhcnJheTogYXBwbHkgbGF4IG1vZGUgKyBjb25kaXRpb25hbCB3cmFwCistLSB1bndy YXAgdGhlIG91dGVyLW1vc3QgYXJyYXkgaW50byBzZXF1ZW5jZSBhbmQgY29uZGl0aW9uYWwgd3Jh cCB0aGUgcmVzdWx0cworLS0gb25seSB1bndyYXAgdGhlIG91dGVyIG1vc3QgYXJyYXkKK3NlbGVj dCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24oJ1t7IngiOiA0Mn1dJzo6anNvbmIsICd4 Jyk7CitzZWxlY3QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uKCdbIngiXSc6Ompzb25i LCAneCcpOworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbignW1t7IngiOiA0 Mn1dXSc6Ompzb25iLCAneCcpOworLS0gd3JhcCB0aGUgcmVzdWx0IGludG8gYW4gYXJyYXkgb24g dGhlIGNvbmRpdGlvbmFsIG9mIG1vcmUgdGhhbiBvbmUgbWF0Y2hlZCBvYmplY3Qga2V5cworc2Vs ZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbignW3sieCI6IDQyfSwgeyJ4IjogeyJ5 IjogeyJ6IjogMTJ9fX1dJzo6anNvbmIsICd4Jyk7CitzZWxlY3QgKiBmcm9tIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uKCdbeyJ4IjogNDJ9LCBbeyJ4IjogeyJ5IjogeyJ6IjogMTJ9fX1dXSc6Ompz b25iLCAneCcpOworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbignW3sieCI6 IDQyfSwgeyJ4IjogW3sieSI6IDEyfSwgeyJ5IjogeyJ6IjogMTJ9fV19XSc6Ompzb25iLCAneC55 Jyk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000009b350062d5ff81f Content-Type: application/octet-stream; name="v7-0001-Allow-transformation-only-of-a-sublist-of-subscri.patch" Content-Disposition: attachment; filename="v7-0001-Allow-transformation-only-of-a-sublist-of-subscri.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6rjroli0 RnJvbSA1ZGEzZDM2NWM4ZWI3MmJmNDY3ZmUzM2M3MTczZmVkZDYxYzlmOTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IEZyaSwgMTQgT2N0IDIwMjIgMTU6MzU6MjIgKzAzMDAKU3ViamVjdDogW1BBVENI IHY3IDEvNV0gQWxsb3cgdHJhbnNmb3JtYXRpb24gb25seSBvZiBhIHN1Ymxpc3Qgb2Ygc3Vic2Ny aXB0cwoKLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgfCA5ICsrKystLS0t LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyAgIHwgNCArKy0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCA1ICsrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQv YXJyYXlzdWJzLmMgfCA2ICsrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5j IHwgNiArKysrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oICB8IDIgKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8IDIgKy0KIDcgZmlsZXMgY2hhbmdlZCwg MjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK aW5kZXggYmFkMWRmNzMyZWEuLjJjMGY0YTUwYjIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK QEAgLTQ2NiwxNCArNDY2LDEzIEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCQkJQXNzZXJ0KElzQShuLCBTdHJpbmcpKTsKIAog CQkJLyogcHJvY2VzcyBzdWJzY3JpcHRzIGJlZm9yZSB0aGlzIGZpZWxkIHNlbGVjdGlvbiAqLwot CQkJaWYgKHN1YnNjcmlwdHMpCisJCQl3aGlsZSAoc3Vic2NyaXB0cykKIAkJCQlyZXN1bHQgPSAo Tm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKIAkJCQkJCQkJCQkJ CQkJCSAgIHJlc3VsdCwKIAkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJlc3VsdCksCiAJCQkJ CQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJCQkgICBzdWJz Y3JpcHRzLAorCQkJCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCiAJCQkJCQkJCQkJCQkJCQkg ICBmYWxzZSk7Ci0JCQlzdWJzY3JpcHRzID0gTklMOwogCiAJCQluZXdyZXN1bHQgPSBQYXJzZUZ1 bmNPckNvbHVtbihwc3RhdGUsCiAJCQkJCQkJCQkJICBsaXN0X21ha2UxKG4pLApAQCAtNDg4LDEy ICs0ODcsMTIgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0lu ZGlyZWN0aW9uICppbmQpCiAJCX0KIAl9CiAJLyogcHJvY2VzcyB0cmFpbGluZyBzdWJzY3JpcHRz LCBpZiBhbnkgKi8KLQlpZiAoc3Vic2NyaXB0cykKKwl3aGlsZSAoc3Vic2NyaXB0cykKIAkJcmVz dWx0ID0gKE5vZGUgKikgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhwc3RhdGUsCiAJCQkJ CQkJCQkJCQkJICAgcmVzdWx0LAogCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJlc3VsdCksCiAJ CQkJCQkJCQkJCQkJICAgZXhwclR5cG1vZChyZXN1bHQpLAotCQkJCQkJCQkJCQkJCSAgIHN1YnNj cmlwdHMsCisJCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCiAJCQkJCQkJCQkJCQkJICAgZmFs c2UpOwogCiAJcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmluZGV4IGQ2ZmVi MTZhZWYzLi4xOWE2YjY3OGU2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X25vZGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCkBAIC0yNDQsNyAr MjQ0LDcgQEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkJIE5vZGUgKmNvbnRhaW5lckJhc2UsCiAJCQkJCQkJIE9pZCBjb250YWluZXJUeXBl LAogCQkJCQkJCSBpbnQzMiBjb250YWluZXJUeXBNb2QsCi0JCQkJCQkJIExpc3QgKmluZGlyZWN0 aW9uLAorCQkJCQkJCSBMaXN0ICoqaW5kaXJlY3Rpb24sCiAJCQkJCQkJIGJvb2wgaXNBc3NpZ25t ZW50KQogewogCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHRy YW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIGVsZW1l bnQuICBJZiBhbnkgb2YgdGhlIGl0ZW1zIGFyZSBzbGljZSBzcGVjaWZpZXJzIChsb3dlcjp1cHBl ciksIHRoZW4KIAkgKiB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gbWVhbnMgYSBjb250YWluZXIg c2xpY2Ugb3BlcmF0aW9uLgogCSAqLwotCWZvcmVhY2goaWR4LCBpbmRpcmVjdGlvbikKKwlmb3Jl YWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKIAkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rfbm9k ZShBX0luZGljZXMsIGlkeCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA0YWJh MGQ5ZDRkNS4uMzlmZDgyZjgzNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTkz Niw5ICs5MzYsMTIgQEAgdHJhbnNmb3JtQXNzaWdubWVudFN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCQkJCSAgYmFzZW5vZGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBl LAogCQkJCQkJCQkJCSAgY29udGFpbmVyVHlwTW9kLAotCQkJCQkJCQkJCSAgc3Vic2NyaXB0cywK KwkJCQkJCQkJCQkgICZzdWJzY3JpcHRzLAogCQkJCQkJCQkJCSAgdHJ1ZSk7CiAKKwlpZiAoc3Vi c2NyaXB0cykKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGluZyBhc3NpZ25tZW50IGlzIG5vdCBz dXBwb3J0ZWQiKTsKKwogCXR5cGVOZWVkZWQgPSBzYnNyZWYtPnJlZnJlc3R5cGU7CiAJdHlwbW9k TmVlZGVkID0gc2JzcmVmLT5yZWZ0eXBtb2Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpp bmRleCA1NjIxNzliMzc5OS4uZWRkODVmN2JhNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJz LmMKQEAgLTUzLDcgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlTdWJXb3Jrc3BhY2UKICAq Lwogc3RhdGljIHZvaWQKIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYsCi0JCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJICBMaXN0ICoqaW5k aXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgYm9vbCBpc1Ns aWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKQEAgLTcwLDcgKzcwLDcgQEAgYXJyYXlf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKiBpbmRpcmVj dGlvbiBpdGVtcyB0byBzbGljZXMgYnkgdHJlYXRpbmcgdGhlIHNpbmdsZSBzdWJzY3JpcHQgYXMg dGhlCiAJICogdXBwZXIgYm91bmQgYW5kIHN1cHBseWluZyBhbiBhc3N1bWVkIGxvd2VyIGJvdW5k IG9mIDEuCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2goaWR4LCAq aW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNl cywgaWR4KTsKIAkJTm9kZQkgICAqc3ViZXhwcjsKQEAgLTE1MSw2ICsxNTEsOCBAQCBhcnJheV9z 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 L3N1YnNjcmlwdGluZy5oCmluZGV4IDIzNGU4YWQ4MDEyLi5lZDJmMWNlZmI0OSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmgKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IFN1YnNjcmlwdEV4ZWNT dGVwczsKICAqIGFzc2lnbm1lbnQgbXVzdCByZXR1cm4uCiAgKi8KIHR5cGVkZWYgdm9pZCAoKlN1 YnNjcmlwdFRyYW5zZm9ybSkgKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAotCQkJCQkJCQkJTGlz dCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJCQlMaXN0ICoqaW5kaXJlY3Rpb24sCiAJCQkJCQkJCQlz dHJ1Y3QgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJYm9vbCBpc1NsaWNlLAogCQkJCQkJ CQkJYm9vbCBpc0Fzc2lnbm1lbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggOTk0Mjg0 MDE5ZmIuLjVhZTExY2NlYzMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTM3Nyw3ICsz NzcsNyBAQCBleHRlcm4gU3Vic2NyaXB0aW5nUmVmICp0cmFuc2Zvcm1Db250YWluZXJTdWJzY3Jp cHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgTm9kZSAqY29udGFpbmVyQmFz ZSwKIAkJCQkJCQkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJCQkJCQkJIGludDMy IGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkJCQkJCQkgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJ CQkJCQkJCQkJIExpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkJCQkJCQkgYm9vbCBpc0Fzc2ln bm1lbnQpOwogZXh0ZXJuIENvbnN0ICptYWtlX2NvbnN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9D b25zdCAqYWNvbnN0KTsKIAotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000009b350062d5ff81f Content-Type: application/octet-stream; name="v7-0004-Implement-read-only-dot-notation-for-jsonb-using-.patch" Content-Disposition: attachment; filename="v7-0004-Implement-read-only-dot-notation-for-jsonb-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6rjrolt3 RnJvbSA1M2JjMWRhNzhiMGZlYjc3NjljNTcxZmJjYWZiNzBjMjIxNGE5YzQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNzo1MyArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djcgNC81XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIgdXNpbmcK IGpzb25wYXRoCgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYyAgIHwgNDM4 ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IHwg MjY1ICsrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAg ICB8ICA1NiArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDY3MCBpbnNlcnRpb25zKCspLCA5MSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKaW5kZXggYTBkMzhhMGZkODAuLjFl Y2VjYjRlZmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCkBAIC0xNSwxMiArMTUsMTQg QEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIu aCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKICNpbmNsdWRlICJub2Rlcy9zdWJzY3JpcHRpbmcuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCisjaW5jbHVkZSAi dXRpbHMvanNvbnBhdGguaCIKIAogCiAvKiBTdWJzY3JpcHRpbmdSZWZTdGF0ZS53b3Jrc3BhY2Ug Zm9yIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24gKi8KQEAgLTMwLDggKzMyLDI2MSBAQCB0 eXBlZGVmIHN0cnVjdCBKc29uYlN1YldvcmtzcGFjZQogCU9pZAkJICAgKmluZGV4T2lkOwkJLyog T0lEIG9mIGNvZXJjZWQgc3Vic2NyaXB0IGV4cHJlc3Npb24sIGNvdWxkCiAJCQkJCQkJCSAqIGJl IG9ubHkgaW50ZWdlciBvciB0ZXh0ICovCiAJRGF0dW0JICAgKmluZGV4OwkJCS8qIFN1YnNjcmlw dCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCisJSnNvblBhdGggICAqanNvbnBhdGg7CQkvKiBq c29ucGF0aCBmb3IgZG90IG5vdGF0aW9uIGV4ZWN1dGlvbiAqLworCUxpc3QJCXZhcnM7CQkJLyog anNvbnBhdGggdmFycyAqLwogfSBKc29uYlN1YldvcmtzcGFjZTsKIAorc3RhdGljIGJvb2wKK2pz b25iX2NoZWNrX2pzb25wYXRoX25lZWRlZChMaXN0ICppbmRpcmVjdGlvbikKK3sKKwlMaXN0Q2Vs bCAgICpsYzsKKworCWZvcmVhY2gobGMsIGluZGlyZWN0aW9uKQorCXsKKwkJTm9kZQkgICAqYWNj ZXNzb3IgPSBsZmlyc3QobGMpOworCisJCWlmIChJc0EoYWNjZXNzb3IsIFN0cmluZykgfHwKKwkJ CUlzQShhY2Nlc3NvciwgQV9TdGFyKSkKKwkJCXJldHVybiB0cnVlOworCQllbHNlIGlmIChJc0Eo YWNjZXNzb3IsIEFfSW5kaWNlcykpCisJCXsKKwkJCUFfSW5kaWNlcyAgKmFpID0gY2FzdE5vZGUo QV9JbmRpY2VzLCBhY2Nlc3Nvcik7CisKKwkJCWlmICghYWktPnVpZHggfHwgYWktPmxpZHgpCisJ CQl7CisJCQkJQXNzZXJ0KGFpLT5pc19zbGljZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJ CX0KKwkJZWxzZQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtKEpzb25QYXRoSXRl bVR5cGUgdHlwZSkKK3sKKwlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvYyhzaXplb2YoKnYp KTsKKworCXYtPnR5cGUgPSB0eXBlOworCXYtPm5leHQgPSBOVUxMOworCisJcmV0dXJuIHY7Cit9 CisKK3N0YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAqCittYWtlX2pzb25wYXRoX2l0ZW1faW50KGlu dDMyIHZhbCwgTGlzdCAqKmV4cHJzKQoreworCUpzb25QYXRoUGFyc2VJdGVtICpqcGkgPSBtYWtl X2pzb25wYXRoX2l0ZW0oanBpTnVtZXJpYyk7CisKKwlqcGktPnZhbHVlLm51bWVyaWMgPQorCQlE YXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ0X251bWVyaWMsIEludDMyR2V0 RGF0dW0odmFsKSkpOworCisJKmV4cHJzID0gbGFwcGVuZCgqZXhwcnMsIG1ha2VDb25zdChJTlQ0 T0lELCAtMSwgSW52YWxpZE9pZCwgNCwKKwkJCQkJCQkJCSAgIEludDMyR2V0RGF0dW0odmFsKSwg ZmFsc2UsIHRydWUpKTsKKworCXJldHVybiBqcGk7Cit9CisKK3N0YXRpYyBPaWQKK2pzb25iX3N1 YnNjcmlwdF90eXBlKE5vZGUgKmV4cHIpCit7CisJaWYgKGV4cHIgJiYgSXNBKGV4cHIsIFN0cmlu ZykpCisJCXJldHVybiBURVhUT0lEOworCisJcmV0dXJuIGV4cHJUeXBlKGV4cHIpOworfQorCitz dGF0aWMgTm9kZSAqCitjb2VyY2VfanNvbnBhdGhfc3Vic2NyaXB0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqc3ViRXhwciwgT2lkIG51bXR5cGUpCit7CisJT2lkCQkJc3ViRXhwclR5cGUgPSBq c29uYl9zdWJzY3JpcHRfdHlwZShzdWJFeHByKTsKKwlPaWQJCQl0YXJnZXRUeXBlID0gVU5LTk9X Tk9JRDsKKworCWlmIChzdWJFeHByVHlwZSAhPSBVTktOT1dOT0lEKQorCXsKKwkJT2lkCQkJdGFy Z2V0c1syXSA9IHtudW10eXBlLCBURVhUT0lEfTsKKworCQkvKgorCQkgKiBKc29uYiBjYW4gaGFu ZGxlIG11bHRpcGxlIHN1YnNjcmlwdCB0eXBlcywgYnV0IGNhc2VzIHdoZW4gYQorCQkgKiBzdWJz Y3JpcHQgY291bGQgYmUgY29lcmNlZCB0byBtdWx0aXBsZSB0YXJnZXQgdHlwZXMgbXVzdCBiZQor CQkgKiBhdm9pZGVkLCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rpb25zLiBJdCBjb3VsZCBi ZQorCQkgKiBwb3NzaWJseSBleHRlbmQgd2l0aCBqc29ucGF0aCBpbiB0aGUgZnV0dXJlLgorCQkg Ki8KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisJCXsKKwkJCWlmIChjYW5fY29lcmNl X3R5cGUoMSwgJnN1YkV4cHJUeXBlLCAmdGFyZ2V0c1tpXSwgQ09FUkNJT05fSU1QTElDSVQpKQor CQkJeworCQkJCS8qCisJCQkJICogT25lIHR5cGUgaGFzIGFscmVhZHkgc3VjY2VlZGVkLCBpdCBt ZWFucyB0aGVyZSBhcmUKKwkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0cyBwb3NzaWJsZSwgZmFp bHVyZS4KKwkJCQkgKi8KKwkJCQlpZiAodGFyZ2V0VHlwZSAhPSBVTktOT1dOT0lEKQorCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBlICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBm b3JtYXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAorCQkJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJz Y3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUgdHlwZSwgaW50ZWdlciBvciB0ZXh0 LiIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oc3Vi RXhwcikpKSk7CisKKwkJCQl0YXJnZXRUeXBlID0gdGFyZ2V0c1tpXTsKKwkJCX0KKwkJfQorCisJ CS8qCisJCSAqIE5vIHN1aXRhYmxlIHR5cGVzIHdlcmUgZm91bmQsIGZhaWx1cmUuCisJCSAqLwor CQlpZiAodGFyZ2V0VHlwZSA9PSBVTktOT1dOT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN1YnNj cmlwdCB0eXBlICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3JtYXRfdHlwZV9iZShzdWJFeHByVHlw ZSkpLAorCQkJCQkgZXJyaGludCgianNvbmIgc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRv IGVpdGhlciBpbnRlZ2VyIG9yIHRleHQuIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisJfQorCWVsc2UKKwkJdGFyZ2V0VHlwZSA9 IFRFWFRPSUQ7CisKKwkvKgorCSAqIFdlIGtub3duIGZyb20gY2FuX2NvZXJjZV90eXBlIHRoYXQg Y29lcmNpb24gd2lsbCBzdWNjZWVkLCBzbworCSAqIGNvZXJjZV90eXBlIGNvdWxkIGJlIHVzZWQu IE5vdGUgdGhlIGltcGxpY2l0IGNvZXJjaW9uIGNvbnRleHQsCisJICogd2hpY2ggaXMgcmVxdWly ZWQgdG8gaGFuZGxlIHN1YnNjcmlwdHMgb2YgZGlmZmVyZW50IHR5cGVzLAorCSAqIHNpbWlsYXIg dG8gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCisJICovCisJc3ViRXhwciA9IGNvZXJjZV90eXBlKHBz dGF0ZSwKKwkJCQkJCSAgc3ViRXhwciwgc3ViRXhwclR5cGUsCisJCQkJCQkgIHRhcmdldFR5cGUs IC0xLAorCQkJCQkJICBDT0VSQ0lPTl9JTVBMSUNJVCwKKwkJCQkJCSAgQ09FUkNFX0lNUExJQ0lU X0NBU1QsCisJCQkJCQkgIC0xKTsKKwlpZiAoc3ViRXhwciA9PSBOVUxMKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJt c2coImpzb25iIHN1YnNjcmlwdCBtdXN0IGhhdmUgdGV4dCB0eXBlIiksCisJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKworCXJldHVybiBz dWJFeHByOworfQorCitzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9p dGVtX2V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7 CisJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaTsKKworCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0 ZSwgZXhwciwgcHN0YXRlLT5wX2V4cHJfa2luZCk7CisKKwlpZiAoSXNBKGV4cHIsIENvbnN0KSkK Kwl7CisJCUNvbnN0CSAgICpjbnN0ID0gKENvbnN0ICopIGV4cHI7CisKKwkJaWYgKGNuc3QtPmNv bnN0dHlwZSA9PSBJTlQ0T0lEICYmICFjbnN0LT5jb25zdGlzbnVsbCkKKwkJeworCQkJaW50MzIJ CXZhbCA9IERhdHVtR2V0SW50MzIoY25zdC0+Y29uc3R2YWx1ZSk7CisKKwkJCXJldHVybiBtYWtl X2pzb25wYXRoX2l0ZW1faW50KHZhbCwgZXhwcnMpOworCQl9CisJfQorCisJKmV4cHJzID0gbGFw cGVuZCgqZXhwcnMsIGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQocHN0YXRlLCBleHByLCBOVU1F UklDT0lEKSk7CisKKwlqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpVmFyaWFibGUpOworCWpw aS0+dmFsdWUuc3RyaW5nLnZhbCA9IHBzcHJpbnRmKCIlZCIsIGxpc3RfbGVuZ3RoKCpleHBycykp OworCWpwaS0+dmFsdWUuc3RyaW5nLmxlbiA9IHN0cmxlbihqcGktPnZhbHVlLnN0cmluZy52YWwp OworCisJcmV0dXJuIGpwaTsKK30KKworc3RhdGljIE5vZGUgKgoranNvbmJfc3Vic2NyaXB0X21h a2VfanNvbnBhdGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICoqaW5kaXJlY3Rpb24sCisJCQkJ CQkJICBMaXN0ICoqdWV4cHJzLCBMaXN0ICoqbGV4cHJzKQoreworCUpzb25QYXRoUGFyc2VSZXN1 bHQganByZXM7CisJSnNvblBhdGhQYXJzZUl0ZW0gKnBhdGggPSBtYWtlX2pzb25wYXRoX2l0ZW0o anBpUm9vdCk7CisJTGlzdENlbGwgICAqbGM7CisJRGF0dW0JCWpzcDsKKwlpbnQJCQlwYXRobGVu ID0gMDsKKworCSp1ZXhwcnMgPSBOSUw7CisJKmxleHBycyA9IE5JTDsKKworCWpwcmVzLmV4cHIg PSBwYXRoOworCWpwcmVzLmxheCA9IHRydWU7CisKKwlmb3JlYWNoKGxjLCAqaW5kaXJlY3Rpb24p CisJeworCQlOb2RlCSAgICphY2Nlc3NvciA9IGxmaXJzdChsYyk7CisJCUpzb25QYXRoUGFyc2VJ dGVtICpqcGk7CisKKwkJaWYgKElzQShhY2Nlc3NvciwgU3RyaW5nKSkKKwkJeworCQkJY2hhcgkg ICAqZmllbGQgPSBzdHJWYWwoYWNjZXNzb3IpOworCisJCQlqcGkgPSBtYWtlX2pzb25wYXRoX2l0 ZW0oanBpS2V5KTsKKwkJCWpwaS0+dmFsdWUuc3RyaW5nLnZhbCA9IGZpZWxkOworCQkJanBpLT52 YWx1ZS5zdHJpbmcubGVuID0gc3RybGVuKGZpZWxkKTsKKworCQkJKnVleHBycyA9IGxhcHBlbmQo KnVleHBycywgYWNjZXNzb3IpOworCQl9CisJCWVsc2UgaWYgKElzQShhY2Nlc3NvciwgQV9TdGFy KSkKKwkJeworCQkJanBpID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaUFueUtleSk7CisKKwkJCSp1 ZXhwcnMgPSBsYXBwZW5kKCp1ZXhwcnMsIE5VTEwpOworCQl9CisJCWVsc2UgaWYgKElzQShhY2Nl c3NvciwgQV9JbmRpY2VzKSkKKwkJeworCQkJQV9JbmRpY2VzICAqYWkgPSBjYXN0Tm9kZShBX0lu ZGljZXMsIGFjY2Vzc29yKTsKKworCQkJanBpID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaUluZGV4 QXJyYXkpOworCQkJanBpLT52YWx1ZS5hcnJheS5uZWxlbXMgPSAxOworCQkJanBpLT52YWx1ZS5h cnJheS5lbGVtcyA9IHBhbGxvYyhzaXplb2YoanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXSkpOwor CisJCQlpZiAoYWktPmlzX3NsaWNlKQorCQkJeworCQkJCXdoaWxlIChsaXN0X2xlbmd0aCgqbGV4 cHJzKSA8IGxpc3RfbGVuZ3RoKCp1ZXhwcnMpKQorCQkJCQkqbGV4cHJzID0gbGFwcGVuZCgqbGV4 cHJzLCBOVUxMKTsKKworCQkJCWlmIChhaS0+bGlkeCkKKwkJCQkJanBpLT52YWx1ZS5hcnJheS5l bGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+bGlkeCwg bGV4cHJzKTsKKwkJCQllbHNlCisJCQkJCWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0uZnJvbSA9 IG1ha2VfanNvbnBhdGhfaXRlbV9pbnQoMCwgbGV4cHJzKTsKKworCQkJCWlmIChhaS0+dWlkeCkK KwkJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2VfanNvbnBhdGhfaXRlbV9l eHByKHBzdGF0ZSwgYWktPnVpZHgsIHVleHBycyk7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJanBp LT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlMYXN0KTsK KwkJCQkJKnVleHBycyA9IGxhcHBlbmQoKnVleHBycywgTlVMTCk7CisJCQkJfQorCQkJfQorCQkJ ZWxzZQorCQkJeworCQkJCUFzc2VydChhaS0+dWlkeCAmJiAhYWktPmxpZHgpOworCQkJCWpwaS0+ dmFsdWUuYXJyYXkuZWxlbXNbMF0uZnJvbSA9IG1ha2VfanNvbnBhdGhfaXRlbV9leHByKHBzdGF0 ZSwgYWktPnVpZHgsIHVleHBycyk7CisJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9 IE5VTEw7CisJCQl9CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisKKwkJLyogYXBwZW5kIHBhdGgg aXRlbSAqLworCQlwYXRoLT5uZXh0ID0ganBpOworCQlwYXRoID0ganBpOworCQlwYXRobGVuKys7 CisJfQorCisJaWYgKCpsZXhwcnMpCisJeworCQl3aGlsZSAobGlzdF9sZW5ndGgoKmxleHBycykg PCBsaXN0X2xlbmd0aCgqdWV4cHJzKSkKKwkJCSpsZXhwcnMgPSBsYXBwZW5kKCpsZXhwcnMsIE5V TEwpOworCX0KKworCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0X24oKmluZGlyZWN0 aW9uLCBwYXRobGVuKTsKKworCWpzcCA9IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCZqcHJlcywg MCwgTlVMTCk7CisKKwlyZXR1cm4gKE5vZGUgKikgbWFrZUNvbnN0KEpTT05QQVRIT0lELCAtMSwg SW52YWxpZE9pZCwgLTEsIGpzcCwgZmFsc2UsIGZhbHNlKTsKK30KIAogLyoKICAqIEZpbmlzaCBw YXJzZSBhbmFseXNpcyBvZiBhIFN1YnNjcmlwdGluZ1JlZiBleHByZXNzaW9uIGZvciBhIGpzb25i LgpAQCAtNDksMTkgKzMwNCwzNSBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlw dGluZ1JlZiAqc2JzcmVmLAogCUxpc3QJICAgKnVwcGVySW5kZXhwciA9IE5JTDsKIAlMaXN0Q2Vs bCAgICppZHg7CiAKKwkvKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3Jp cHRpbmcgb3BlcmF0aW9uOyBhbHdheXMganNvbmIgKi8KKwlzYnNyZWYtPnJlZnJlc3R5cGUgPSBK U09OQk9JRDsKKwlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOworCisJaWYgKGpzb25iX2NoZWNrX2pz b25wYXRoX25lZWRlZCgqaW5kaXJlY3Rpb24pKQorCXsKKwkJc2JzcmVmLT5yZWZwcml2YXRlID0K KwkJCWpzb25iX3N1YnNjcmlwdF9tYWtlX2pzb25wYXRoKHBzdGF0ZSwgaW5kaXJlY3Rpb24sCisJ CQkJCQkJCQkJICAmc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIsCisJCQkJCQkJCQkJICAmc2JzcmVm LT5yZWZsb3dlcmluZGV4cHIpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBUcmFuc2Zvcm0g YW5kIGNvbnZlcnQgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9ucy4gSnNvbmIgc3Vic2NyaXB0aW5n CiAJICogZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMsIGxvb2sgb25seSBhbmQgdGhlIHVwcGVyIGlu ZGV4LgogCSAqLwogCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJeworCQlOb2RlCSAgICpp ID0gbGZpcnN0KGlkeCk7CiAJCUFfSW5kaWNlcyAgKmFpOwogCQlOb2RlCSAgICpzdWJFeHByOwog Ci0JCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQorCQlBc3NlcnQoSXNBKGksIEFf SW5kaWNlcykpOworCisJCWlmICghSXNBKGksIEFfSW5kaWNlcykpCiAJCQlicmVhazsKIAotCQlh aSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJYWkgPSBjYXN0Tm9kZShBX0luZGlj ZXMsIGkpOwogCiAJCWlmIChpc1NsaWNlKQogCQl7CkBAIC03NSw3MSArMzQ2LDggQEAganNvbmJf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAogCQlpZiAoYWkt PnVpZHgpCiAJCXsKLQkJCU9pZAkJCXN1YkV4cHJUeXBlID0gSW52YWxpZE9pZCwKLQkJCQkJCXRh cmdldFR5cGUgPSBVTktOT1dOT0lEOwotCiAJCQlzdWJFeHByID0gdHJhbnNmb3JtRXhwcihwc3Rh dGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsKLQkJCXN1YkV4cHJUeXBlID0gZXhw clR5cGUoc3ViRXhwcik7Ci0KLQkJCWlmIChzdWJFeHByVHlwZSAhPSBVTktOT1dOT0lEKQotCQkJ ewotCQkJCU9pZAkJCXRhcmdldHNbMl0gPSB7SU5UNE9JRCwgVEVYVE9JRH07Ci0KLQkJCQkvKgot CQkJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vic2NyaXB0IHR5cGVzLCBidXQgY2Fz ZXMgd2hlbiBhCi0JCQkJICogc3Vic2NyaXB0IGNvdWxkIGJlIGNvZXJjZWQgdG8gbXVsdGlwbGUg dGFyZ2V0IHR5cGVzIG11c3QgYmUKLQkJCQkgKiBhdm9pZGVkLCBzaW1pbGFyIHRvIG92ZXJsb2Fk ZWQgZnVuY3Rpb25zLiBJdCBjb3VsZCBiZQotCQkJCSAqIHBvc3NpYmx5IGV4dGVuZCB3aXRoIGpz b25wYXRoIGluIHRoZSBmdXR1cmUuCi0JCQkJICovCi0JCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAy OyBpKyspCi0JCQkJewotCQkJCQlpZiAoY2FuX2NvZXJjZV90eXBlKDEsICZzdWJFeHByVHlwZSwg JnRhcmdldHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKLQkJCQkJewotCQkJCQkJLyoKLQkJCQkJ CSAqIE9uZSB0eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwgaXQgbWVhbnMgdGhlcmUgYXJlCi0J CQkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0cyBwb3NzaWJsZSwgZmFpbHVyZS4KLQkJCQkJCSAq LwotCQkJCQkJaWYgKHRhcmdldFR5cGUgIT0gVU5LTk9XTk9JRCkKLQkJCQkJCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJ CQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVkIiwgZm9ybWF0 X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3Jp cHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUgdHlwZSwgaW50ZWdlciBvciB0ZXh0LiIp LAotCQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJF eHByKSkpKTsKLQotCQkJCQkJdGFyZ2V0VHlwZSA9IHRhcmdldHNbaV07Ci0JCQkJCX0KLQkJCQl9 Ci0KLQkJCQkvKgotCQkJCSAqIE5vIHN1aXRhYmxlIHR5cGVzIHdlcmUgZm91bmQsIGZhaWx1cmUu Ci0JCQkJICovCi0JCQkJaWYgKHRhcmdldFR5cGUgPT0gVU5LTk9XTk9JRCkKLQkJCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJ CQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVkIiwgZm9ybWF0 X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkgZXJyaGludCgianNvbmIgc3Vic2NyaXB0 IG11c3QgYmUgY29lcmNpYmxlIHRvIGVpdGhlciBpbnRlZ2VyIG9yIHRleHQuIiksCi0JCQkJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKLQkJ CX0KLQkJCWVsc2UKLQkJCQl0YXJnZXRUeXBlID0gVEVYVE9JRDsKLQotCQkJLyoKLQkJCSAqIFdl IGtub3duIGZyb20gY2FuX2NvZXJjZV90eXBlIHRoYXQgY29lcmNpb24gd2lsbCBzdWNjZWVkLCBz bwotCQkJICogY29lcmNlX3R5cGUgY291bGQgYmUgdXNlZC4gTm90ZSB0aGUgaW1wbGljaXQgY29l cmNpb24gY29udGV4dCwKLQkJCSAqIHdoaWNoIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSBzdWJzY3Jp cHRzIG9mIGRpZmZlcmVudCB0eXBlcywKLQkJCSAqIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZCBmdW5j dGlvbnMuCi0JCQkgKi8KLQkJCXN1YkV4cHIgPSBjb2VyY2VfdHlwZShwc3RhdGUsCi0JCQkJCQkJ CSAgc3ViRXhwciwgc3ViRXhwclR5cGUsCi0JCQkJCQkJCSAgdGFyZ2V0VHlwZSwgLTEsCi0JCQkJ CQkJCSAgQ09FUkNJT05fSU1QTElDSVQsCi0JCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1Qs Ci0JCQkJCQkJCSAgLTEpOwotCQkJaWYgKHN1YkV4cHIgPT0gTlVMTCkKLQkJCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCQkg ZXJybXNnKCJqc29uYiBzdWJzY3JpcHQgbXVzdCBoYXZlIHRleHQgdHlwZSIpLAotCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKwkJCXN1 YkV4cHIgPSBjb2VyY2VfanNvbnBhdGhfc3Vic2NyaXB0KHBzdGF0ZSwgc3ViRXhwciwgSU5UNE9J RCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0xNjEsMTAgKzM2OSw2IEBAIGpzb25iX3N1YnNjcmlw dF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJc2JzcmVmLT5yZWZ1cHBlcmlu ZGV4cHIgPSB1cHBlckluZGV4cHI7CiAJc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgPSBOSUw7CiAK LQkvKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3JpcHRpbmcgb3BlcmF0 aW9uOyBhbHdheXMganNvbmIgKi8KLQlzYnNyZWYtPnJlZnJlc3R5cGUgPSBKU09OQk9JRDsKLQlz YnNyZWYtPnJlZnR5cG1vZCA9IC0xOwotCiAJLyogUmVtb3ZlIHByb2Nlc3NlZCBlbGVtZW50cyAq LwogCWlmICh1cHBlckluZGV4cHIpCiAJCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0 X24oKmluZGlyZWN0aW9uLCBsaXN0X2xlbmd0aCh1cHBlckluZGV4cHIpKTsKQEAgLTIxOSw3ICs0 MjMsNyBAQCBqc29uYl9zdWJzY3JpcHRfY2hlY2tfc3Vic2NyaXB0cyhFeHByU3RhdGUgKnN0YXRl LAogCQkJICogRm9yIGpzb25iIGZldGNoIGFuZCBhc3NpZ24gZnVuY3Rpb25zIHdlIG5lZWQgdG8g cHJvdmlkZSBwYXRoIGluCiAJCQkgKiB0ZXh0IGZvcm1hdC4gQ29udmVydCBpZiBpdCdzIG5vdCBh bHJlYWR5IHRleHQuCiAJCQkgKi8KLQkJCWlmICh3b3Jrc3BhY2UtPmluZGV4T2lkW2ldID09IElO VDRPSUQpCisJCQlpZiAoIXdvcmtzcGFjZS0+anNvbnBhdGggJiYgd29ya3NwYWNlLT5pbmRleE9p ZFtpXSA9PSBJTlQ0T0lEKQogCQkJewogCQkJCURhdHVtCQlkYXR1bSA9IHNic3JlZnN0YXRlLT51 cHBlcmluZGV4W2ldOwogCQkJCWNoYXIJICAgKmNzID0gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1 bmN0aW9uQ2FsbDEoaW50NG91dCwgZGF0dW0pKTsKQEAgLTI0NywxNyArNDUxLDQ0IEBAIGpzb25i X3N1YnNjcmlwdF9mZXRjaChFeHByU3RhdGUgKnN0YXRlLAogewogCVN1YnNjcmlwdGluZ1JlZlN0 YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNic3JlZi5zdGF0ZTsKIAlKc29uYlN1YldvcmtzcGFj ZSAqd29ya3NwYWNlID0gKEpzb25iU3ViV29ya3NwYWNlICopIHNic3JlZnN0YXRlLT53b3Jrc3Bh Y2U7Ci0JSnNvbmIJICAgKmpzb25iU291cmNlOwogCiAJLyogU2hvdWxkIG5vdCBnZXQgaGVyZSBp ZiBzb3VyY2UganNvbmIgKG9yIGFueSBzdWJzY3JpcHQpIGlzIG51bGwgKi8KIAlBc3NlcnQoISgq b3AtPnJlc251bGwpKTsKIAotCWpzb25iU291cmNlID0gRGF0dW1HZXRKc29uYlAoKm9wLT5yZXN2 YWx1ZSk7Ci0JKm9wLT5yZXN2YWx1ZSA9IGpzb25iX2dldF9lbGVtZW50KGpzb25iU291cmNlLAot CQkJCQkJCQkJICB3b3Jrc3BhY2UtPmluZGV4LAotCQkJCQkJCQkJICBzYnNyZWZzdGF0ZS0+bnVt dXBwZXIsCi0JCQkJCQkJCQkgIG9wLT5yZXNudWxsLAotCQkJCQkJCQkJICBmYWxzZSk7CisJaWYg KHdvcmtzcGFjZS0+anNvbnBhdGgpCisJeworCQlib29sCQllbXB0eSA9IGZhbHNlOworCQlib29s CQllcnJvciA9IGZhbHNlOworCQlMaXN0CSAgICp2YXJzID0gJndvcmtzcGFjZS0+dmFyczsKKwkJ TGlzdENlbGwgICAqbGM7CisKKwkJLyogY29weSBjb21wdXRlZCB2YXJpYWJsZSB2YWx1ZXMgKi8K KwkJZm9yZWFjaChsYywgdmFycykKKwkJeworCQkJSnNvblBhdGhWYXJpYWJsZSAqdmFyID0gbGZp cnN0KGxjKTsKKwkJCWludAkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgobGMpOworCisJCQl2 YXItPnZhbHVlID0gd29ya3NwYWNlLT5pbmRleFtpXTsKKwkJCXZhci0+aXNudWxsID0gZmFsc2U7 CisJCX0KKworCQkqb3AtPnJlc3ZhbHVlID0gSnNvblBhdGhRdWVyeSgqb3AtPnJlc3ZhbHVlLCB3 b3Jrc3BhY2UtPmpzb25wYXRoLAorCQkJCQkJCQkJICBKU1dfQ09ORElUSU9OQUwsCisJCQkJCQkJ CQkgICZlbXB0eSwgJmVycm9yLCB2YXJzLAorCQkJCQkJCQkJICBOVUxMKTsKKworCQkqb3AtPnJl c251bGwgPSBlbXB0eSB8fCBlcnJvcjsKKwl9CisJZWxzZQorCXsKKwkJSnNvbmIJICAgKmpzb25i U291cmNlID0gRGF0dW1HZXRKc29uYlAoKm9wLT5yZXN2YWx1ZSk7CisKKwkJKm9wLT5yZXN2YWx1 ZSA9IGpzb25iX2dldF9lbGVtZW50KGpzb25iU291cmNlLAorCQkJCQkJCQkJCSAgd29ya3NwYWNl LT5pbmRleCwKKwkJCQkJCQkJCQkgIHNic3JlZnN0YXRlLT5udW11cHBlciwKKwkJCQkJCQkJCQkg IG9wLT5yZXNudWxsLAorCQkJCQkJCQkJCSAgZmFsc2UpOworCX0KIH0KIAogLyoKQEAgLTM2Nywx MiArNTk4LDU3IEBAIGpzb25iX2V4ZWNfc2V0dXAoY29uc3QgU3Vic2NyaXB0aW5nUmVmICpzYnNy ZWYsCiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJbnVwcGVyID0gc2JzcmVmLT5yZWZ1cHBlcmlu ZGV4cHItPmxlbmd0aDsKIAljaGFyCSAgICpwdHI7CisJYm9vbAkJdXNlSnNvbnBhdGggPSBzYnNy ZWYtPnJlZnByaXZhdGUgIT0gTlVMTDsKKwlKc29uUGF0aFZhcmlhYmxlICp2YXJzOworCWludAkJ CW52YXJzID0gdXNlSnNvbnBhdGggPyBudXBwZXIgOiAwOwogCiAJLyogQWxsb2NhdGUgdHlwZS1z cGVjaWZpYyB3b3Jrc3BhY2Ugd2l0aCBzcGFjZSBmb3IgcGVyLXN1YnNjcmlwdCBkYXRhICovCi0J d29ya3NwYWNlID0gcGFsbG9jMChNQVhBTElHTihzaXplb2YoSnNvbmJTdWJXb3Jrc3BhY2UpKSAr CisJd29ya3NwYWNlID0gcGFsbG9jMChNQVhBTElHTihvZmZzZXRvZihKc29uYlN1YldvcmtzcGFj ZSwgdmFycy5pbml0aWFsX2VsZW1lbnRzKSArIG52YXJzICogc2l6ZW9mKExpc3RDZWxsKSkgKwor CQkJCQkJTUFYQUxJR04obnZhcnMgKiBzaXplb2YoKnZhcnMpICsgbnZhcnMgKiAxNikgKwogCQkJ CQkJbnVwcGVyICogKHNpemVvZihEYXR1bSkgKyBzaXplb2YoT2lkKSkpOwogCXdvcmtzcGFjZS0+ ZXhwZWN0QXJyYXkgPSBmYWxzZTsKLQlwdHIgPSAoKGNoYXIgKikgd29ya3NwYWNlKSArIE1BWEFM SUdOKHNpemVvZihKc29uYlN1YldvcmtzcGFjZSkpOworCXB0ciA9ICgoY2hhciAqKSB3b3Jrc3Bh Y2UpICsKKwkJTUFYQUxJR04ob2Zmc2V0b2YoSnNvbmJTdWJXb3Jrc3BhY2UsIHZhcnMuaW5pdGlh bF9lbGVtZW50cykgKworCQkJCSBudmFycyAqIHNpemVvZihMaXN0Q2VsbCkpOworCisJaWYgKCF1 c2VKc29ucGF0aCkKKwkJd29ya3NwYWNlLT5qc29ucGF0aCA9IE5VTEw7CisJZWxzZQorCXsKKwkJ d29ya3NwYWNlLT5qc29ucGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKGNhc3ROb2RlKENvbnN0LCBz YnNyZWYtPnJlZnByaXZhdGUpLT5jb25zdHZhbHVlKTsKKworCQl2YXJzID0gKEpzb25QYXRoVmFy aWFibGUgKikgcHRyOworCQlwdHIgKz0gTUFYQUxJR04obnZhcnMgKiBzaXplb2YoKnZhcnMpKTsK KworCQl3b3Jrc3BhY2UtPnZhcnMudHlwZSA9IFRfTGlzdDsKKwkJd29ya3NwYWNlLT52YXJzLmxl bmd0aCA9IG52YXJzOworCQl3b3Jrc3BhY2UtPnZhcnMubWF4X2xlbmd0aCA9IG52YXJzOworCQl3 b3Jrc3BhY2UtPnZhcnMuZWxlbWVudHMgPSAmd29ya3NwYWNlLT52YXJzLmluaXRpYWxfZWxlbWVu dHNbMF07CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBudmFyczsgaSsrKQorCQl7CisJCQlOb2Rl CSAgICpleHByID0gbGlzdF9udGgoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIsIGkpOworCisJCQl3 b3Jrc3BhY2UtPnZhcnMuZWxlbWVudHNbaV0ucHRyX3ZhbHVlID0gJnZhcnNbaV07CisKKwkJCWlm IChleHByICYmIElzQShleHByLCBTdHJpbmcpKQorCQkJeworCQkJCXZhcnNbaV0udHlwaWQgPSBU RVhUT0lEOworCQkJCXZhcnNbaV0udHlwbW9kID0gLTE7CisJCQl9CisJCQllbHNlCisJCQl7CisJ CQkJdmFyc1tpXS50eXBpZCA9IGV4cHJUeXBlKGV4cHIpOworCQkJCXZhcnNbaV0udHlwbW9kID0g ZXhwclR5cG1vZChleHByKTsKKwkJCX0KKworCQkJdmFyc1tpXS5uYW1lID0gcHRyOworCQkJc25w cmludGYocHRyLCAxNiwgIiVkIiwgaSArIDEpOworCQkJdmFyc1tpXS5uYW1lbGVuID0gc3RybGVu KHB0cik7CisKKwkJCXB0ciArPSAxNjsKKwkJfQorCX0KIAogCS8qCiAJICogVGhpcyBjb2Rpbmcg YXNzdW1lcyBzaXplb2YoRGF0dW0pID49IHNpemVvZihPaWQpLCBlbHNlIHdlIG1pZ2h0CkBAIC0z OTAsNyArNjY2LDcgQEAganNvbmJfZXhlY19zZXR1cChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKnNi c3JlZiwKIAkJTm9kZQkgICAqZXhwciA9IGxmaXJzdChsYyk7CiAJCWludAkJCWkgPSBmb3JlYWNo X2N1cnJlbnRfaW5kZXgobGMpOwogCi0JCXdvcmtzcGFjZS0+aW5kZXhPaWRbaV0gPSBleHByVHlw ZShleHByKTsKKwkJd29ya3NwYWNlLT5pbmRleE9pZFtpXSA9IGpzb25iX3N1YnNjcmlwdF90eXBl KGV4cHIpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDgzOWU3MWQ1MmY0Li40 YjFlNWRlOThlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTcxOCw2ICs3MTgsOCBAQCB0eXBl ZGVmIHN0cnVjdCBTdWJzY3JpcHRpbmdSZWYKIAlFeHByCSAgICpyZWZleHByOwogCS8qIGV4cHJl c3Npb24gZm9yIHRoZSBzb3VyY2UgdmFsdWUsIG9yIE5VTEwgaWYgZmV0Y2ggKi8KIAlFeHByCSAg ICpyZWZhc3NnbmV4cHI7CisJLyogcHJpdmF0ZSBleHByZXNzaW9uICovCisJTm9kZQkgICAqcmVm cHJpdmF0ZTsKIH0gU3Vic2NyaXB0aW5nUmVmOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pz b25iLm91dAppbmRleCAyYmFmZjkzMWJmMi4uMTQxMjM5Mjk0NzUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvanNvbmIub3V0CkBAIC00OTM5LDYgKzQ5MzksMTIgQEAgc2VsZWN0ICgnMTIzJzo6anNv bmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5hOworIGEgCist LS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwogIGpzb25iIAogLS0t LS0tLQpAQCAtNDk1Nyw2ICs0OTYzLDEyIEBAIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydh J107CiAgMQogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKS5hOworIGEgCist LS0KKyAxCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWzBdOwogIGpzb25i IAogLS0tLS0tLQpAQCAtNDk2OSw2ICs0OTgxLDEyIEBAIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNv bmIpWydub3RfZXhpc3QnXTsKICAKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMX0nOjpqc29u YikuIm5vdF9leGlzdCI7Cisgbm90X2V4aXN0IAorLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwog c2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbTlVMTF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC00 OTgxLDYgKzQ5OTksMTIgQEAgc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJ2EnXTsK ICAKICgxIHJvdykKIAorc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuYTsKKyBhIAor LS0tCisgCisoMSByb3cpCisKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzBdOwog IGpzb25iIAogLS0tLS0tLQpAQCAtNDk5Myw2ICs1MDE3LDEyIEBAIHNlbGVjdCAoJ1sxLCAiMiIs IG51bGxdJzo6anNvbmIpWycxJ107CiAgIjIiCiAoMSByb3cpCiAKK3NlbGVjdCAoJ1sxLCAiMiIs IG51bGxdJzo6anNvbmIpLiIxIjsKKyAxIAorLS0tCisgCisoMSByb3cpCisKIHNlbGVjdCAoJ1sx LCAiMiIsIG51bGxdJzo6anNvbmIpWzEuMF07CiBFUlJPUjogIHN1YnNjcmlwdCB0eXBlIG51bWVy aWMgaXMgbm90IHN1cHBvcnRlZAogTElORSAxOiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompz b25iKVsxLjBdOwpAQCAtNTAyMiw2ICs1MDUyLDEyIEBAIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxd Jzo6anNvbmIpWzFdWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxd Jzo6anNvbmIpWzFdLmE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIi LCBudWxsXSc6Ompzb25iKVsxXVswXTsKICBqc29uYiAKIC0tLS0tLS0KQEAgLTUwMzQsNzMgKzUw NzAsMTQzIEBAIHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpq c29uYilbJ2InXTsKICAiYyIKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIs ICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5iOworICBiICAKKy0tLS0tCisgImMiCisoMSByb3cp CisKIHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilb J2QnXTsKICAgIGpzb25iICAgCiAtLS0tLS0tLS0tLQogIFsxLCAyLCAzXQogKDEgcm93KQogCitz ZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmQ7Cisg ICAgIGQgICAgIAorLS0tLS0tLS0tLS0KKyBbMSwgMiwgM10KKygxIHJvdykKKwogc2VsZWN0ICgn eyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWzFdOwogIGpz b25iIAogLS0tLS0tLQogIDIKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIs ICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kWzFdOworIGQgCistLS0KKyAyCisoMSByb3cpCisK IHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2Qn XVsnYSddOwogIGpzb25iIAogLS0tLS0tLQogIAogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiAx LCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmRbJ2EnXTsKKyBkIAorLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0n Ojpqc29uYikuZC5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogeyJh MSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSdd WydhMSddOwogICAgICBqc29uYiAgICAgCiAtLS0tLS0tLS0tLS0tLS0KICB7ImEyIjogImFhYSJ9 CiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAi YmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMTsKKyAgICAgIGExICAgICAgIAorLS0tLS0t LS0tLS0tLS0tCisgeyJhMiI6ICJhYWEifQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiB7ImEx IjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11b J2ExJ11bJ2EyJ107CiAganNvbmIgCiAtLS0tLS0tCiAgImFhYSIKICgxIHJvdykKIAorc2VsZWN0 ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6 Ompzb25iKS5hLmExLmEyOworICBhMiAgIAorLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKIHNl bGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2Nj In0nOjpqc29uYilbJ2EnXVsnYTEnXVsnYTInXVsnYTMnXTsKICBqc29uYiAKIC0tLS0tLS0KICAK ICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJi YmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyLmEzOworIGEzIAorLS0tLQorIAorKDEg cm93KQorCiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2Mi XX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ107CiAgICAgICAgICBqc29uYiAg ICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBbImFhYSIsICJiYmIiLCAiY2NjIl0K ICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAi Y2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxOworICAgICAgICAgIGIxICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJhYWEiLCAiYmJiIiwgImNjYyJdCiso MSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNj YyJdfV0sICJiIjogImJiIn0nOjpqc29uYilbJ2EnXVsxXVsnYjEnXVsyXTsKICBqc29uYiAKIC0t LS0tLS0KICAiY2NjIgogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsi YWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpLmFbMV0uYjFbMl07Cisg IGIxICAgCistLS0tLS0tCisgImNjYyIKKygxIHJvdykKKwogLS0gc2xpY2VzIGFyZSBub3Qgc3Vw cG9ydGVkCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSc6J2InXTsKLUVSUk9SOiAganNv bmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IHNlbGVjdCAoJ3si YSI6IDF9Jzo6anNvbmIpWydhJzonYiddOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorIGpzb25iIAorLS0tLS0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwg IjIiLCBudWxsXSc6Ompzb25iKVsxOjJdOwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMKLUxJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29u YilbMToyXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisg ICAganNvbmIgICAgCistLS0tLS0tLS0tLS0tCisgWyIyIiwgbnVsbF0KKygxIHJvdykKKwogc2Vs ZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbOjJdOwogRVJST1I6ICBqc29uYiBzdWJzY3Jp cHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKIExJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVs bF0nOjpqc29uYilbOjJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMTpdOwotRVJST1I6ICBqc29u YiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKLUxJTkUgMTogc2VsZWN0ICgnWzEs ICIyIiwgbnVsbF0nOjpqc29uYilbMTpdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCisgICAganNvbmIgICAgCistLS0tLS0tLS0tLS0tCisgWyIyIiwgbnVsbF0K KygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbOl07Ci1FUlJPUjog IGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcworICAgICBqc29uYiAgICAg IAorLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAiMiIsIG51bGxdCisoMSByb3cpCisKIGNyZWF0ZSBU RU1QIFRBQkxFIHRlc3RfanNvbmJfc3Vic2NyaXB0ICgKICAgICAgICBpZCBpbnQsCiAgICAgICAg dGVzdF9qc29uIGpzb25iCkBAIC01NzgxLDMgKzU4ODcsMTQyIEBAIHNlbGVjdCAnMTIzNDUuMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4 OwogIDEyMzQ1CiAoMSByb3cpCiAKKy0tIGRvdCBub3RhdGlvbgorQ1JFQVRFIFRBQkxFIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIEFTCitTRUxFQ1QgJ3siYSI6IFsxLCAyLCB7ImIiOiAiYyJ9LCB7 ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCAiYiI6 IFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV19Jzo6anNv bmIgamI7CitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJP UjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQorU0VMRUNUIChqYikuKiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIHQ7CitFUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0 ZQorU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK0VSUk9S OiAgdHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQor U0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIG1p c3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJ0IgorTElORSAxOiBTRUxFQ1QgKHQu amIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICBeCitT RUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworRVJST1I6ICB0 eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUKK1NFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMSwg MiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoi OiAienp6In19XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsIDIsIHsi YiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6 eiJ9fV0KKygxIHJvdykKKworU0VMRUNUIChqYikuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgIGIgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb MywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dCisoMSByb3cp CisKK1NFTEVDVCAoamIpLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyBjIAorLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworICAgICBiICAgICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAiZCJdCisoMSByb3cpCisK K1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworRVJST1I6ICB0 eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUKK1NFTEVDVCAoamIpLmEuKi5iIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVh ciAiRlJPTSIKK0xJTkUgMTogU0VMRUNUIChqYikuYS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIChqYikuYS4qLngg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VSUk9SOiAgaW1wcm9wZXIgdXNlIG9mICIq IiBhdCBvciBuZWFyICJGUk9NIgorTElORSAxOiBTRUxFQ1QgKGpiKS5hLioueCBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1Qg KGpiKS5hLioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworRVJST1I6ICBpbXByb3Bl ciB1c2Ugb2YgIioiIGF0IG9yIG5lYXIgIkZST00iCitMSU5FIDE6IFNFTEVDVCAoamIpLmEuKi55 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK1NFTEVDVCAoamIpLmEuKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJP UjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIKK0xJTkUgMTogU0VMRUNU IChqYikuYS4qLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CitFUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIKK0xJTkUg MTogU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAg ICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbiB0OworRVJST1I6ICBpbXByb3BlciB1c2Ugb2YgIioiIGF0IG9yIG5lYXIgIkZST00i CitMSU5FIDE6IFNFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7 CisgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKChqYikuKikueCBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIHQ7CitFUlJPUjogIHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBu b3Qgc3VwcG9ydGVkIGhlcmUKK0xJTkUgMTogU0VMRUNUICgoamIpLiopLnggRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKChqYikuKiku eCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitFUlJPUjogIHJvdyBleHBhbnNpb24g dmlhICIqIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUKK0xJTkUgMTogU0VMRUNUICgoamIpLiopLngg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgKChqYikuKilbOl0ueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitFUlJPUjog IHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUKK0xJTkUgMTogU0VM RUNUICgoamIpLiopWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKK0VSUk9SOiAgaW1wcm9wZXIgdXNlIG9mICIqIiBhdCBvciBuZWFyICJGUk9NIgorTElORSAx OiBTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAoamIpLioueC4qIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitFUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIK K0xJTkUgMTogU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIChqYikuKi54LnkgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VSUk9SOiAgaW1wcm9wZXIgdXNlIG9mICIqIiBhdCBvciBu ZWFyICJGUk9NIgorTElORSAxOiBTRUxFQ1QgKGpiKS4qLngueSBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKGpiKS4qLngu eiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworRVJST1I6ICBpbXByb3BlciB1c2Ugb2Yg IioiIGF0IG9yIG5lYXIgIkZST00iCitMSU5FIDE6IFNFTEVDVCAoamIpLioueC56IEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVD VCAoamIpLiouKi55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIGltcHJv cGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIKK0xJTkUgMTogU0VMRUNUIChqYikuKi4q LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorU0VMRUNUIChqYikuKi4qLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VS Uk9SOiAgaW1wcm9wZXIgdXNlIG9mICIqIiBhdCBvciBuZWFyICJGUk9NIgorTElORSAxOiBTRUxF Q1QgKGpiKS4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgKGpiKS4qLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitFUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIK K0xJTkUgMTogU0VMRUNUIChqYikuKi4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAoamIpLmEuYi5jLiogRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VSUk9SOiAgdHlwZSBqc29uYiBpcyBub3QgY29t cG9zaXRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VSUk9SOiAgdHlwZSBqc29uYiBpcyBub3QgY29tcG9z aXRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiBq Yi5hCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIp LmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlv bgorICAgT3V0cHV0OiBqYi5hWzFdCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmEuKlsnYiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CitFUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIKK0xJTkUgMTog RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hLipbJ2InXSBGUk9NIHRl c3RfLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hLipb MToyXVsnYiddLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VSUk9SOiAgaW1wcm9w ZXIgdXNlIG9mICIqIiBhdCBvciBuZWFyICJGUk9NIgorTElORSAxOiAuLi4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUIChqYikuYS4qWzE6Ml1bJ2InXS5iIEZST00gdGVzdF8uLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggNTQ0YmI2MTBlMmQuLjRiNDlkNTkyMjJiIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xMjg2LDMwICsxMjg2LDQ2IEBAIHNlbGVjdCBqc29uYl9p bnNlcnQoJ3siYSI6IHsiYiI6ICJ2YWx1ZSJ9fScsICd7YSwgYn0nLCAnIm5ld192YWx1ZSInLCB0 cnVlKTsKIAogLS0ganNvbmIgc3Vic2NyaXB0CiBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2EnXTsK K3NlbGVjdCAoJzEyMyc6Ompzb25iKS5hOwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwogc2Vs ZWN0ICgnMTIzJzo6anNvbmIpW05VTExdOwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2En XTsKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpLmE7CiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompz b25iKVswXTsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydub3RfZXhpc3QnXTsKK3NlbGVj dCAoJ3siYSI6IDF9Jzo6anNvbmIpLiJub3RfZXhpc3QiOwogc2VsZWN0ICgneyJhIjogMX0nOjpq c29uYilbTlVMTF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsnYSddOworc2Vs ZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuYTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxd Jzo6anNvbmIpWzBdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJzEnXTsKK3Nl bGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpLiIxIjsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51 bGxdJzo6anNvbmIpWzEuMF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsyXTsK IHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzNdOwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbLTJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV1b J2EnXTsKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdLmE7CiBzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKVsxXVswXTsKIHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMi LCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2InXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjog ImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuYjsKIHNlbGVjdCAoJ3siYSI6IDEsICJiIjog ImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2QnXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJi IjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZDsKIHNlbGVjdCAoJ3siYSI6IDEsICJi IjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2QnXVsxXTsKK3NlbGVjdCAoJ3siYSI6 IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsxXTsKIHNlbGVjdCAoJ3si YSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2QnXVsnYSddOworc2Vs ZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kWydhJ107 CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmQu YTsKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMi OiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEnXTsKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEy IjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMTsKIHNlbGVj dCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0n Ojpqc29uYilbJ2EnXVsnYTEnXVsnYTInXTsKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjog ImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMjsKIHNlbGVj dCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0n Ojpqc29uYilbJ2EnXVsnYTEnXVsnYTInXVsnYTMnXTsKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7 ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMi5h MzsKIHNlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0s ICJiIjogImJiIn0nOjpqc29uYilbJ2EnXVsxXVsnYjEnXTsKK3NlbGVjdCAoJ3siYSI6IFsiYTEi LCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29uYikuYVsx XS5iMTsKIHNlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJd fV0sICJiIjogImJiIn0nOjpqc29uYilbJ2EnXVsxXVsnYjEnXVsyXTsKK3NlbGVjdCAoJ3siYSI6 IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29u YikuYVsxXS5iMVsyXTsKIAogLS0gc2xpY2VzIGFyZSBub3Qgc3VwcG9ydGVkCiBzZWxlY3QgKCd7 ImEiOiAxfSc6Ompzb25iKVsnYSc6J2InXTsKQEAgLTE1NzIsMyArMTU4OCw0MyBAQCBzZWxlY3Qg JzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpq c29uYjo6ZmxvYXQ4Owogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDI7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50NDsKIHNl bGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw NSc6Ompzb25iOjppbnQ4OworCistLSBkb3Qgbm90YXRpb24KK0NSRUFURSBUQUJMRSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiBBUworU0VMRUNUICd7ImEiOiBbMSwgMiwgeyJiIjogImMifSwgeyJi IjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgImIiOiBb MywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dfSc6Ompzb25i IGpiOworCitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxF Q1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAodC5qYiku KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKGpiKS4qIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u IHQ7CitTRUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1Qg KGpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5jIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNU IChqYikuYS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEu Ki54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLioueSBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qLiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsK K1NFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVD VCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpi KS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLiou eCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi54LiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueC55IEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qLngueiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworU0VMRUNUIChqYikuKi4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1NFTEVDVCAoamIpLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1Qg KGpiKS4qLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5h LmIuYy4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIp LmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUIChqYikuYS4qWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4qWzE6Ml1bJ2In XS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCgo= --00000000000009b350062d5ff81f Content-Type: application/octet-stream; name="v7-0005-Allow-processing-of-.-by-generic-subscripting.patch" Content-Disposition: attachment; filename="v7-0005-Allow-processing-of-.-by-generic-subscripting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6rjrolv4 RnJvbSBiMzc2YjAyM2FlZDViNDc2OWNiMjlkYWE3ZjU1ZTZlYjIyYjkwYWZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNToyNiArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djcgNS81XSBBbGxvdyBwcm9jZXNzaW5nIG9mIC4qIGJ5IGdlbmVyaWMgc3Vic2NyaXB0aW5nCgot LS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgIHwgIDM0ICsrKy0tCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMgICB8ICA2MCArKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5o ICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDE5NSAr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRp b25zKCspLCA5NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBkN2Y5YzAwYzQwOS4uNWY2 OWFjNjYxYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTg5NTksNiArMTg5NTksNyBAQCBjaGVja19mdW5j X25hbWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogc3RhdGljIExpc3Qg KgogY2hlY2tfaW5kaXJlY3Rpb24oTGlzdCAqaW5kaXJlY3Rpb24sIGNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKQogeworI2lmIDAKIAlMaXN0Q2VsbCAgICpsOwogCiAJZm9yZWFjaChsLCBpbmRpcmVj dGlvbikKQEAgLTE4OTY5LDYgKzE4OTcwLDcgQEAgY2hlY2tfaW5kaXJlY3Rpb24oTGlzdCAqaW5k aXJlY3Rpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCXBhcnNlcl95eWVycm9yKCJp bXByb3BlciB1c2Ugb2YgXCIqXCIiKTsKIAkJfQogCX0KKyNlbmRpZgogCXJldHVybiBpbmRpcmVj dGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggYWZlOTUzZmRiZWEuLmIwYzM4 NTI5ODcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTc0LDcgKzc0LDYgQEAgc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkgIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQkJCQkJCQkgIGlu dCBzdWJsZXZlbHNfdXAsIGludCBsb2NhdGlvbik7Ci1zdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5k aXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRj KTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2xsYXRlQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ29sbGF0ZUNsYXVzZSAqYyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvbk9iamVjdENv bnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwKQEAgLTE1OCw3ICsxNTcsNyBAQCB0cmFuc2Zv cm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlicmVhazsK IAogCQljYXNlIFRfQV9JbmRpcmVjdGlvbjoKLQkJCXJlc3VsdCA9IHRyYW5zZm9ybUluZGlyZWN0 aW9uKHBzdGF0ZSwgKEFfSW5kaXJlY3Rpb24gKikgZXhwcik7CisJCQlyZXN1bHQgPSB0cmFuc2Zv cm1JbmRpcmVjdGlvbihwc3RhdGUsIChBX0luZGlyZWN0aW9uICopIGV4cHIsIE5VTEwpOwogCQkJ YnJlYWs7CiAKIAkJY2FzZSBUX0FfQXJyYXlFeHByOgpAQCAtNDMyLDggKzQzMSw5IEBAIHVua25v d25fYXR0cmlidXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcmVscmVmLCBjb25zdCBjaGFy ICphdHRuYW1lLAogCX0KIH0KIAotc3RhdGljIE5vZGUgKgotdHJhbnNmb3JtSW5kaXJlY3Rpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCitOb2RlICoKK3RyYW5zZm9y bUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAorCQkJ CQkgYm9vbCAqdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24pCiB7CiAJTm9kZQkgICAqbGFzdF9zcmYg PSBwc3RhdGUtPnBfbGFzdF9zcmY7CiAJTm9kZQkgICAqcmVzdWx0ID0gdHJhbnNmb3JtRXhwclJl Y3Vyc2UocHN0YXRlLCBpbmQtPmFyZyk7CkBAIC00NTMsMTIgKzQ1Myw3IEBAIHRyYW5zZm9ybUlu ZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCQlpZiAo SXNBKG4sIEFfSW5kaWNlcykpCiAJCQlzdWJzY3JpcHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBu KTsKIAkJZWxzZSBpZiAoSXNBKG4sIEFfU3RhcikpCi0JCXsKLQkJCWVyZXBvcnQoRVJST1IsCi0J CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1z Zygicm93IGV4cGFuc2lvbiB2aWEgXCIqXCIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIiksCi0JCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKLQkJfQorCQkJc3Vic2Ny aXB0cyA9IGxhcHBlbmQoc3Vic2NyaXB0cywgbik7CiAJCWVsc2UKIAkJewogCQkJQXNzZXJ0KElz QShuLCBTdHJpbmcpKTsKQEAgLTQ4Nyw3ICs0ODIsMjEgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAKIAkJCW4gPSBsaW5pdGlh bChzdWJzY3JpcHRzKTsKIAotCQkJaWYgKCFJc0EobiwgU3RyaW5nKSkKKwkJCWlmIChJc0Eobiwg QV9TdGFyKSkKKwkJCXsKKwkJCQkvKiBTdWNjZXNzLCBpZiB0cmFpbGluZyBzdGFyIGV4cGFuc2lv biBpcyBhbGxvd2VkICovCisJCQkJaWYgKHRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uICYmIGxpc3Rf bGVuZ3RoKHN1YnNjcmlwdHMpID09IDEpCisJCQkJeworCQkJCQkqdHJhaWxpbmdfc3Rhcl9leHBh bnNpb24gPSB0cnVlOworCQkJCQlyZXR1cm4gcmVzdWx0OworCQkJCX0KKworCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCQkgZXJybXNnKCJyb3cgZXhwYW5zaW9uIHZpYSBcIipcIiBpcyBub3Qgc3VwcG9ydGVkIGhl cmUiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwkJ CX0KKwkJCWVsc2UgaWYgKCFJc0EobiwgU3RyaW5nKSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJCQkgZXJybXNnKCJj YW5ub3Qgc3Vic2NyaXB0IHR5cGUgJXMgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdXBwb3J0IHN1YnNj cmlwdGluZyIsCkBAIC01MTMsNiArNTIyLDkgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCXJlc3VsdCA9IG5ld3Jlc3VsdDsK IAl9CiAKKwlpZiAodHJhaWxpbmdfc3Rhcl9leHBhbnNpb24pCisJCSp0cmFpbGluZ19zdGFyX2V4 cGFuc2lvbiA9IGZhbHNlOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jCmluZGV4IDVlMTI2MTQ1ZWE1Li45NjVlMmYwNmU3YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV90YXJnZXQuYwpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQXNz aWdubWVudFN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogc3RhdGljIExpc3QgKkV4cGFu ZENvbHVtblJlZlN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYsCiAJCQkJ CQkJCSBib29sIG1ha2VfdGFyZ2V0X2VudHJ5KTsKIHN0YXRpYyBMaXN0ICpFeHBhbmRBbGxUYWJs ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBpbnQgbG9jYXRpb24pOwotc3RhdGljIExpc3QgKkV4cGFu ZEluZGlyZWN0aW9uU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCwK K3N0YXRpYyBOb2RlICpFeHBhbmRJbmRpcmVjdGlvblN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0luZGlyZWN0aW9uICppbmQsCiAJCQkJCQkJCSAgIGJvb2wgbWFrZV90YXJnZXRfZW50cnksIFBh cnNlRXhwcktpbmQgZXhwcktpbmQpOwogc3RhdGljIExpc3QgKkV4cGFuZFNpbmdsZVRhYmxlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJCQkJICAg aW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uLApAQCAtMTM0LDYgKzEzNCw3IEBAIHRyYW5z Zm9ybVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICp0YXJnZXRsaXN0LAogCWZv cmVhY2gob190YXJnZXQsIHRhcmdldGxpc3QpCiAJewogCQlSZXNUYXJnZXQgICpyZXMgPSAoUmVz VGFyZ2V0ICopIGxmaXJzdChvX3RhcmdldCk7CisJCU5vZGUJICAgKnRyYW5zZm9ybWVkID0gTlVM TDsKIAogCQkvKgogCQkgKiBDaGVjayBmb3IgInNvbWV0aGluZy4qIi4gIERlcGVuZGluZyBvbiB0 aGUgY29tcGxleGl0eSBvZiB0aGUKQEAgLTE2MiwxMyArMTYzLDE5IEBAIHRyYW5zZm9ybVRhcmdl dExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICp0YXJnZXRsaXN0LAogCiAJCQkJaWYgKElz QShsbGFzdChpbmQtPmluZGlyZWN0aW9uKSwgQV9TdGFyKSkKIAkJCQl7Ci0JCQkJCS8qIEl0IGlz IHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLwotCQkJCQlwX3Rhcmdl dCA9IGxpc3RfY29uY2F0KHBfdGFyZ2V0LAotCQkJCQkJCQkJCSAgIEV4cGFuZEluZGlyZWN0aW9u U3Rhcihwc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkJIGluZCwKLQkJCQkJCQkJCQkJCQkJCQkgdHJ1 ZSwKLQkJCQkJCQkJCQkJCQkJCQkgZXhwcktpbmQpKTsKLQkJCQkJY29udGludWU7CisJCQkJCU5v ZGUJICAgKmNvbHVtbnMgPSBFeHBhbmRJbmRpcmVjdGlvblN0YXIocHN0YXRlLAorCQkJCQkJCQkJ CQkJCQkJCWluZCwKKwkJCQkJCQkJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJCQkJCQkJCWV4cHJL aW5kKTsKKworCQkJCQlpZiAoSXNBKGNvbHVtbnMsIExpc3QpKQorCQkJCQl7CisJCQkJCQkvKiBJ dCBpcyBzb21ldGhpbmcuKiwgZXhwYW5kIGludG8gbXVsdGlwbGUgaXRlbXMgKi8KKwkJCQkJCXBf dGFyZ2V0ID0gbGlzdF9jb25jYXQocF90YXJnZXQsIChMaXN0ICopIGNvbHVtbnMpOworCQkJCQkJ Y29udGludWU7CisJCQkJCX0KKworCQkJCQl0cmFuc2Zvcm1lZCA9IChOb2RlICopIGNvbHVtbnM7 CiAJCQkJfQogCQkJfQogCQl9CkBAIC0xODAsNyArMTg3LDcgQEAgdHJhbnNmb3JtVGFyZ2V0TGlz dChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3QsCiAJCXBfdGFyZ2V0ID0gbGFw cGVuZChwX3RhcmdldCwKIAkJCQkJCSAgIHRyYW5zZm9ybVRhcmdldEVudHJ5KHBzdGF0ZSwKIAkJ CQkJCQkJCQkJCXJlcy0+dmFsLAotCQkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJCXRyYW5z Zm9ybWVkLAogCQkJCQkJCQkJCQkJZXhwcktpbmQsCiAJCQkJCQkJCQkJCQlyZXMtPm5hbWUsCiAJ CQkJCQkJCQkJCQlmYWxzZSkpOwpAQCAtMjUxLDEwICsyNTgsMTUgQEAgdHJhbnNmb3JtRXhwcmVz c2lvbkxpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpleHBybGlzdCwKIAogCQkJaWYgKElz QShsbGFzdChpbmQtPmluZGlyZWN0aW9uKSwgQV9TdGFyKSkKIAkJCXsKLQkJCQkvKiBJdCBpcyBz b21ldGhpbmcuKiwgZXhwYW5kIGludG8gbXVsdGlwbGUgaXRlbXMgKi8KLQkJCQlyZXN1bHQgPSBs aXN0X2NvbmNhdChyZXN1bHQsCi0JCQkJCQkJCQkgRXhwYW5kSW5kaXJlY3Rpb25TdGFyKHBzdGF0 ZSwgaW5kLAotCQkJCQkJCQkJCQkJCQkgICBmYWxzZSwgZXhwcktpbmQpKTsKKwkJCQlOb2RlCSAg ICpjb2xzID0gRXhwYW5kSW5kaXJlY3Rpb25TdGFyKHBzdGF0ZSwgaW5kLAorCQkJCQkJCQkJCQkJ CQkgZmFsc2UsIGV4cHJLaW5kKTsKKworCQkJCWlmICghY29scyB8fCBJc0EoY29scywgTGlzdCkp CisJCQkJCS8qIEl0IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAq LworCQkJCQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIChMaXN0ICopIGNvbHMpOworCQkJ CWVsc2UKKwkJCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIGNvbHMpOworCiAJCQkJY29udGlu dWU7CiAJCQl9CiAJCX0KQEAgLTEzNDgsMjIgKzEzNjAsMzAgQEAgRXhwYW5kQWxsVGFibGVzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgaW50IGxvY2F0aW9uKQogICogRm9yIHJvYnVzdG5lc3MsIHdlIHVz ZSBhIHNlcGFyYXRlICJtYWtlX3RhcmdldF9lbnRyeSIgZmxhZyB0byBjb250cm9sCiAgKiB0aGlz IHJhdGhlciB0aGFuIHJlbHlpbmcgb24gZXhwcktpbmQuCiAgKi8KLXN0YXRpYyBMaXN0ICoKK3N0 YXRpYyBOb2RlICoKIEV4cGFuZEluZGlyZWN0aW9uU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIEFf SW5kaXJlY3Rpb24gKmluZCwKIAkJCQkJICBib29sIG1ha2VfdGFyZ2V0X2VudHJ5LCBQYXJzZUV4 cHJLaW5kIGV4cHJLaW5kKQogewogCU5vZGUJICAgKmV4cHI7CisJUGFyc2VFeHByS2luZCBzdl9l eHByX2tpbmQ7CisJYm9vbAkJdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24gPSBmYWxzZTsKKworCS8q IFNhdmUgYW5kIHJlc3RvcmUgaWRlbnRpdHkgb2YgZXhwcmVzc2lvbiB0eXBlIHdlJ3JlIHBhcnNp bmcgKi8KKwlBc3NlcnQoZXhwcktpbmQgIT0gRVhQUl9LSU5EX05PTkUpOworCXN2X2V4cHJfa2lu ZCA9IHBzdGF0ZS0+cF9leHByX2tpbmQ7CisJcHN0YXRlLT5wX2V4cHJfa2luZCA9IGV4cHJLaW5k OwogCiAJLyogU3RyaXAgb2ZmIHRoZSAnKicgdG8gY3JlYXRlIGEgcmVmZXJlbmNlIHRvIHRoZSBy b3d0eXBlIG9iamVjdCAqLwotCWluZCA9IGNvcHlPYmplY3QoaW5kKTsKLQlpbmQtPmluZGlyZWN0 aW9uID0gbGlzdF90cnVuY2F0ZShpbmQtPmluZGlyZWN0aW9uLAotCQkJCQkJCQkJIGxpc3RfbGVu Z3RoKGluZC0+aW5kaXJlY3Rpb24pIC0gMSk7CisJZXhwciA9IHRyYW5zZm9ybUluZGlyZWN0aW9u KHBzdGF0ZSwgaW5kLCAmdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24pOworCisJcHN0YXRlLT5wX2V4 cHJfa2luZCA9IHN2X2V4cHJfa2luZDsKIAotCS8qIEFuZCB0cmFuc2Zvcm0gdGhhdCAqLwotCWV4 cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgaW5kLCBleHByS2luZCk7CisJLyog JyonIHdhcyBjb25zdW1lZCBieSBnZW5lcmljIHR5cGUgc3Vic2NyaXB0aW5nICovCisJaWYgKCF0 cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKKwkJcmV0dXJuIGV4cHI7CiAKIAkvKiBFeHBhbmQgdGhl IHJvd3R5cGUgZXhwcmVzc2lvbiBpbnRvIGluZGl2aWR1YWwgZmllbGRzICovCi0JcmV0dXJuIEV4 cGFuZFJvd1JlZmVyZW5jZShwc3RhdGUsIGV4cHIsIG1ha2VfdGFyZ2V0X2VudHJ5KTsKKwlyZXR1 cm4gKE5vZGUgKikgRXhwYW5kUm93UmVmZXJlbmNlKHBzdGF0ZSwgZXhwciwgbWFrZV90YXJnZXRf ZW50cnkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGFmNTQxN2Qw ODU5Li4xMDAwNmI3NDlkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTI5MTks NyArMTI5MTksMTEgQEAgcHJpbnRTdWJzY3JpcHRzKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJewogCQlOb2RlCSAgICp1cCA9IChOb2RlICopIGxm aXJzdCh1cGxpc3RfaXRlbSk7CiAKLQkJaWYgKElzQSh1cCwgU3RyaW5nKSkKKwkJaWYgKCF1cCkK KwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIuKiIpOworCQl9CisJCWVsc2Ug aWYgKElzQSh1cCwgU3RyaW5nKSkKIAkJewogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn LicpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoc3Ry VmFsKHVwKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgKaW5kZXggZWZiYWZmOGU3MTAuLmM5ZjZh NzcyNGMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgKQEAgLTIyLDQgKzIyLDcgQEAgZXh0ZXJu IE5vZGUgKnRyYW5zZm9ybUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBQYXJz ZUV4cHJLaW5kIGV4cHJLaW4KIAogZXh0ZXJuIGNvbnN0IGNoYXIgKlBhcnNlRXhwcktpbmROYW1l KFBhcnNlRXhwcktpbmQgZXhwcktpbmQpOwogCitleHRlcm4gTm9kZSAqdHJhbnNmb3JtSW5kaXJl Y3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQsCisJCQkJCQkJCSAg Ym9vbCAqdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24pOworCiAjZW5kaWYJCQkJCQkJLyogUEFSU0Vf RVhQUl9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IDE0MTIzOTI5NDc1 Li45MDU3MTg2YmRmMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTU4OTEs MTkgKzU4OTEsMzkgQEAgc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDg7CiBDUkVBVEUgVEFCTEUgdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gQVMKIFNFTEVDVCAneyJhIjogWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6 ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sICJiIjogWzMs IDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XX0nOjpqc29uYiBq YjsKIFNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLUVSUk9SOiAg dHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpiICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5 IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoi OiAiWlpaIn19XV0KKygxIHJvdykKKwogU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uIHQ7Ci1FUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUi OiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIs ICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisKIFNFTEVDVCAodC5q YikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7Ci1FUlJPUjogIHR5cGUganNvbmIg aXMgbm90IGNvbXBvc2l0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBqYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsi YiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6 eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1d CisoMSByb3cpCisKIFNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK LUVSUk9SOiAgdHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpiICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7 InkiOiAieXl5IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAi WVlZIiwgInoiOiAiWlpaIn19XV0KKygxIHJvdykKKwogU0VMRUNUICh0LmpiKS4qIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CiBFUlJPUjogIG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50cnkg Zm9yIHRhYmxlICJ0IgogTElORSAxOiBTRUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwotRVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3Np dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgamIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW1sxLCAyLCB7ImIiOiAiYyJ9LCB7ImIi OiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCBbMywgNCwg eyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dXQorKDEgcm93KQorCiBT RUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01OTM1LDc1ICs1OTU1LDEyMCBAQCBTRUxFQ1QgKGpi KS5hLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKICgxIHJvdykKIAogU0VMRUNUIChq YikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIHR5cGUganNvbmIg aXMgbm90IGNvbXBvc2l0ZQorICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsiYyIs ICJkIiwgImYiLCB7InkiOiAieXl5IiwgInoiOiAienp6In1dCisoMSByb3cpCisKIFNFTEVDVCAo amIpLmEuKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIGltcHJvcGVy IHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIKLUxJTkUgMTogU0VMRUNUIChqYikuYS4qLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg XgorIGIgCistLS0KKyAKKygxIHJvdykKKwogU0VMRUNUIChqYikuYS4qLnggRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKLUVSUk9SOiAgaW1wcm9wZXIgdXNlIG9mICIqIiBhdCBvciBuZWFy ICJGUk9NIgotTElORSAxOiBTRUxFQ1QgKGpiKS5hLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgeCAKKy0tLQorIAorKDEgcm93 KQorCiBTRUxFQ1QgKGpiKS5hLioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotRVJS T1I6ICBpbXByb3BlciB1c2Ugb2YgIioiIGF0IG9yIG5lYXIgIkZST00iCi1MSU5FIDE6IFNFTEVD VCAoamIpLmEuKi55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKyAgIHkgICAKKy0tLS0tLS0KKyAieXl5IgorKDEgcm93KQorCiBTRUxF Q1QgKGpiKS5hLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotRVJST1I6ICBpbXBy b3BlciB1c2Ugb2YgIioiIGF0IG9yIG5lYXIgIkZST00iCi1MSU5FIDE6IFNFTEVDVCAoamIpLmEu Ki4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKyAgICAgICBhICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBbInl5eSIsICJ6enoi XQorKDEgcm93KQorCiBTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKLUVSUk9SOiAgaW1wcm9wZXIgdXNlIG9mICIqIiBhdCBvciBuZWFyICJGUk9NIgotTElORSAx OiBTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAg ICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZWSIs ICJ6IjogIlpaWiJ9XQorKDEgcm93KQorCiBTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbiB0OwotRVJST1I6ICBpbXByb3BlciB1c2Ugb2YgIioiIGF0IG9yIG5lYXIg IkZST00iCi1MSU5FIDE6IFNFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uIHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHggICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFt7InkiOiAieXl5IiwgInoiOiAienp6 In0sIHsieSI6ICJZWVkiLCAieiI6ICJaWloifV0KKygxIHJvdykKKwogU0VMRUNUICgoamIpLiop LnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwotRVJST1I6ICByb3cgZXhwYW5zaW9u IHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlCi1MSU5FIDE6IFNFTEVDVCAoKGpiKS4qKS54 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKLSAgICAgICAgICAgICAgICAgXgorIHgg CistLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICgoamIpLiopLnggRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbiB0OwotRVJST1I6ICByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBv cnRlZCBoZXJlCi1MSU5FIDE6IFNFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKLSAgICAgICAgICAgICAgICAgXgorIHggCistLS0KKyAKKygxIHJvdykKKwog U0VMRUNUICgoamIpLiopWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwotRVJS T1I6ICByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlCi1MSU5FIDE6 IFNFTEVDVCAoKGpiKS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKLSAg ICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZIiwg InoiOiAiWlpaIn1dCisoMSByb3cpCisKIFNFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOwotRVJST1I6ICBpbXByb3BlciB1c2Ugb2YgIioiIGF0IG9yIG5lYXIgIkZS T00iCi1MSU5FIDE6IFNFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OwotICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICB4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7 InkiOiAiWVlZIiwgInoiOiAiWlpaIn1dCisoMSByb3cpCisKIFNFTEVDVCAoamIpLioueC4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIg YXQgb3IgbmVhciAiRlJPTSIKLUxJTkUgMTogU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAg ICAgICB4ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb Inl5eSIsICJ6enoiLCAiWVlZIiwgIlpaWiJdCisoMSByb3cpCisKIFNFTEVDVCAoamIpLioueC55 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIGltcHJvcGVyIHVzZSBvZiAi KiIgYXQgb3IgbmVhciAiRlJPTSIKLUxJTkUgMTogU0VMRUNUIChqYikuKi54LnkgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAg IHkgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgIllZWSJdCisoMSByb3cpCisK IFNFTEVDVCAoamIpLioueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjog IGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIKLUxJTkUgMTogU0VMRUNUIChq YikuKi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorICAgICAgIHogICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsienp6Iiwg IlpaWiJdCisoMSByb3cpCisKIFNFTEVDVCAoamIpLiouKi55IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247Ci1FUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIgYXQgb3IgbmVhciAiRlJPTSIK LUxJTkUgMTogU0VMRUNUIChqYikuKi4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgIHkgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLQorIFsieXl5IiwgIllZWSJdCisoMSByb3cpCisKIFNFTEVDVCAoamIpLiouKi4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIGltcHJvcGVyIHVzZSBvZiAiKiIg YXQgb3IgbmVhciAiRlJPTSIKLUxJTkUgMTogU0VMRUNUIChqYikuKi4qLiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAg ICAgICBqYiAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb Inl5eSIsICJ6enoiLCAiWVlZIiwgIlpaWiJdCisoMSByb3cpCisKIFNFTEVDVCAoamIpLiouKi4q LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLUVSUk9SOiAgaW1wcm9wZXIgdXNlIG9m ICIqIiBhdCBvciBuZWFyICJGUk9NIgotTElORSAxOiBTRUxFQ1QgKGpiKS4qLiouKi4qIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor IGpiIAorLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKGpiKS5hLmIuYy4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQor IGMgCistLS0KKyAKKygxIHJvdykKKwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1FUlJPUjogIHR5cGUganNv bmIgaXMgbm90IGNvbXBvc2l0ZQorICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IGpi LioKKygyIHJvd3MpCisKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYiku YSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkBAIC02MDE5LDEwICs2MDg0LDE2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogKDIg cm93cykKIAogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hLipbJ2In XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotRVJST1I6ICBpbXByb3BlciB1c2Ugb2Yg IioiIGF0IG9yIG5lYXIgIkZST00iCi1MSU5FIDE6IEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIChqYikuYS4qWydiJ10gRlJPTSB0ZXN0Xy4uLgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9u b3RhdGlvbgorICAgT3V0cHV0OiBqYi5hLipbJ2InOjp0ZXh0XQorKDIgcm93cykKKwogRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hLipbMToyXVsnYiddLmIgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLUVSUk9SOiAgaW1wcm9wZXIgdXNlIG9mICIqIiBhdCBv ciBuZWFyICJGUk9NIgotTElORSAxOiAuLi4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq YikuYS4qWzE6Ml1bJ2InXS5iIEZST00gdGVzdF8uLi4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90 YXRpb24KKyAgIE91dHB1dDogamIuYS4qWzE6Ml1bOidiJzo6dGV4dF0uYgorKDIgcm93cykKKwot LSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000009b350062d5ff81f Content-Type: application/octet-stream; name="v7-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v7-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6rjrols2 RnJvbSAwMTVmMDFiNDRmYTk5ZmUxMjQyYjIxY2I4MzczNmU0ZDMxZmE1NjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNTo1NSArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djcgMy81XSBFeHBvcnQganNvblBhdGhGcm9tUGFyc2VSZXN1bHQoKQoKLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbnBhdGguYyB8IDI0ICsrKysrKysrKysrKysrKysrKy0tLS0tLQogc3Jj L2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCAgICAgfCAgNCArKysrCiAyIGZpbGVzIGNoYW5nZWQs IDIyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGgu YwppbmRleCA3NjJmN2U4YTA5ZC4uYTMyNzBiZGFiYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29ucGF0aC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0 aC5jCkBAIC0xNjUsMTYgKzE2NSwxMiBAQCBqc29ucGF0aF9zZW5kKFBHX0ZVTkNUSU9OX0FSR1Mp CiAvKgogICogQ29udmVydHMgQy1zdHJpbmcgdG8gYSBqc29ucGF0aCB2YWx1ZS4KICAqCi0gKiBV c2VzIGpzb25wYXRoIHBhcnNlciB0byB0dXJuIHN0cmluZyBpbnRvIGFuIEFTVCwgdGhlbgotICog ZmxhdHRlbkpzb25QYXRoUGFyc2VJdGVtKCkgZG9lcyBzZWNvbmQgcGFzcyB0dXJuaW5nIEFTVCBp bnRvIGJpbmFyeQotICogcmVwcmVzZW50YXRpb24gb2YganNvbnBhdGguCisgKiBVc2VzIGpzb25w YXRoIHBhcnNlciB0byB0dXJuIHN0cmluZyBpbnRvIGFuIEFTVC4KICAqLwogc3RhdGljIERhdHVt CiBqc29uUGF0aEZyb21Dc3RyaW5nKGNoYXIgKmluLCBpbnQgbGVuLCBzdHJ1Y3QgTm9kZSAqZXNj b250ZXh0KQogewogCUpzb25QYXRoUGFyc2VSZXN1bHQgKmpzb25wYXRoID0gcGFyc2Vqc29ucGF0 aChpbiwgbGVuLCBlc2NvbnRleHQpOwotCUpzb25QYXRoICAgKnJlczsKLQlTdHJpbmdJbmZvRGF0 YSBidWY7CiAKIAlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQogCQlyZXR1cm4g KERhdHVtKSAwOwpAQCAtMTg1LDggKzE4MSwyNCBAQCBqc29uUGF0aEZyb21Dc3RyaW5nKGNoYXIg KmluLCBpbnQgbGVuLCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KQogCQkJCSBlcnJtc2coImludmFs aWQgaW5wdXQgc3ludGF4IGZvciB0eXBlICVzOiBcIiVzXCIiLCAianNvbnBhdGgiLAogCQkJCQkJ aW4pKSk7CiAKKwlyZXR1cm4ganNvblBhdGhGcm9tUGFyc2VSZXN1bHQoanNvbnBhdGgsIDQgKiBs ZW4sIGVzY29udGV4dCk7Cit9CisKKy8qCisgKiBDb252ZXJ0cyBqc29ucGF0aCBBU1QgdG8gYSBq c29ucGF0aCB2YWx1ZS4KKyAqCisgKiBmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oKSBkb2VzIHNl Y29uZCBwYXNzIHR1cm5pbmcgQVNUIGludG8gYmluYXJ5CisgKiByZXByZXNlbnRhdGlvbiBvZiBq c29ucGF0aC4KKyAqLworRGF0dW0KK2pzb25QYXRoRnJvbVBhcnNlUmVzdWx0KEpzb25QYXRoUGFy c2VSZXN1bHQgKmpzb25wYXRoLCBpbnQgZXN0aW1hdGVkX2xlbiwKKwkJCQkJCXN0cnVjdCBOb2Rl ICplc2NvbnRleHQpCit7CisJSnNvblBhdGggICAqcmVzOworCVN0cmluZ0luZm9EYXRhIGJ1ZjsK KwogCWluaXRTdHJpbmdJbmZvKCZidWYpOwotCWVubGFyZ2VTdHJpbmdJbmZvKCZidWYsIDQgKiBs ZW4gLyogZXN0aW1hdGlvbiAqLyApOworCWVubGFyZ2VTdHJpbmdJbmZvKCZidWYsIGVzdGltYXRl ZF9sZW4pOwogCiAJYXBwZW5kU3RyaW5nSW5mb1NwYWNlcygmYnVmLCBKU09OUEFUSF9IRFJTWik7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggYi9zcmMvaW5jbHVk ZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDIzYTc2ZDIzM2U5Li5lMDU5NDE2MjNlNyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9qc29ucGF0aC5oCkBAIC0yODEsNiArMjgxLDEwIEBAIGV4dGVybiBKc29uUGF0aFBhcnNlUmVz dWx0ICpwYXJzZWpzb25wYXRoKGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbiwKIGV4dGVybiBib29s IGpzcENvbnZlcnRSZWdleEZsYWdzKHVpbnQzMiB4ZmxhZ3MsIGludCAqcmVzdWx0LAogCQkJCQkJ CQkgc3RydWN0IE5vZGUgKmVzY29udGV4dCk7CiAKK2V4dGVybiBEYXR1bSBqc29uUGF0aEZyb21Q YXJzZVJlc3VsdChKc29uUGF0aFBhcnNlUmVzdWx0ICpqc29ucGF0aCwKKwkJCQkJCQkJCSBpbnQg ZXN0aW1hdGVkX2xlbiwKKwkJCQkJCQkJCSBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKKwogLyoK ICAqIFN0cnVjdCBmb3IgZGV0YWlscyBhYm91dCBleHRlcm5hbCB2YXJpYWJsZXMgcGFzc2VkIGlu dG8ganNvbnBhdGggZXhlY3V0b3IKICAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000009b350062d5ff81f Content-Type: application/octet-stream; name="v7-0002-Pass-field-accessors-to-generic-subscripting.patch" Content-Disposition: attachment; filename="v7-0002-Pass-field-accessors-to-generic-subscripting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6rjrolq1 RnJvbSAyOTg0NTAzM2NjZTFkZTBlODBiM2MxOWQ0ZTU2YjUxNGQwOTRlOTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAxNjoyMToyMCArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djcgMi81XSBQYXNzIGZpZWxkIGFjY2Vzc29ycyB0byBnZW5lcmljIHN1YnNjcmlwdGluZwoKLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgIHwgMjQgKysrKysrKy0tLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICB8IDczICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyB8IDIyICsrKysr KystLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICB8IDU4ICsrKysrKysrKysr KysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyAgICB8IDM5ICsr KysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgfCAgMyAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jICB8IDEzICsrKystLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jICB8IDExICsrKystCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgIHwgMjkgKysrKysrKystLS0tCiBzcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oICAgIHwgIDMgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDIxOCBpbnNlcnRpb25z KCspLCA1NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCAwMzU2NmM0 ZDE4MS4uYmU0MjEzNDU1ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMzMyOCw5ICsz MzI4LDE1IEBAIEV4ZWNJbml0U3Vic2NyaXB0aW5nUmVmKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwg U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCXsKIAkJCXNic3JlZnN0YXRlLT51cHBlcnByb3Zp ZGVkW2ldID0gdHJ1ZTsKIAkJCS8qIEVhY2ggc3Vic2NyaXB0IGlzIGV2YWx1YXRlZCBpbnRvIGFw cHJvcHJpYXRlIGFycmF5IGVudHJ5ICovCi0JCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCi0J CQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4W2ldLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+ dXBwZXJpbmRleG51bGxbaV0pOworCQkJaWYgKElzQShlLCBTdHJpbmcpKQorCQkJeworCQkJCXNi c3JlZnN0YXRlLT51cHBlcmluZGV4W2ldID0gQ1N0cmluZ0dldFRleHREYXR1bShzdHJWYWwoZSkp OworCQkJCXNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSA9IGZhbHNlOworCQkJfQorCQkJ ZWxzZQorCQkJCUV4ZWNJbml0RXhwclJlYyhlLCBzdGF0ZSwKKwkJCQkJCQkJJnNic3JlZnN0YXRl LT51cHBlcmluZGV4W2ldLAorCQkJCQkJCQkmc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ld KTsKIAkJfQogCQlpKys7CiAJfQpAQCAtMzM1MSw5ICszMzU3LDE1IEBAIEV4ZWNJbml0U3Vic2Ny aXB0aW5nUmVmKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYs CiAJCXsKIAkJCXNic3JlZnN0YXRlLT5sb3dlcnByb3ZpZGVkW2ldID0gdHJ1ZTsKIAkJCS8qIEVh Y2ggc3Vic2NyaXB0IGlzIGV2YWx1YXRlZCBpbnRvIGFwcHJvcHJpYXRlIGFycmF5IGVudHJ5ICov Ci0JCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCi0JCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dl cmluZGV4W2ldLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleG51bGxbaV0pOworCQkJ aWYgKElzQShlLCBTdHJpbmcpKQorCQkJeworCQkJCXNic3JlZnN0YXRlLT5sb3dlcmluZGV4W2ld ID0gQ1N0cmluZ0dldFRleHREYXR1bShzdHJWYWwoZSkpOworCQkJCXNic3JlZnN0YXRlLT5sb3dl cmluZGV4bnVsbFtpXSA9IGZhbHNlOworCQkJfQorCQkJZWxzZQorCQkJCUV4ZWNJbml0RXhwclJl YyhlLCBzdGF0ZSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dlcmluZGV4W2ldLAorCQkJCQkJ CQkmc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldKTsKIAkJfQogCQlpKys7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYwppbmRleCA3YmM4MjM1MDdmMS4uYTljMjlhYjhmMjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25v ZGVGdW5jcy5jCkBAIC0yMTgyLDEyICsyMTgyLDI4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJf aW1wbChOb2RlICpub2RlLAogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJewogCQkJCVN1 YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlwdGluZ1JlZiAqKSBub2RlOworCQkJCUxp c3RDZWxsICAgKmxjOworCisJCQkJLyoKKwkJCQkgKiBSZWN1cnNlIGRpcmVjdGx5IGZvciB1cHBl ci9sb3dlciBjb250YWluZXIgaW5kZXggbGlzdHMsCisJCQkJICogc2tpcHBpbmcgU3RyaW5nIHN1 YnNjcmlwdHMgdXNlZCBmb3IgZG90IG5vdGF0aW9uLgorCQkJCSAqLworCQkJCWZvcmVhY2gobGMs IHNic3JlZi0+cmVmdXBwZXJpbmRleHByKQorCQkJCXsKKwkJCQkJTm9kZQkgICAqZXhwciA9IGxm aXJzdChsYyk7CisKKwkJCQkJaWYgKGV4cHIgJiYgIUlzQShleHByLCBTdHJpbmcpICYmIFdBTEso ZXhwcikpCisJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9CisKKwkJCQlmb3JlYWNoKGxjLCBzYnNy ZWYtPnJlZmxvd2VyaW5kZXhwcikKKwkJCQl7CisJCQkJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3Qo bGMpOworCisJCQkJCWlmIChleHByICYmICFJc0EoZXhwciwgU3RyaW5nKSAmJiBXQUxLKGV4cHIp KQorCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQogCi0JCQkJLyogcmVjdXJzZSBkaXJlY3RseSBm b3IgdXBwZXIvbG93ZXIgY29udGFpbmVyIGluZGV4IGxpc3RzICovCi0JCQkJaWYgKExJU1RfV0FM SyhzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJCWlmIChM SVNUX1dBTEsoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIpKQotCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJ CQkvKiB3YWxrZXIgbXVzdCBzZWUgdGhlIHJlZmV4cHIgYW5kIHJlZmFzc2duZXhwciwgaG93ZXZl ciAqLwogCQkJCWlmIChXQUxLKHNic3JlZi0+cmVmZXhwcikpCiAJCQkJCXJldHVybiB0cnVlOwpA QCAtMzA4MiwxMiArMzA5OCw1MSBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUg Km5vZGUsCiAJCQl7CiAJCQkJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYgPSAoU3Vic2NyaXB0aW5n UmVmICopIG5vZGU7CiAJCQkJU3Vic2NyaXB0aW5nUmVmICpuZXdub2RlOworCQkJCUxpc3RDZWxs ICAgKmxjOworCQkJCUxpc3QJICAgKmV4cHJzID0gTklMOwogCiAJCQkJRkxBVENPUFkobmV3bm9k ZSwgc2JzcmVmLCBTdWJzY3JpcHRpbmdSZWYpOwotCQkJCU1VVEFURShuZXdub2RlLT5yZWZ1cHBl cmluZGV4cHIsIHNic3JlZi0+cmVmdXBwZXJpbmRleHByLAotCQkJCQkgICBMaXN0ICopOwotCQkJ CU1VVEFURShuZXdub2RlLT5yZWZsb3dlcmluZGV4cHIsIHNic3JlZi0+cmVmbG93ZXJpbmRleHBy LAotCQkJCQkgICBMaXN0ICopOworCisJCQkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZ1cHBlcmlu ZGV4cHIpCisJCQkJeworCQkJCQlOb2RlCSAgICpleHByID0gbGZpcnN0KGxjKTsKKworCQkJCQlp ZiAoZXhwciAmJiBJc0EoZXhwciwgU3RyaW5nKSkKKwkJCQkJeworCQkJCQkJU3RyaW5nCSAgICpz dHI7CisKKwkJCQkJCUZMQVRDT1BZKHN0ciwgZXhwciwgU3RyaW5nKTsKKwkJCQkJCWV4cHIgPSAo Tm9kZSAqKSBzdHI7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJZXhwciA9IG11dGF0b3IoZXhw ciwgY29udGV4dCk7CisKKwkJCQkJZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCBleHByKTsKKwkJCQl9 CisKKwkJCQluZXdub2RlLT5yZWZ1cHBlcmluZGV4cHIgPSBleHByczsKKworCQkJCWV4cHJzID0g TklMOworCisJCQkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIpCisJCQkJewor CQkJCQlOb2RlCSAgICpleHByID0gbGZpcnN0KGxjKTsKKworCQkJCQlpZiAoZXhwciAmJiBJc0Eo ZXhwciwgU3RyaW5nKSkKKwkJCQkJeworCQkJCQkJU3RyaW5nCSAgICpzdHI7CisKKwkJCQkJCUZM QVRDT1BZKHN0ciwgZXhwciwgU3RyaW5nKTsKKwkJCQkJCWV4cHIgPSAoTm9kZSAqKSBzdHI7CisJ CQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJZXhwciA9IG11dGF0b3IoZXhwciwgY29udGV4dCk7CisK KwkJCQkJZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCBleHByKTsKKwkJCQl9CisKKwkJCQluZXdub2Rl LT5yZWZsb3dlcmluZGV4cHIgPSBleHByczsKKwogCQkJCU1VVEFURShuZXdub2RlLT5yZWZleHBy LCBzYnNyZWYtPnJlZmV4cHIsCiAJCQkJCSAgIEV4cHIgKik7CiAJCQkJTVVUQVRFKG5ld25vZGUt PnJlZmFzc2duZXhwciwgc2JzcmVmLT5yZWZhc3NnbmV4cHIsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Nv bGxhdGUuYwppbmRleCBkMmUyMTgzNTNmMy4uYmU2ZGVhNmZmZDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NvbGxhdGUuYwpAQCAtNjgwLDExICs2ODAsMjUgQEAgYXNzaWduX2NvbGxhdGlvbnNfd2Fs a2VyKE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25zX2NvbnRleHQgKmNvbnRleHQpCiAJCQkJ CQkJICogY29udHJpYnV0ZSBhbnl0aGluZy4pCiAJCQkJCQkJICovCiAJCQkJCQkJU3Vic2NyaXB0 aW5nUmVmICpzYnNyZWYgPSAoU3Vic2NyaXB0aW5nUmVmICopIG5vZGU7CisJCQkJCQkJTGlzdENl bGwgICAqbGM7CisKKwkJCQkJCQkvKiBza2lwIFN0cmluZyBzdWJzY3JpcHRzIHVzZWQgZm9yIGRv dCBub3RhdGlvbiAqLworCQkJCQkJCWZvcmVhY2gobGMsIHNic3JlZi0+cmVmdXBwZXJpbmRleHBy KQorCQkJCQkJCXsKKwkJCQkJCQkJTm9kZQkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJCQkJ CQkJaWYgKGV4cHIgJiYgIUlzQShleHByLCBTdHJpbmcpKQorCQkJCQkJCQkJYXNzaWduX2V4cHJf Y29sbGF0aW9ucyhjb250ZXh0LT5wc3RhdGUsIGV4cHIpOworCQkJCQkJCX0KKworCQkJCQkJCWZv cmVhY2gobGMsIHNic3JlZi0+cmVmbG93ZXJpbmRleHByKQorCQkJCQkJCXsKKwkJCQkJCQkJTm9k ZQkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJCQkJCQkJaWYgKGV4cHIgJiYgIUlzQShleHBy LCBTdHJpbmcpKQorCQkJCQkJCQkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhjb250ZXh0LT5wc3Rh dGUsIGV4cHIpOworCQkJCQkJCX0KIAotCQkJCQkJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMoY29u dGV4dC0+cHN0YXRlLAotCQkJCQkJCQkJCQkJICAgKE5vZGUgKikgc2JzcmVmLT5yZWZ1cHBlcmlu ZGV4cHIpOwotCQkJCQkJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMoY29udGV4dC0+cHN0YXRlLAot CQkJCQkJCQkJCQkJICAgKE5vZGUgKikgc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIpOwogCQkJCQkJ CSh2b2lkKSBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIoKE5vZGUgKikgc2JzcmVmLT5yZWZleHBy LAogCQkJCQkJCQkJCQkJCQkJJmxvY2NvbnRleHQpOwogCQkJCQkJCSh2b2lkKSBhc3NpZ25fY29s bGF0aW9uc193YWxrZXIoKE5vZGUgKikgc2JzcmVmLT5yZWZhc3NnbmV4cHIsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwppbmRleCAyYzBmNGE1MGIyMS4uYWZlOTUzZmRiZWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtNDYxLDE5ICs0NjEsNDAgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCX0KIAkJZWxzZQogCQl7Ci0J CQlOb2RlCSAgICpuZXdyZXN1bHQ7Ci0KIAkJCUFzc2VydChJc0EobiwgU3RyaW5nKSk7CisJCQlz dWJzY3JpcHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKKwkJfQorCX0KKworCS8qIHByb2Nl c3MgdHJhaWxpbmcgc3Vic2NyaXB0cywgaWYgYW55ICovCisJd2hpbGUgKHN1YnNjcmlwdHMpCisJ eworCQlOb2RlCSAgICpuZXdyZXN1bHQgPSAoTm9kZSAqKQorCQkJdHJhbnNmb3JtQ29udGFpbmVy U3Vic2NyaXB0cyhwc3RhdGUsCisJCQkJCQkJCQkJIHJlc3VsdCwKKwkJCQkJCQkJCQkgZXhwclR5 cGUocmVzdWx0KSwKKwkJCQkJCQkJCQkgZXhwclR5cG1vZChyZXN1bHQpLAorCQkJCQkJCQkJCSAm c3Vic2NyaXB0cywKKwkJCQkJCQkJCQkgZmFsc2UsCisJCQkJCQkJCQkJIHRydWUpOworCisJCWlm ICghbmV3cmVzdWx0KQorCQl7CisJCQkvKiBnZW5lcmljIHN1YnNjcmlwdGluZyBmYWlsZWQgKi8K KwkJCU5vZGUJICAgKm47CisKKwkJCUFzc2VydChzdWJzY3JpcHRzKTsKKworCQkJbiA9IGxpbml0 aWFsKHN1YnNjcmlwdHMpOwogCi0JCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMg ZmllbGQgc2VsZWN0aW9uICovCi0JCQl3aGlsZSAoc3Vic2NyaXB0cykKLQkJCQlyZXN1bHQgPSAo Tm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKLQkJCQkJCQkJCQkJ CQkJCSAgIHJlc3VsdCwKLQkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJlc3VsdCksCi0JCQkJ CQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJCQkgICAmc3Vi c2NyaXB0cywKLQkJCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKKwkJCWlmICghSXNBKG4sIFN0cmlu ZykpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVzIGJlY2F1 c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAorCQkJCQkJCQlmb3JtYXRfdHlw ZV9iZShleHByVHlwZShyZXN1bHQpKSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKHJlc3VsdCkpKSk7CiAKKwkJCS8qIHRyeSB0byBmaW5kIGZ1bmN0aW9u IGZvciBmaWVsZCBzZWxlY3Rpb24gKi8KIAkJCW5ld3Jlc3VsdCA9IFBhcnNlRnVuY09yQ29sdW1u KHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCiAJCQkJCQkJCQkJICBsaXN0X21h a2UxKHJlc3VsdCksCkBAIC00ODEsMTkgKzUwMiwxNiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJCQkJCQkJCQkgIE5VTEws CiAJCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCQkgIGxvY2F0aW9uKTsKLQkJCWlmIChuZXdy ZXN1bHQgPT0gTlVMTCkKKworCQkJaWYgKCFuZXdyZXN1bHQpCiAJCQkJdW5rbm93bl9hdHRyaWJ1 dGUocHN0YXRlLCByZXN1bHQsIHN0clZhbChuKSwgbG9jYXRpb24pOwotCQkJcmVzdWx0ID0gbmV3 cmVzdWx0OworCisJCQkvKiBjb25zdW1lIGZpZWxkIHNlbGVjdCAqLworCQkJc3Vic2NyaXB0cyA9 IGxpc3RfZGVsZXRlX2ZpcnN0KHN1YnNjcmlwdHMpOwogCQl9CisKKwkJcmVzdWx0ID0gbmV3cmVz dWx0OwogCX0KLQkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlmIGFueSAqLwotCXdo aWxlIChzdWJzY3JpcHRzKQotCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJT dWJzY3JpcHRzKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJCQkJCQkJCQkJ ICAgZXhwclR5cGUocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCks Ci0JCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJICAgZmFsc2UpOwog CiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmluZGV4IDE5YTZiNjc4 ZTY3Li5jMWY4MDU1NTY0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25v ZGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCkBAIC0yNDUsMTMgKzI0 NSwxNSBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1v ZCwKIAkJCQkJCQkgTGlzdCAqKmluZGlyZWN0aW9uLAotCQkJCQkJCSBib29sIGlzQXNzaWdubWVu dCkKKwkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJIGJvb2wgbm9FcnJvcikKIHsK IAlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZjsKIAljb25zdCBTdWJzY3JpcHRSb3V0aW5lcyAqc2Jz cm91dGluZXM7CiAJT2lkCQkJZWxlbWVudFR5cGU7CiAJYm9vbAkJaXNTbGljZSA9IGZhbHNlOwog CUxpc3RDZWxsICAgKmlkeDsKKwlpbnQJCQlpbmRpcmVjdGlvbl9sZW5ndGggPSBsaXN0X2xlbmd0 aCgqaW5kaXJlY3Rpb24pOwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBjb250YWlu ZXIgdHlwZSwgc21hc2hpbmcgYW55IGRvbWFpbi4gIEluIHRoZQpAQCAtMjY3LDExICsyNjksMTYg QEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICov CiAJc2Jzcm91dGluZXMgPSBnZXRTdWJzY3JpcHRpbmdSb3V0aW5lcyhjb250YWluZXJUeXBlLCAm ZWxlbWVudFR5cGUpOwogCWlmICghc2Jzcm91dGluZXMpCisJeworCQlpZiAobm9FcnJvcikKKwkJ CXJldHVybiBOVUxMOworCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVz IGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAogCQkJCQkJZm9ybWF0 X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBleHByTG9jYXRpb24oY29udGFpbmVyQmFzZSkpKSk7CisJfQogCiAJLyoKIAkgKiBEZXRlY3Qg d2hldGhlciBhbnkgb2YgdGhlIGluZGlyZWN0aW9uIGl0ZW1zIGFyZSBzbGljZSBzcGVjaWZpZXJz LgpAQCAtMjgyLDkgKzI4OSw5IEBAIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCSAqLwogCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewotCQlB X0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJTm9kZQkgICAq YWkgPSBsZmlyc3QoaWR4KTsKIAotCQlpZiAoYWktPmlzX3NsaWNlKQorCQlpZiAoSXNBKGFpLCBB X0luZGljZXMpICYmIGNhc3ROb2RlKEFfSW5kaWNlcywgYWkpLT5pc19zbGljZSkKIAkJewogCQkJ aXNTbGljZSA9IHRydWU7CiAJCQlicmVhazsKQEAgLTMxMiw2ICszMTksMzIgQEAgdHJhbnNmb3Jt Q29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJc2Jzcm91dGluZXMtPnRy YW5zZm9ybShzYnNyZWYsIGluZGlyZWN0aW9uLCBwc3RhdGUsCiAJCQkJCQkgICBpc1NsaWNlLCBp c0Fzc2lnbm1lbnQpOwogCisJLyoKKwkgKiBFcnJvciBvdXQsIGlmIGRhdGF0eW9lIGZhbGllZCB0 byBjb25zdW1lIGFueSBpbmRpcmVjdGlvbiBlbGVtZW50cy4KKwkgKi8KKwlpZiAobGlzdF9sZW5n dGgoKmluZGlyZWN0aW9uKSA9PSBpbmRpcmVjdGlvbl9sZW5ndGgpCisJeworCQlOb2RlCSAgICpp bmQgPSBsaW5pdGlhbCgqaW5kaXJlY3Rpb24pOworCisJCWlmIChub0Vycm9yKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJaWYgKElzQShpbmQsIFN0cmluZykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidHlw ZSAlcyBkb2VzIG5vdCBzdXBwb3J0IGNvbHVtbiBub3RhdGlvbiIsCisJCQkJCQkJZm9ybWF0X3R5 cGVfYmUoY29udGFpbmVyVHlwZSkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZXhwckxvY2F0aW9uKGNvbnRhaW5lckJhc2UpKSkpOworCQllbHNlIGlmIChJc0EoaW5kLCBBX0lu ZGljZXMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInR5cGUgJXMgZG9lcyBub3Qgc3VwcG9ydCBhcnJh eSBzdWJzY3JpcHRpbmciLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvbnRhaW5lclR5cGUpKSwK KwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihjb250YWluZXJC YXNlKSkpKTsKKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgaW5kaXJlY3Rpb24gb3Bl cmF0aW9uOiAlZCIsIG5vZGVUYWcoaW5kKSk7CisJfQorCiAJLyoKIAkgKiBWZXJpZnkgd2UgZ290 IGEgdmFsaWQgdHlwZSAodGhpcyBkZWZlbmRzLCBmb3IgZXhhbXBsZSwgYWdhaW5zdCBzb21lb25l CiAJICogdXNpbmcgYXJyYXlfc3Vic2NyaXB0X2hhbmRsZXIgYXMgdHlwc3Vic2NyaXB0IHdpdGhv dXQgc2V0dGluZyB0eXBlbGVtKS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCAzOWZk ODJmODM3MS4uNWUxMjYxNDVlYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTkz Nyw3ICs5MzcsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBlLAogCQkJCQkJCQkJCSAgY29udGFpbmVy VHlwTW9kLAogCQkJCQkJCQkJCSAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJICB0cnVlKTsKKwkJ CQkJCQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAlpZiAoc3Vic2NyaXB0cykK IAkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGluZyBhc3NpZ25tZW50IGlzIG5vdCBzdXBwb3J0ZWQi KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwppbmRleCBlZGQ4NWY3YmE2Ny4uZmUxOGRmODZl NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMKQEAgLTYxLDYgKzYxLDcgQEAgYXJyYXlf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlMaXN0CSAgICp1 cHBlckluZGV4cHIgPSBOSUw7CiAJTGlzdAkgICAqbG93ZXJJbmRleHByID0gTklMOwogCUxpc3RD ZWxsICAgKmlkeDsKKwlpbnQJCQluZGltOwogCiAJLyoKIAkgKiBUcmFuc2Zvcm0gdGhlIHN1YnNj cmlwdCBleHByZXNzaW9ucywgYW5kIHNlcGFyYXRlIHVwcGVyIGFuZCBsb3dlcgpAQCAtNzIsOSAr NzMsMTQgQEAgYXJyYXlfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZiwKIAkgKi8KIAlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKLQkJQV9JbmRpY2VzICAq YWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisJCUFfSW5kaWNlcyAgKmFpOwogCQlO b2RlCSAgICpzdWJleHByOwogCisJCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQor CQkJYnJlYWs7CisKKwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisKIAkJaWYg KGlzU2xpY2UpCiAJCXsKIAkJCWlmIChhaS0+bGlkeCkKQEAgLTE0NCwxNCArMTUwLDE1IEBAIGFy cmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJc2JzcmVm LT5yZWZsb3dlcmluZGV4cHIgPSBsb3dlckluZGV4cHI7CiAKIAkvKiBWZXJpZnkgc3Vic2NyaXB0 IGxpc3QgbGVuZ3RocyBhcmUgd2l0aGluIGltcGxlbWVudGF0aW9uIGxpbWl0ICovCi0JaWYgKGxp c3RfbGVuZ3RoKHVwcGVySW5kZXhwcikgPiBNQVhESU0pCisJbmRpbSA9IGxpc3RfbGVuZ3RoKHVw cGVySW5kZXhwcik7CisJaWYgKG5kaW0gPiBNQVhESU0pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJu dW1iZXIgb2YgYXJyYXkgZGltZW5zaW9ucyAoJWQpIGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dl ZCAoJWQpIiwKIAkJCQkJCWxpc3RfbGVuZ3RoKHVwcGVySW5kZXhwciksIE1BWERJTSkpKTsKIAkv KiBXZSBuZWVkIG5vdCBjaGVjayBsb3dlckluZGV4cHIgc2VwYXJhdGVseSAqLwogCi0JKmluZGly ZWN0aW9uID0gTklMOworCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0X24oKmluZGly ZWN0aW9uLCBuZGltKTsKIAogCS8qCiAJICogRGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0 aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbi4gIEl0J3MgdGhlIHNhbWUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYnN1YnMuYwppbmRleCA4YWQ2YWExYWQ0Zi4uYTBkMzhhMGZkODAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmJzdWJzLmMKQEAgLTU1LDkgKzU1LDE0IEBAIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zv cm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJICovCiAJZm9yZWFjaChpZHgsICppbmRpcmVj dGlvbikKIAl7Ci0JCUFfSW5kaWNlcyAgKmFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBpZHgp OworCQlBX0luZGljZXMgICphaTsKIAkJTm9kZQkgICAqc3ViRXhwcjsKIAorCQlpZiAoIUlzQShs Zmlyc3QoaWR4KSwgQV9JbmRpY2VzKSkKKwkJCWJyZWFrOworCisJCWFpID0gbGZpcnN0X25vZGUo QV9JbmRpY2VzLCBpZHgpOworCiAJCWlmIChpc1NsaWNlKQogCQl7CiAJCQlOb2RlCSAgICpleHBy ID0gYWktPnVpZHggPyBhaS0+dWlkeCA6IGFpLT5saWR4OwpAQCAtMTYwLDcgKzE2NSw5IEBAIGpz b25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJc2JzcmVm LT5yZWZyZXN0eXBlID0gSlNPTkJPSUQ7CiAJc2JzcmVmLT5yZWZ0eXBtb2QgPSAtMTsKIAotCSpp bmRpcmVjdGlvbiA9IE5JTDsKKwkvKiBSZW1vdmUgcHJvY2Vzc2VkIGVsZW1lbnRzICovCisJaWYg KHVwcGVySW5kZXhwcikKKwkJKmluZGlyZWN0aW9uID0gbGlzdF9kZWxldGVfZmlyc3RfbigqaW5k aXJlY3Rpb24sIGxpc3RfbGVuZ3RoKHVwcGVySW5kZXhwcikpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCmluZGV4IDU0ZGFkOTc1NTUzLi5hZjU0MTdkMDg1OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVz L3BhdGhub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3N1YnNjcmlwdGluZy5oIgogI2luY2x1ZGUg Im9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfYWdnLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMuaCIKQEAgLTEyOTE2LDE3ICsxMjkxNywyOSBAQCBw cmludFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCkKIAlsb3dsaXN0X2l0ZW0gPSBsaXN0X2hlYWQoc2JzcmVmLT5yZWZsb3dlcmluZGV4 cHIpOwkvKiBjb3VsZCBiZSBOVUxMICovCiAJZm9yZWFjaCh1cGxpc3RfaXRlbSwgc2JzcmVmLT5y ZWZ1cHBlcmluZGV4cHIpCiAJewotCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdbJyk7Ci0J CWlmIChsb3dsaXN0X2l0ZW0pCisJCU5vZGUJICAgKnVwID0gKE5vZGUgKikgbGZpcnN0KHVwbGlz dF9pdGVtKTsKKworCQlpZiAoSXNBKHVwLCBTdHJpbmcpKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihidWYsICcuJyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVf aWRlbnRpZmllcihzdHJWYWwodXApKSk7CisJCX0KKwkJZWxzZQogCQl7CisJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICdbJyk7CisJCQlpZiAobG93bGlzdF9pdGVtKQorCQkJeworCQkJCS8q IElmIHN1YmV4cHJlc3Npb24gaXMgTlVMTCwgZ2V0X3J1bGVfZXhwciBwcmludHMgbm90aGluZyAq LworCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxvd2xpc3RfaXRlbSksIGNvbnRl eHQsIGZhbHNlKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc6Jyk7CisJCQl9CiAJ CQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdldF9ydWxlX2V4cHIgcHJpbnRzIG5vdGhp bmcgKi8KLQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxvd2xpc3RfaXRlbSksIGNv bnRleHQsIGZhbHNlKTsKLQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJzonKTsKLQkJCWxv d2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBsb3dsaXN0X2l0ZW0p OworCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pLCBjb250ZXh0 LCBmYWxzZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICddJyk7CiAJCX0KLQkJLyog SWYgc3ViZXhwcmVzc2lvbiBpcyBOVUxMLCBnZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICov Ci0JCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KHVwbGlzdF9pdGVtKSwgY29udGV4dCwg ZmFsc2UpOwotCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICddJyk7CisKKwkJaWYgKGxvd2xp c3RfaXRlbSkKKwkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVmbG93ZXJpbmRleHBy LCBsb3dsaXN0X2l0ZW0pOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggNWFl MTFjY2VjMzMuLjcxYjA0YmQ1MDNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTM3OCw3 ICszNzgsOCBAQCBleHRlcm4gU3Vic2NyaXB0aW5nUmVmICp0cmFuc2Zvcm1Db250YWluZXJTdWJz Y3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgT2lkIGNvbnRhaW5lclR5 cGUsCiAJCQkJCQkJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKIAkJCQkJCQkJCQkJCQkg TGlzdCAqKmluZGlyZWN0aW9uLAotCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCk7CisJ CQkJCQkJCQkJCQkJIGJvb2wgaXNBc3NpZ25tZW50LAorCQkJCQkJCQkJCQkJCSBib29sIG5vRXJy b3IpOwogZXh0ZXJuIENvbnN0ICptYWtlX2NvbnN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9Db25z dCAqYWNvbnN0KTsKIAogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX05PREVfSCAqLwotLSAKMi4zOS41 IChBcHBsZSBHaXQtMTU0KQoK --00000000000009b350062d5ff81f--