Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pMRjS-00056k-U0 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jan 2023 10:49:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pMRjR-0001O3-SN for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jan 2023 10:49:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pMRjR-0001Nu-0x for pgsql-hackers@lists.postgresql.org; Mon, 30 Jan 2023 10:49:49 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pMRjN-0000Lf-Qz for pgsql-hackers@postgresql.org; Mon, 30 Jan 2023 10:49:48 +0000 Received: by mail-pj1-x102c.google.com with SMTP id c10-20020a17090a1d0a00b0022e63a94799so73502pjd.2 for ; Mon, 30 Jan 2023 02:49:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=PLdqjtlfD6Wdgs1rMAuduvNAyIiQCEcagid4gXucqAk=; b=Q2f47SsrzlshCXDp8o3TMYFn3wCcfM2NdnFk/Ulv+m8SQSyqgRpRk02SAvDLToA/yk D8ARP+yUSg25X6rr4RdAKMmmhyqL30WMUAe0kEtoOM/Kvc2/XSPY8dFN2Hy+fkvQtzpC B4hi9aVKAUgk/MP73Aof+8X8bB5Ew9VxyeUEne7IfSMHa2UcdblS6TE5nlmSXosukhNM aTcf9oCERBrvocYhYhB1ez6gYw/9szV4ThepfjPE7SzBWOtNTcehUr+uqC0R+vd8EydW 4cGX62e4HjrN9MD/PbH537NSE2Sk7xwceEr8ZAEEe2fRscsCfy7IA2603KfBi5ZBCY0H ZIkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=PLdqjtlfD6Wdgs1rMAuduvNAyIiQCEcagid4gXucqAk=; b=wMJUtxA0J8Kpw/NgiXdey68Zphz+RWNT5i6OB9TLoOd5v0lZD3p86saEhfByNVWF26 V73bCTog1GjZMpYvnCv5CInmEvelONW8opWIKJ42pmOmRGhY3U3oyTqGqhRG9xYf8NZE HwfvL3+cUn2Y6O5OKAwDCaTVBkCW9ZP2A7iqXy07VjoFr5pMyiRN1yqxXYYHtX8KepkU 8zOYvlpdqO7iuiEhP/dWRElPkjtfJoUrWEN617+4f5g4i9yJOzJSractC2Uo/pisadru KpZgyPXqy6bUUlCm/pfRBxxoQy7iHCqSf/yfQuM5vNXcRNgqr5kbq41frk2B8zFuVnFl aKnQ== X-Gm-Message-State: AO0yUKWP487hF14HoDIiK4da3gmUzA2L4NeEcOq+xoMM2S749TP0EkFF udG6NckPYJXEAohIW1/BCa5ZbuBtQxSeJhcJWfg= X-Google-Smtp-Source: AK7set+JK+/c0widbcTq1X+ImIawRLmNpq96iQFdKs1MedOl48KnUQJHrxZew7E3G6+9Y4b/WT2EY0k3Zu8PjtmF+YU= X-Received: by 2002:a17:90a:2ec3:b0:22c:11db:47f3 with SMTP id h3-20020a17090a2ec300b0022c11db47f3mr2694247pjs.92.1675075784424; Mon, 30 Jan 2023 02:49:44 -0800 (PST) MIME-Version: 1.0 References: <2ebc7ea8-3c46-474e-aea7-5d73ff6165fb@www.fastmail.com> <7cf14e66-8cea-406f-9607-607a397292f6@www.fastmail.com> In-Reply-To: From: Melih Mutlu Date: Mon, 30 Jan 2023 13:49:34 +0300 Message-ID: Subject: Re: Allow logical replication to copy tables in binary format To: Bharath Rupireddy Cc: "Takamichi Osumi (Fujitsu)" , "shiy.fnst@fujitsu.com" , Euler Taveira , Amit Kapila , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000001a5d5f05f378f91b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001a5d5f05f378f91b Content-Type: multipart/alternative; boundary="0000000000001a5d5b05f378f919" --0000000000001a5d5b05f378f919 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Bharath, Thanks for reviewing. Bharath Rupireddy , 18 Oca 2023 =C3=87ar, 10:17 tarihinde =C5=9Funu yazd=C4=B1: > On Thu, Jan 12, 2023 at 1:53 PM Melih Mutlu > wrote: > 1. The performance numbers posted upthread [1] look impressive for the > use-case tried, that's a 2.25X improvement or 55.6% reduction in > execution times. However, it'll be great to run a few more varied > tests to confirm the benefit. > Sure, do you have any specific test case or suggestion in mind? > 2. It'll be great to capture the perf report to see if the time spent > in copy_table() is reduced with the patch. > Will provide that in another email soon. > 3. I think blending initial table sync's binary copy option with > data-type level binary send/receive is not good. Moreover, data-type > level binary send/receive has its own restrictions per 9de77b5453. > IMO, it'll be good to have a new option, say copy_data_format synonyms > with COPY command's FORMAT option but with only text (default) and > binary values. > Added a "copy_format" option for subscriptions with text as default value. So it would be possible to create a binary subscription but copy tables in text format to avoid restrictions that you're concerned about. > 4. Why to add tests to existing 002_types.pl? Can we add a new file > with all the data types covered? > Since 002_types.pl is where the replication of data types are covered. I thought it would be okay to test replication with the binary option in that file. Sure, we can add a new file with different data types for testing subscriptions with binary option. But then I feel like it would have too many duplicated lines with 002_types.pl. If you think that 002_types.pl lacks some data types needs to be tested, then we should add those into 002_types.pl too whether we test subscription with binary option in that file or some other place, right? > 5. It's not clear to me as to why these rows were removed in the patch? > - (1, '{1, 2, 3}'), > - (2, '{2, 3, 1}'), > (3, '{3, 2, 1}'), > (4, '{4, 3, 2}'), > (5, '{5, NULL, 3}'); > > -- test_tbl_arrays > INSERT INTO tst_arrays (a, b, c, d) VALUES > - ('{1, 2, 3}', '{"a", "b", "c"}', '{1.1, 2.2, 3.3}', '{"1 > day", "2 days", "3 days"}'), > - ('{2, 3, 1}', '{"b", "c", "a"}', '{2.2, 3.3, 1.1}', '{"2 > minutes", "3 minutes", "1 minute"}'), > Previously, it wasn't actually testing the initial table sync since all tables were empty when subscription was created. I just simply split the data initially inserted to test initial table sync. With this patch, it inserts the first two rows for all data types before subscriptions get created. You can see these lines: > +# Insert initial test data > +$node_publisher->safe_psql( > + 'postgres', qq( > + -- test_tbl_one_array_col > + INSERT INTO tst_one_array (a, b) VALUES > + (1, '{1, 2, 3}'), > + (2, '{2, 3, 1}'); > + > + -- test_tbl_arrays > + INSERT INTO tst_arrays (a, b, c, d) VALUES > 6. BTW, the subbinary description is missing in pg_subscription docs > https://www.postgresql.org/docs/devel/catalog-pg-subscription.html? > - Specifies whether the subscription will request the publisher = to > - send the data in binary format (as opposed to text). > + Specifies whether the subscription will copy the initial data = to > + synchronize relations in binary format and also request the > publisher > + to send the data in binary format too (as opposed to text). > Done. > 7. A nitpick - space is needed after >=3D before 160000. > + if (walrcv_server_version(LogRepWorkerWalRcvConn) >=3D160000 && > Done. > 8. Note that the COPY binary format isn't portable across platforms > (Windows to Linux for instance) or major versions > https://www.postgresql.org/docs/devel/sql-copy.html, whereas, logical > replication is > https://www.postgresql.org/docs/devel/logical-replication.html. > I don't see any handling of such cases in copy_table but only a check > for the publisher version. I think we need to account for all the > cases - allow binary COPY only when publisher and subscriber are of > same versions, architectures, platforms. The trick here is how we > identify if the subscriber is of the same type and taste > (architectures and platforms) as the publisher. Looking for > PG_VERSION_STR of publisher and subscriber might be naive, but I'm not > sure if there's a better way to do it. > I think having the "copy_format" option with text as default, like I replied to your 3rd review above, will keep things as they are now. The patch now will only allow users to choose binary copy as well, if they want it and acknowledge the limitations that come with binary copy. COPY command's portability issues shouldn't be an issue right now, since the patch still supports text format. Right? > Also, the COPY binary format is very data type specific - per the docs > "for example it will not work to output binary data from a smallint > column and read it into an integer column, even though that would work > fine in text format.". I did a small experiment [2], the logical > replication works with compatible data types (int -> smallint, even > int -> text), whereas the COPY binary format doesn't. > Logical replication between different types like int and smallint is already not working properly on HEAD too. Yes, the scenario you shared looks like working. But you didn't create the subscription with binary=3Dtrue. The patch did not change subscription with binary=3Dfalse case. I believe what you should experiment is binary=3Dtrue = case which already fails in the apply phase on HEAD. Well, with this patch, it will begin to fail in the table copy phase. But I don't think this is a problem because logical replication in binary format is already broken for replications between different data types. Please see [1] and you'll get the following error in your case: "ERROR: incorrect binary data format in logical replication column 1" [1] Publisher: DROP TABLE foo; DROP PUBLICATION mypub; CREATE TABLE foo(c1 bigint, c2 int, c3 smallint); INSERT INTO foo SELECT i , i+1, i+2 FROM generate_series(1, 5) i; CREATE PUBLICATION mypub FOR TABLE foo; SELECT COUNT(*) FROM foo; SELECT * FROM foo; Subscriber: DROP SUBSCRIPTION mysub; DROP TABLE foo; CREATE TABLE foo(c1 smallint, c2 smallint, c3 smallint); CREATE SUBSCRIPTION mysub CONNECTION 'port=3D5432 dbname=3Dpostgres user=3Dubuntu' PUBLICATION mypub WITH(binary); -- table sync will be successful since they're copied in text even though set binary=3Dtrue SELECT COUNT(*) FROM foo; SELECT * FROM foo; Back to publisher: INSERT INTO foo SELECT i , i+1, i+2 FROM generate_series(1, 5) i; -- insert more rows to see whether the apply also works SELECT COUNT(*) FROM foo; -- you'll see that new rows does not get replicated In subscriber logs: LOG: logical replication apply worker for subscription "mysub" has started ERROR: incorrect binary data format in logical replication column 1 CONTEXT: processing remote data for replication origin "pg_16395" during message type "INSERT" for replication target relation "public.foo" column "c1" in transaction 747, finished at 0/157F3E0 LOG: background worker "logical replication worker" (PID 16903) exited with exit code 1 Best, --=20 Melih Mutlu Microsoft --0000000000001a5d5b05f378f919 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Bharath,

Thanks for= reviewing.=C2=A0

Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>,= 18 Oca 2023 =C3=87ar, 10:17 tarihinde =C5=9Funu yazd=C4=B1:
On Thu, Jan 12, 2023 at 1:53 P= M Melih Mutlu <m.melihmutlu@gmail.com> wrote:
1. The performance numbers post= ed upthread [1] look impressive for the
use-case tried, that's a 2.25X improvement or 55.6% reduction in
execution times. However, it'll be great to run a few more varied
tests to confirm the benefit.

Sure, do you have an= y specific test case or=C2=A0suggestion in mind?=C2=A0
=C2=A0
2. It'll be great to capture the perf report to see if the time spent in copy_table() is reduced with the patch.

<= div>Will provide that in another email soon.
=C2=A0
3. I think blending initial table sync's binary copy option with
data-type level binary send/receive is not good. Moreover, data-type
level binary send/receive has its own restrictions per 9de77b5453.
IMO, it'll be good to have a new option, say copy_data_format synonyms<= br> with COPY command's FORMAT option but with only text (default) and
binary values.

Added a "copy_forma= t" option for subscriptions with text as default value. So it would be= possible to create a binary subscription but copy tables in text format to= avoid restrictions that you're concerned about.
=C2=A0
=
4. Why to add tests to existing 002_types.pl? Can we add a new file
with all the data types covered?

Since= =C2=A0002_types.pl=C2=A0is where the re= plication of data types=C2=A0are covered. I thought it would be okay to tes= t replication with the binary option in that file.
Sure, we can a= dd a new file with different data types for testing subscriptions with bina= ry option. But then I feel like it would have too many duplicated lines wit= h 002_types.pl.
If you think = that 002_types.pl lacks some data types= needs to be tested, then we should add those into 002_types.pl too whether=C2=A0we=C2=A0test=C2=A0subscription wi= th binary option in that file or some other place, right?=C2=A0=C2=A0
=
=C2=A0
5. It's not clear to me as to why these rows were removed in the patch?=
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 (1, '{1, 2, 3}'),
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 (2, '{2, 3, 1}'),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(3, '{3, 2, 1}'),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(4, '{4, 3, 2}'),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(5, '{5, NULL, 3}');

=C2=A0 =C2=A0 =C2=A0-- test_tbl_arrays
=C2=A0 =C2=A0 =C2=A0INSERT INTO tst_arrays (a, b, c, d) VALUES
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 ('{1, 2, 3}', '{"a", &qu= ot;b", "c"}', '{1.1, 2.2, 3.3}', '{"1 day", "2 days", "3 days"}'),
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 ('{2, 3, 1}', '{"b", &qu= ot;c", "a"}', '{2.2, 3.3, 1.1}', '{"2 minutes", "3 minutes", "1 minute"}'),

Previously, it wasn't actually testing the = initial table sync since all tables were empty when subscription was create= d.
I just simply split the data initially inserted to test initia= l table sync.

With this patch, it inserts the firs= t two rows for all data types before subscriptions get created.=C2=A0
=
You can see these lines:
+# Insert initial test data
+$node_publisher->safe_psql(+ =C2=A0 =C2=A0 =C2=A0 'postgres', qq(
+ =C2=A0 =C2=A0 =C2=A0 = -- test_tbl_one_array_col
+ =C2=A0 =C2=A0 =C2=A0 INSERT INTO tst_one_arr= ay (a, b) VALUES
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (1, = '{1, 2, 3}'),
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (2, '{2, 3, 1}');
+
+ =C2=A0 =C2=A0 =C2=A0 -- test_tbl_array= s
+ =C2=A0 =C2=A0 =C2=A0 INSERT INTO tst_arrays (a, b, c, d) VALUES

=C2=A0
6. BTW, the subbinary description is missing in pg_subscription docs
https://www.postgresql.org/docs/de= vel/catalog-pg-subscription.html?
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Specifies whether the subscription will= request the publisher to
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 send the data in binary format (as oppo= sed to text).
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Specifies whether the subscription will= copy the initial data to
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 synchronize relations in binary format = and also request the publisher
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 to send the data in binary format too (= as opposed to text).

Done.
= =C2=A0
7. A nitpick - space is needed after >=3D before 160000.
+=C2=A0 =C2=A0 if (walrcv_server_version(LogRepWorkerWalRcvConn) >=3D160= 000 &&

Done.
=C2=A0
8. Note that the COPY binary format isn't portable across platforms
(Windows to Linux for instance) or major versions
https://www.postgresql.org/docs/devel/sql-copy.ht= ml, whereas, logical
replication is https://www.postgresql.= org/docs/devel/logical-replication.html.
I don't see any handling of such cases in copy_table but only a check for the publisher version. I think we need to account for all the
cases - allow binary COPY only when publisher and subscriber are of
same versions, architectures, platforms. The trick here is how we
identify if the subscriber is of the same type and taste
(architectures and platforms) as the publisher. Looking for
PG_VERSION_STR of publisher and subscriber might be naive, but I'm not<= br> sure if there's a better way to do it.

<= div>I think having the "copy_format" option with text as default,= like I replied to your 3rd review above, will keep things as they are now.=
The patch now will only allow users to choose binary copy as wel= l, if they want it and=C2=A0acknowledge the limitations that come with bina= ry copy.
COPY command's portability issues shouldn't be a= n issue right now, since the patch still supports text format. Right?
=
=C2=A0
Also, the COPY binary format is very data type specific - per the docs
"for example it will not work to output binary data from a smallint column and read it into an integer column, even though that would work
fine in text format.". I did a small experiment [2], the logical
replication works with compatible data types (int -> smallint, even
int -> text), whereas the COPY binary format doesn't.

Logical replication between different types like int = and smallint is already not working properly on HEAD too.
Yes, th= e scenario you shared looks like working. But you didn't create the sub= scription with binary=3Dtrue. The patch did not change subscription with bi= nary=3Dfalse case. I believe what you should experiment is binary=3Dtrue ca= se which already fails in the apply=C2=A0phase on HEAD.

Well, with this patch, it will begin to fail in the table copy phase.= But I don't think this is a problem because logical replication in bin= ary format is already broken for replications between different data types.=

Please see [1] and you'll get the following e= rror in your case:
"ERROR: =C2=A0incorrect binary data forma= t in logical replication column 1"
=C2=A0 =C2=A0=C2=A0
[1]
Publisher:
DROP TABLE foo;
DROP PUBLICA= TION mypub;
CREATE TABLE foo(c1 bigint, c2 int, c3 smallint);
INSERT = INTO foo SELECT i , i+1, i+2 FROM generate_series(1, 5) i;
CREATE PUBLIC= ATION mypub FOR TABLE foo;
SELECT COUNT(*) FROM foo;
SELECT * FROM fo= o;

Subscriber:
DROP SUBSCRIPTION mys= ub;
DROP TABLE foo;
CREATE TABLE foo(c1 smallint, c2 smallint, c3 sma= llint);
CREATE SUBSCRIPTION mysub CONNECTION 'port=3D5432 dbname=3Dp= ostgres
user=3Dubuntu' PUBLICATION mypub WITH(binary); -- table sync= will be successful since they're copied in text even though set binary= =3Dtrue
SELECT COUNT(*) FROM foo;
SELECT * FROM foo;
Back to publisher:
INSERT INTO foo SELECT i , i+1, i= +2 FROM generate_series(1, 5) i; -- insert more rows to see whether the app= ly also works
SELECT COUNT(*) FROM foo; -- you'll see tha= t new rows does not get replicated

In subscrib= er logs:
LOG: =C2=A0logical replication apply worker for subscrip= tion "mysub" has started
ERROR: =C2=A0incorrect binary data fo= rmat in logical replication column 1
CONTEXT: =C2=A0processing re= mote data for replication origin "pg_16395" during message type &= quot;INSERT" for replication target relation "public.foo" co= lumn "c1" in transaction 747, finished at 0/157F3E0
LOG: =C2=A0background worker "logical replication worker" (PID 1= 6903) exited with exit code 1

Best,
-- =
Melih Mutlu
Microsoft
--0000000000001a5d5b05f378f919-- --0000000000001a5d5f05f378f91b Content-Type: application/octet-stream; name="v7-0001-Allow-logical-replication-to-copy-table-in-binary.patch" Content-Disposition: attachment; filename="v7-0001-Allow-logical-replication-to-copy-table-in-binary.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ldiou0ur0 RnJvbSAwOTA4ZjlkNGE0OTAwMTBmZmEyZTNmNjkxNzBjMzQ0MDZmODNmZmZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxpaCBNdXRsdSA8bS5tZWxpaG11dGx1QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCA4IEF1ZyAyMDIyIDE0OjE0OjQ0ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gQWxs b3cgbG9naWNhbCByZXBsaWNhdGlvbiB0byBjb3B5IHRhYmxlIGluIGJpbmFyeQoKSWYgYmluYXJ5 IG9wdGlvbiBpcyBlbmFibGVkIGluIGEgc3Vic2NyaXB0aW9uLCBjb3B5IHRhYmxlcyBpbiBiaW5h cnkKZm9ybWF0IGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24uCgpXaXRob3V0IHRoaXMgcGF0 Y2gsIHRhYmxlIGFyZSBjb3BpZWQgaW4gdGV4dCBmb3JtYXQgZXZlbiBpZiB0aGUKc3Vic2NyaXB0 aW9uIGlzIGNyZWF0ZWQgd2l0aCBiaW5hcnkgb3B0aW9uLiBXaGVuIGJpbmFyeSBmb3JtYXQgaXMK YmVuZWZpY2lhbCB0byB1c2UsIGFsbG93aW5nIHRoZSBzdWJzY3JpcHRpb24gdG8gY29weSB0YWJs ZXMgaW4gYmluYXJ5IGluCnRhYmxlIHN5bmMgcGhhc2UgcmVkdWNlcyB0aGUgdGltZSBzcGVudCBv biBjb3B5LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUdQVnBDUXZBemlDTGtu RW55Z1kwdjEtS0J0ZyUyQk9tLTlKSEpZWk9uTlBLRkpQb21wdyU0MG1haWwuZ21haWwuY29tCi0t LQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgMyArLQog ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICB8ICAgOSArLQogZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICB8ICAgNCArLQogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICB8ICAyMSArLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgIHwgIDY2ICsrKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIHwgIDEzICstCiBzcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jICAgICAgICAgICAgICAgICAgIHwgIDE2ICstCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YyAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmggICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5oICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgIHwgMTQ0ICsrKysrLS0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAwMl90eXBl cy5wbCAgICAgICAgfCAyOTEgKysrKysrKysrKysrKysrKy0tLS0KIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNF9iaW5hcnkucGwgICAgICAgfCAgMjggKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDQ3 MiBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjMWU0 MDQ4MDU0Li5iZjhhNGM2ZmQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkwNiw3ICs3OTA2LDggQEAg U0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxh Y2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICA8c3RydWN0ZmllbGQ+c3ViYmluYXJ5PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJh PgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCByZXF1ZXN0IHRoYXQgdGhl IHB1Ymxpc2hlciBzZW5kIGRhdGEKKyAgICAgICBJZiB0cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdp bGwgY29weSB0aGUgaW5pdGlhbCBkYXRhIHRvIHN5bmNocm9uaXplCisgICAgICAgcmVsYXRpb25z IGluIGJpbmFyeSBmb3JtYXQgYW5kIHJlcXVlc3QgdGhhdCB0aGUgcHVibGlzaGVyIHNlbmQgZGF0 YQogICAgICAgIGluIGJpbmFyeSBmb3JtYXQKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8 L3Jvdz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDFiZDU2NjBjODcu Ljk1NDA5MTdlYTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMjQx LDEwICsyNDEsMTEgQEAKICAgIHR5cGVzIG9mIHRoZSBjb2x1bW5zIGRvIG5vdCBuZWVkIHRvIG1h dGNoLCBhcyBsb25nIGFzIHRoZSB0ZXh0CiAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBj YW4gYmUgY29udmVydGVkIHRvIHRoZSB0YXJnZXQgdHlwZS4gIEZvcgogICAgZXhhbXBsZSwgeW91 IGNhbiByZXBsaWNhdGUgZnJvbSBhIGNvbHVtbiBvZiB0eXBlIDx0eXBlPmludGVnZXI8L3R5cGU+ IHRvIGEKLSAgIGNvbHVtbiBvZiB0eXBlIDx0eXBlPmJpZ2ludDwvdHlwZT4uICBUaGUgdGFyZ2V0 IHRhYmxlIGNhbiBhbHNvIGhhdmUKLSAgIGFkZGl0aW9uYWwgY29sdW1ucyBub3QgcHJvdmlkZWQg YnkgdGhlIHB1Ymxpc2hlZCB0YWJsZS4gIEFueSBzdWNoIGNvbHVtbnMKLSAgIHdpbGwgYmUgZmls bGVkIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgYXMgc3BlY2lmaWVkIGluIHRoZSBkZWZpbml0aW9u IG9mIHRoZQotICAgdGFyZ2V0IHRhYmxlLgorICAgY29sdW1uIG9mIHR5cGUgPHR5cGU+YmlnaW50 PC90eXBlPi4gIFJlcGxpY2F0aW9uIGluIGJpbmFyeSBmb3JtYXQgaXMgdHlwZQorICAgc3BlY2lm aWMgYW5kIGRvZXMgbm90IGFsbG93IHRvIHJlcGxpY2F0ZSBkYXRhIGJldHdlZW4gZGlmZmVyZW50 IHR5cGVzIGFjY29yZGluZworICAgdG8gaXRzIHJlc3RyaWN0aW9ucy4gIFRoZSB0YXJnZXQgdGFi bGUgY2FuIGFsc28gaGF2ZSBhZGRpdGlvbmFsIGNvbHVtbnMgbm90IHByb3ZpZGVkCisgICBieSB0 aGUgcHVibGlzaGVkIHRhYmxlLiAgQW55IHN1Y2ggY29sdW1ucyB3aWxsIGJlIGZpbGxlZCB3aXRo IHRoZSBkZWZhdWx0CisgICB2YWx1ZSBhcyBzcGVjaWZpZWQgaW4gdGhlIGRlZmluaXRpb24gb2Yg dGhlIHRhcmdldCB0YWJsZS4KICAgPC9wYXJhPgogCiAgIDxzZWN0MiBpZD0ibG9naWNhbC1yZXBs aWNhdGlvbi1zdWJzY3JpcHRpb24tc2xvdCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCBhZDkzNTUzYTFkLi4wNTAxNTVkNDI4IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIxMyw4ICsyMTMsOCBAQCBBTFRFUiBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBSRU5BTUUgVE8gPAogICAgICAgYXJlIDxsaXRlcmFsPnNsb3RfbmFtZTwvbGl0ZXJhbD4sCiAg ICAgICA8bGl0ZXJhbD5zeW5jaHJvbm91c19jb21taXQ8L2xpdGVyYWw+LAogICAgICAgPGxpdGVy YWw+YmluYXJ5PC9saXRlcmFsPiwgPGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiwKLSAgICAg IDxsaXRlcmFsPmRpc2FibGVfb25fZXJyb3I8L2xpdGVyYWw+LCBhbmQKLSAgICAgIDxsaXRlcmFs Pm9yaWdpbjwvbGl0ZXJhbD4uCisgICAgICA8bGl0ZXJhbD5kaXNhYmxlX29uX2Vycm9yPC9saXRl cmFsPiwgPGxpdGVyYWw+b3JpZ2luPC9saXRlcmFsPgorICAgICAgYW5kIDxsaXRlcmFsPmNvcHlf Zm9ybWF0PC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zh cmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5k ZXggZWJhNzJjNmFmNi4uOWU3NTdhZTdkZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwKQEAgLTE4OSw4ICsxODksOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFi bAogICAgICAgICA8dGVybT48bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFu PC90eXBlPik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgotICAg ICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBzdWJzY3JpcHRpb24gd2lsbCByZXF1ZXN0IHRo ZSBwdWJsaXNoZXIgdG8KLSAgICAgICAgICBzZW5kIHRoZSBkYXRhIGluIGJpbmFyeSBmb3JtYXQg KGFzIG9wcG9zZWQgdG8gdGV4dCkuCisgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN1 YnNjcmlwdGlvbiB3aWxsIGNvcHkgdGhlIGluaXRpYWwgZGF0YSB0bworICAgICAgICAgIHN5bmNo cm9uaXplIHJlbGF0aW9ucyBpbiBiaW5hcnkgZm9ybWF0IGFuZCBhbHNvIHJlcXVlc3QgdGhlIHB1 Ymxpc2hlcgorICAgICAgICAgIHRvIHNlbmQgdGhlIGRhdGEgaW4gYmluYXJ5IGZvcm1hdCB0b28g KGFzIG9wcG9zZWQgdG8gdGV4dCkuCiAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ ZmFsc2U8L2xpdGVyYWw+LgogICAgICAgICAgIEV2ZW4gd2hlbiB0aGlzIG9wdGlvbiBpcyBlbmFi bGVkLCBvbmx5IGRhdGEgdHlwZXMgaGF2aW5nCiAgICAgICAgICAgYmluYXJ5IHNlbmQgYW5kIHJl Y2VpdmUgZnVuY3Rpb25zIHdpbGwgYmUgdHJhbnNmZXJyZWQgaW4gYmluYXJ5LgpAQCAtMzQ5LDYg KzM1MCwyMiBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgPC9wYXJhPgogICAg ICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5jb3B5X2Zvcm1hdDwvbGl0ZXJhbD4gKDx0 eXBlPnN0cmluZzwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZvcm1hdCBpbiB3aGljaCBwcmUtZXhpc3Rp bmcgZGF0YSBvbiB0aGUgcHVibGlzaGVyIHdpbGwKKyAgICAgICAgICBjb3BpZWQgdG8gdGhlIHN1 YnNjcmliZXIuIFN1cHBvcnRlZCBmb3JtYXRzIGFyZSAKKyAgICAgICAgICA8bGl0ZXJhbD50ZXh0 PC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPi4gVGhlIGRlZmF1bHQgaXMK KyAgICAgICAgICA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPi4KKworICAgICAgICAgIDxsaXRlcmFs PmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0IGNhbiBiZSBzZWxlY3RlZCBvbmx5IGlmCisgICAgICAg ICAgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBpcyBzZXQgdG8gPGxpdGVyYWw+dHJ1ZTwvbGl0 ZXJhbD4uIE5vdGUKKyAgICAgICAgICB0aGF0IGRhdGEgd2lsbCBub3QgYmUgY29waWVkIGlmIDxs aXRlcmFsPmNvcHlfZGF0YSA9IGZhbHNlPC9saXRlcmFsPi4gIAorICAgICAgICAgPC9wYXJhPgor ICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJp YWJsZWxpc3Q+PC9wYXJhPgogCiAgICAgPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5jCmluZGV4IGE1NmFlMzExYzMuLmRhMDc4YWNlZmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24o T2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJz dHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsK IAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPmNv cHlmb3JtYXQgPSBzdWJmb3JtLT5zdWJjb3B5Zm9ybWF0OwogCiAJLyogR2V0IGNvbm5pbmZvICov CiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDQ2NGRiNmQyNDcuLjBlYzQ1NDY2ZjUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTY2LDYgKzY2LDcgQEAK ICNkZWZpbmUgU1VCT1BUX0RJU0FCTEVfT05fRVJSCQkweDAwMDAwNDAwCiAjZGVmaW5lIFNVQk9Q VF9MU04JCQkJCTB4MDAwMDA4MDAKICNkZWZpbmUgU1VCT1BUX09SSUdJTgkJCQkweDAwMDAxMDAw CisjZGVmaW5lIFNVQk9QVF9DT1BZX0ZPUk1BVAkJCTB4MDAwMDIwMDAKIAogLyogY2hlY2sgaWYg dGhlICd2YWwnIGhhcyAnYml0cycgc2V0ICovCiAjZGVmaW5lIElzU2V0KHZhbCwgYml0cykgICgo KHZhbCkgJiAoYml0cykpID09IChiaXRzKSkKQEAgLTkwLDYgKzkxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgU3ViT3B0cwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpvcmlnaW47CiAJWExv Z1JlY1B0cglsc247CisJY2hhcgkgICAgY29weV9mb3JtYXQ7CiB9IFN1Yk9wdHM7CiAKIHN0YXRp YyBMaXN0ICpmZXRjaF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpw dWJsaWNhdGlvbnMpOwpAQCAtMTQ2LDYgKzE0OCw4IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQlvcHRzLT5kaXNh Ymxlb25lcnIgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9PUklH SU4pKQogCQlvcHRzLT5vcmlnaW4gPSBwc3RyZHVwKExPR0lDQUxSRVBfT1JJR0lOX0FOWSk7CisJ aWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQ09QWV9GT1JNQVQpKQorCQlvcHRzLT5j b3B5X2Zvcm1hdCA9IExPR0lDQUxSRVBfQ09QWV9BU19URVhUOwogCiAJLyogUGFyc2Ugb3B0aW9u cyAqLwogCWZvcmVhY2gobGMsIHN0bXRfb3B0aW9ucykKQEAgLTMyNCw2ICszMjgsMTUgQEAgcGFy c2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29w dGlvbnMsCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfTFNOOwogCQkJb3B0cy0+ bHNuID0gbHNuOwogCQl9CisJCWVsc2UgaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRf Q09QWV9GT1JNQVQpICYmCisJCQkJIHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNvcHlfZm9ybWF0 IikgPT0gMCkKKwkJeworCQkJaWYgKElzU2V0KG9wdHMtPnNwZWNpZmllZF9vcHRzLCBTVUJPUFRf Q09QWV9GT1JNQVQpKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUp OworCisJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfQ09QWV9GT1JNQVQ7CisJCQlv cHRzLT5jb3B5X2Zvcm1hdCA9IGRlZkdldENvcHlGb3JtYXQoZGVmZWwpOworCQl9CiAJCWVsc2UK IAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK QEAgLTQwNCw2ICs0MTcsMTYgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCQkJCQkJCSJzbG90X25hbWUgPSBOT05F IiwgImNyZWF0ZV9zbG90ID0gZmFsc2UiKSkpOwogCQl9CiAJfQorCisJaWYgKCFvcHRzLT5iaW5h cnkgJiYKKwkJb3B0cy0+Y29weV9mb3JtYXQgPT0gTE9HSUNBTFJFUF9DT1BZX0FTX0JJTkFSWSkK Kwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkgZXJybXNnKCIlcyBhbmQgJXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBvcHRp b25zIiwKKwkJCQkJCQkJImJpbmFyeSA9IGZhbHNlIiwgImNvcHlfZm9ybWF0ID0gYmluYXJ5Iikp KTsKKwl9CisKIH0KIAogLyoKQEAgLTU2MCw3ICs1ODMsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkg IFNVQk9QVF9TTE9UX05BTUUgfCBTVUJPUFRfQ09QWV9EQVRBIHwKIAkJCQkJICBTVUJPUFRfU1lO Q0hST05PVVNfQ09NTUlUIHwgU1VCT1BUX0JJTkFSWSB8CiAJCQkJCSAgU1VCT1BUX1NUUkVBTUlO RyB8IFNVQk9QVF9UV09QSEFTRV9DT01NSVQgfAotCQkJCQkgIFNVQk9QVF9ESVNBQkxFX09OX0VS UiB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkgIFNVQk9QVF9ESVNBQkxFX09OX0VSUiB8IFNVQk9Q VF9PUklHSU4gfAorCQkJCQkgIFNVQk9QVF9DT1BZX0ZPUk1BVCk7CiAJcGFyc2Vfc3Vic2NyaXB0 aW9uX29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMp OwogCiAJLyoKQEAgLTY0OSw2ICs2NzMsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlwdWJsaWNhdGlvbkxp c3RUb0FycmF5KHB1YmxpY2F0aW9ucyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 Ym9yaWdpbiAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShvcHRzLm9yaWdpbik7CisJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvcHlmb3JtYXQgLSAxXSA9IENoYXJHZXREYXR1 bShvcHRzLmNvcHlfZm9ybWF0KTsKIAogCXR1cCA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdl dERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMpOwogCkBAIC0xMDU0LDcgKzEwNzksNyBAQCBBbHRl clN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAq c3RtdCwKIAkJCQlzdXBwb3J0ZWRfb3B0cyA9IChTVUJPUFRfU0xPVF9OQU1FIHwKIAkJCQkJCQkJ ICBTVUJPUFRfU1lOQ0hST05PVVNfQ09NTUlUIHwgU1VCT1BUX0JJTkFSWSB8CiAJCQkJCQkJCSAg U1VCT1BUX1NUUkVBTUlORyB8IFNVQk9QVF9ESVNBQkxFX09OX0VSUiB8Ci0JCQkJCQkJCSAgU1VC T1BUX09SSUdJTik7CisJCQkJCQkJCSAgU1VCT1BUX09SSUdJTiB8IFNVQk9QVF9DT1BZX0ZPUk1B VCk7CiAKIAkJCQlwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhwc3RhdGUsIHN0bXQtPm9wdGlv bnMsCiAJCQkJCQkJCQkJICAgc3VwcG9ydGVkX29wdHMsICZvcHRzKTsKQEAgLTExMTgsNiArMTE0 MywxMyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2Ny aXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi b3JpZ2luIC0gMV0gPSB0cnVlOwogCQkJCX0KIAorCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmll ZF9vcHRzLCBTVUJPUFRfQ09QWV9GT1JNQVQpKQorCQkJCXsKKwkJCQkJdmFsdWVzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YmNvcHlmb3JtYXQgLSAxXSA9CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0 cy5jb3B5X2Zvcm1hdCk7CisJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNv cHlmb3JtYXQgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsK IAkJCQlicmVhazsKIAkJCX0KQEAgLTIxOTUsMyArMjIyNywzMyBAQCBkZWZHZXRTdHJlYW1pbmdN b2RlKERlZkVsZW0gKmRlZikKIAkJCQkJZGVmLT5kZWZuYW1lKSkpOwogCXJldHVybiBMT0dJQ0FM UkVQX1NUUkVBTV9PRkY7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KKworLyoKKyAqIEV4 dHJhY3QgdGhlIGNvcHkgZm9ybWF0IHZhbHVlIGZyb20gYSBEZWZFbGVtLgorICovCitjaGFyCitk ZWZHZXRDb3B5Rm9ybWF0KERlZkVsZW0gKmRlZikKK3sKKwljaGFyCSAgICpzdmFsOworCisJLyoK KwkgKiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIHNldCBpdCB0byB0ZXh0IGZvcm1hdC4K KwkgKi8KKwlpZiAoIWRlZi0+YXJnKQorCQlyZXR1cm4gTE9HSUNBTFJFUF9DT1BZX0FTX1RFWFQ7 CisKKwkvKgorCSAqIEN1cnJlbnRseSBzdXBwb3J0ZWQgZm9ybWF0cyBhcmUgInRleHQiIGFuZCAi YmluYXJ5Ii4KKwkgKi8KKwlzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisJaWYgKHBnX3N0cmNh c2VjbXAoc3ZhbCwgInRleHQiKSA9PSAwKQorCQlyZXR1cm4gTE9HSUNBTFJFUF9DT1BZX0FTX1RF WFQ7CisJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImJpbmFyeSIpID09IDApCisJCXJldHVybiBM T0dJQ0FMUkVQX0NPUFlfQVNfQklOQVJZOworCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHZhbHVlIHNob3VsZCBiZSBl aXRoZXIgXCJ0ZXh0XCIgb3IgXCJiaW5hcnlcIiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwly ZXR1cm4gTE9HSUNBTFJFUF9DT1BZX0FTX1RFWFQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDA3 ZWVhNTA0YmEuLjYyYzg2NmM5ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYwpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29weS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9y ZWxhdGlvbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oIgpAQCAtMTA5MCw2ICsxMDkxLDcgQEAgY29weV90YWJsZShSZWxhdGlv biByZWwpCiAJQ29weUZyb21TdGF0ZSBjc3RhdGU7CiAJTGlzdAkgICAqYXR0bmFtZWxpc3Q7CiAJ UGFyc2VTdGF0ZSAqcHN0YXRlOworCUxpc3QgCSAgICpvcHRpb25zID0gTklMOwogCiAJLyogR2V0 IHRoZSBwdWJsaXNoZXIgcmVsYXRpb24gaW5mby4gKi8KIAlmZXRjaF9yZW1vdGVfdGFibGVfaW5m byhnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCkBAIC0xMTY4 LDYgKzExNzAsMTUgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAKIAkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmY21kLCAiKSBUTyBTVERPVVQiKTsKIAl9CisKKwkvKiBJZiB0aGUgcHVibGlz aGVyIGlzIHYxNiBvciBsYXRlciwgc3BlY2lmeSB0aGUgZm9ybWF0IHRvIGNvcHkgZGF0YS4gKi8K KwlpZiAod2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pID49IDE2 MDAwMCkKKwl7CisJCWNoYXIgKmZvcm1hdCA9IE15U3Vic2NyaXB0aW9uLT5jb3B5Zm9ybWF0ID09 IExPR0lDQUxSRVBfQ09QWV9BU19CSU5BUlkgPyAiYmluYXJ5IiA6ICJ0ZXh0IjsKKwkJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAiICBXSVRIIChGT1JNQVQgJXMpIiwgZm9ybWF0KTsKKwkJb3B0aW9u cyA9IGxhcHBlbmQob3B0aW9ucywgbWFrZURlZkVsZW0oImZvcm1hdCIsIChOb2RlICopIG1ha2VT dHJpbmcoZm9ybWF0KSwgLTEpKTsKKwl9CisKIAlyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3Jr ZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwgMCwgTlVMTCk7CiAJcGZyZWUoY21kLmRhdGEpOwogCWlm IChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09QWV9PVVQpCkBAIC0xMTg0LDcgKzExOTUsNyBA QCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAkJCQkJCQkJCQkgTlVMTCwgZmFsc2UsIGZhbHNl KTsKIAogCWF0dG5hbWVsaXN0ID0gbWFrZV9jb3B5X2F0dG5hbWVsaXN0KHJlbG1hcGVudHJ5KTsK LQljc3RhdGUgPSBCZWdpbkNvcHlGcm9tKHBzdGF0ZSwgcmVsLCBOVUxMLCBOVUxMLCBmYWxzZSwg Y29weV9yZWFkX2RhdGEsIGF0dG5hbWVsaXN0LCBOSUwpOworCWNzdGF0ZSA9IEJlZ2luQ29weUZy b20ocHN0YXRlLCByZWwsIE5VTEwsIE5VTEwsIGZhbHNlLCBjb3B5X3JlYWRfZGF0YSwgYXR0bmFt ZWxpc3QsIG9wdGlvbnMpOwogCiAJLyogRG8gdGhlIGNvcHkgKi8KIAkodm9pZCkgQ29weUZyb20o Y3N0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDUyN2M3NjUxYWIuLjJiNGU0YzUyZGIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNDQ5NCw2ICs0NDk0LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0 KQogCWludAkJCWlfc3Vic3luY2NvbW1pdDsKIAlpbnQJCQlpX3N1YnB1YmxpY2F0aW9uczsKIAlp bnQJCQlpX3N1YmJpbmFyeTsKKwlpbnQJCQlpX3N1YmNvcHlmb3JtYXQ7CiAJaW50CQkJaSwKIAkJ CQludHVwczsKIApAQCAtNDU0Niw5ICs0NTQ3LDE0IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2 ZSAqZm91dCkKIAkJCQkJCSAgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAK IAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCi0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiIHMuc3Vib3JpZ2luXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgcy5zdWJvcmlnaW4sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5 LCAiICclcycgQVMgc3Vib3JpZ2luXG4iLCBMT0dJQ0FMUkVQX09SSUdJTl9BTlkpOworCQlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAnJXMnIEFTIHN1Ym9yaWdpbixcbiIsIExPR0lDQUxSRVBf T1JJR0lOX0FOWSk7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3ViY29weWZvcm1hdFxuIik7CisJZWxzZQor CQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAnJWMnIEFTIHN1YmNvcHlmb3JtYXRcbiIsIExP R0lDQUxSRVBfQ09QWV9BU19URVhUKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAog CQkJCQkJICJGUk9NIHBnX3N1YnNjcmlwdGlvbiBzXG4iCkBAIC00NTc2LDYgKzQ1ODIsNyBAQCBn ZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaV9zdWJ0d29waGFzZXN0YXRlID0gUFFm bnVtYmVyKHJlcywgInN1YnR3b3BoYXNlc3RhdGUiKTsKIAlpX3N1YmRpc2FibGVvbmVyciA9IFBR Zm51bWJlcihyZXMsICJzdWJkaXNhYmxlb25lcnIiKTsKIAlpX3N1Ym9yaWdpbiA9IFBRZm51bWJl cihyZXMsICJzdWJvcmlnaW4iKTsKKwlpX3N1YmNvcHlmb3JtYXQgPSBQUWZudW1iZXIocmVzLCAi c3ViY29weWZvcm1hdCIpOwogCiAJc3ViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihT dWJzY3JpcHRpb25JbmZvKSk7CiAKQEAgLTQ2MDYsNiArNDYxMyw4IEBAIGdldFN1YnNjcmlwdGlv bnMoQXJjaGl2ZSAqZm91dCkKIAkJc3ViaW5mb1tpXS5zdWJkaXNhYmxlb25lcnIgPQogCQkJcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YmRpc2FibGVvbmVycikpOwogCQlzdWJpbmZv W2ldLnN1Ym9yaWdpbiA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJvcmlnaW4p KTsKKwkJc3ViaW5mb1tpXS5zdWJjb3B5Zm9ybWF0ID0KKwkJCXBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaSwgaV9zdWJjb3B5Zm9ybWF0KSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2Fu dCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2Jq KSwgZm91dCk7CkBAIC00Njg3LDYgKzQ2OTYsOSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUg KmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJp bmZvLT5zdWJzeW5jY29tbWl0LCAib2ZmIikgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICIsIHN5bmNocm9ub3VzX2NvbW1pdCA9ICVzIiwgZm10SWQoc3ViaW5mby0+c3Vic3luY2Nv bW1pdCkpOwogCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJjb3B5Zm9ybWF0LCAidCIpICE9IDAp CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCBjb3B5X2Zvcm1hdCA9ICVzIiwgc3ViaW5m by0+c3ViY29weWZvcm1hdCk7CisKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIik7XG4i KTsKIAogCWlmIChzdWJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9ERUZJTklUSU9O KQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmgKaW5kZXggZTdjYmQ4ZDdlZC4uZjZiN2RiY2Q5NyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBA IC02NjIsNiArNjYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAljaGFy CSAgICpzdWJvcmlnaW47CiAJY2hhcgkgICAqc3Vic3luY2NvbW1pdDsKIAljaGFyCSAgICpzdWJw dWJsaWNhdGlvbnM7CisJY2hhcgkgICAqc3ViY29weWZvcm1hdDsKIH0gU3Vic2NyaXB0aW9uSW5m bzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggYzhhMGJiN2IzYS4uYjk0MWRjMWU4OCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAg LTY0NzIsNyArNjQ3Miw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZlcmJvc2UpCiAJUEdyZXN1bHQgICAqcmVzOwogCXByaW50UXVlcnlPcHQgbXlv cHQgPSBwc2V0LnBvcHQ7CiAJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9 IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLQlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OwogCiAJaWYgKHBzZXQuc3Zl cnNpb24gPCAxMDAwMDApCiAJewpAQCAtNjU0Myw2ICs2NTQzLDEyIEBAIGRlc2NyaWJlU3Vic2Ny aXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIiwgc3Vic2tpcGxzbiBBUyBcIiVzXCJcbiIsCiAJCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlNraXAgTFNOIikpOworCisJCS8qIENvcHkgZm9ybWF0IGlzIG9u bHkgc3VwcG9ydGVkIGluIHYxNiBhbmQgaGlnaGVyICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE2MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiLCBzdWJjb3B5 Zm9ybWF0IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiQ29weSBGb3JtYXQi KSk7CiAJfQogCiAJLyogT25seSBkaXNwbGF5IHN1YnNjcmlwdGlvbnMgaW4gY3VycmVudCBkYXRh YmFzZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA1ZTE4ODJlYWVhLi5hY2MxNzg3ODBjIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5jCkBAIC0xOTI2LDcgKzE5MjYsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCS8qIEFMVEVSIFNVQlNDUklQVElPTiA8 bmFtZT4gU0VUICggKi8KIAllbHNlIGlmIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiU1VCU0NSSVBU SU9OIiwgTWF0Y2hBbnkpICYmIFRhaWxNYXRjaGVzKCJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9X SVRIKCJiaW5hcnkiLCAiZGlzYWJsZV9vbl9lcnJvciIsICJvcmlnaW4iLCAic2xvdF9uYW1lIiwK LQkJCQkJICAic3RyZWFtaW5nIiwgInN5bmNocm9ub3VzX2NvbW1pdCIpOworCQkJCQkgICJzdHJl YW1pbmciLCAic3luY2hyb25vdXNfY29tbWl0IiwgImNvcHlfZm9ybWF0Iik7CiAJLyogQUxURVIg U1VCU0NSSVBUSU9OIDxuYW1lPiBTS0lQICggKi8KIAllbHNlIGlmIChIZWFkTWF0Y2hlcygiQUxU RVIiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnkpICYmIFRhaWxNYXRjaGVzKCJTS0lQIiwgIigi KSkKIAkJQ09NUExFVEVfV0lUSCgibHNuIik7CkBAIC0zMjY5LDcgKzMyNjksOCBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYg KEhlYWRNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIikgJiYgVGFpbE1hdGNoZXMoIldJ VEgiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAiY29ubmVjdCIsICJjb3B5X2Rh dGEiLCAiY3JlYXRlX3Nsb3QiLAogCQkJCQkgICJkaXNhYmxlX29uX2Vycm9yIiwgImVuYWJsZWQi LCAib3JpZ2luIiwgInNsb3RfbmFtZSIsCi0JCQkJCSAgInN0cmVhbWluZyIsICJzeW5jaHJvbm91 c19jb21taXQiLCAidHdvX3BoYXNlIik7CisJCQkJCSAgInN0cmVhbWluZyIsICJzeW5jaHJvbm91 c19jb21taXQiLCAidHdvX3BoYXNlIiwKKwkJCQkJICAiY29weV9mb3JtYXQiKTsKIAogLyogQ1JF QVRFIFRSSUdHRVIgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBU YWlsTWF0Y2hlcyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCBi MGYyYTE3MDVkLi5mZTc0Y2YyY2NlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgKQEAgLTg4LDYgKzg4LDcgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3Jp cHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJk aXNhYmxlb25lcnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQog CQkJCQkJCQkJICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAKKwljaGFyCQlzdWJj b3B5Zm9ybWF0IEJLSV9ERUZBVUxUKExPR0lDQUxSRVBfQ09QWV9BU19URVhUKTsgLyogQ29weSBm b3JtYXQgKi8KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVs ZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIg Ki8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzcsNiArMTM4 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJTGlzdAkgICAqcHVibGljYXRpb25z OwkvKiBMaXN0IG9mIHB1YmxpY2F0aW9uIG5hbWVzIHRvIHN1YnNjcmliZSB0byAqLwogCWNoYXIJ ICAgKm9yaWdpbjsJCQkvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9tIHRoZQog CQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2luICovCisJY2hhcgkJY29weWZvcm1hdDsJCS8qIENv cHkgZm9ybWF0IGZvciBzdWJzY3JpcHRpb25zIHdpdGggYmluYXJ5CisJCQkJCQkJCSAqIG9wdGlv biBlbmFibGVkICovCiB9IFN1YnNjcmlwdGlvbjsKIAogLyogRGlzYWxsb3cgc3RyZWFtaW5nIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KQEAgLTE1NCw2ICsxNTcsMTYgQEAgdHlwZWRlZiBz dHJ1Y3QgU3Vic2NyaXB0aW9uCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxM RUwgJ3AnCiAKKy8qCisgKiBDb3B5IGRhdGEgYXMgdGV4dC4gVGhpcyBpcyB0aGUgZGVmYXVsdC4K KyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX0NPUFlfQVNfVEVYVCAndCcKKworLyoKKyAqIENvcHkg ZGF0YSBhcyBiaW5hcnkgaWYgdGhlIGJpbmFyeSBvcHRpb25zIGlzIGVuYWJsZWQgaW4gdGhlIHN1 YnNjcmlwdGlvbi4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX0NPUFlfQVNfQklOQVJZICdiJwor CiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1p c3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1 Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmggYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5kZXggMjE0ZGM2YzI5ZS4uNzkzN2RlZmVh NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaApAQCAtMjcsNSArMjcs NiBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclN1YnNjcmlwdGlvbk93bmVyKGNvbnN0IGNo YXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyU3Vic2NyaXB0aW9u T3duZXJfb2lkKE9pZCBzdWJpZCwgT2lkIG5ld093bmVySWQpOwogCiBleHRlcm4gY2hhciBkZWZH ZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZik7CitleHRlcm4gY2hhciBkZWZHZXRDb3B5Rm9y bWF0KERlZkVsZW0gKmRlZik7CiAKICNlbmRpZgkJCQkJCQkvKiBTVUJTQ1JJUFRJT05DTURTX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCAzZjk5 YjE0Mzk0Li5jZjhiZGVjNWRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0CkBAIC0xMTQsMTggKzExNCwxOCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YjQgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVQog V0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQK IEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJl c2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrIHJlZ3Jlc3NfdGVzdHN1YjQKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gfCBDb3B5 IEZvcm1hdCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBy ZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wICAgICAgfCB0CiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKIFxkUnMrIHJlZ3Jlc3Nf dGVzdHN1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gfCBDb3B5IEZvcm1hdCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wICAgICAgfCB0CiAoMSBy b3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xNDMsMTAgKzE0 MywxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zv b2Jhcic7CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5n ICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g fCBDb3B5IEZvcm1hdCAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMCAgICAgIHwgdAogKDEgcm93KQogCiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1 YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTE2MywxMCArMTYzLDEwIEBAIEVSUk9SOiAg dW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJjcmVhdGVfc2xvdCIKIC0tIG9r CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1 Jyk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QyIHwgMC8xMjM0NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIHwgQ29weSBGb3JtYXQgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1ICB8IHQK ICgxIHJvdykKIAogLS0gb2sgLSB3aXRoIGxzbiA9IE5PTkUKQEAgLTE3NSwxMCArMTc1LDEwIEBA IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gTk9ORSk7CiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzAnKTsKIEVS Uk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExTTik6IDAvMAogXGRScysKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1Ymxp Y2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAg IFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIHwgQ29weSBGb3JtYXQgCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0 ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdDIgfCAwLzAgICAgICB8IHQKICgxIHJvdykKIAogQkVHSU47CkBAIC0yMTAs MTAgKzIxMCwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViX2ZvbyBTRVQg KHN5bmNocm9ub3VzX2NvbW1pdCA9IGZvb2Jhcik7CiBFUlJPUjogIGludmFsaWQgdmFsdWUgZm9y IHBhcmFtZXRlciAic3luY2hyb25vdXNfY29tbWl0IjogImZvb2JhciIKIEhJTlQ6ICBBdmFpbGFi bGUgdmFsdWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiBc ZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9m b28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0 cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdDIgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgICBOYW1lICAgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiB8IENvcHkgRm9ybWF0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dDIgfCAwLzAgICAgICB8IHQKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUg cmVzdCBzaW1wbGUKQEAgLTI0NywxOSArMjQ3LDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVC CiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3Rl ZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVh dGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVm cmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiB8IENvcHkgRm9ybWF0IAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w ICAgICAgfCB0CiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChiaW5hcnkgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIHwgQ29weSBGb3JtYXQgCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAgICAgICB8IHQKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi OwpAQCAtMjcxLDI3ICsyNzEsMjcgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6 ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAg VG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVw bGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBz dWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIHwgQ29weSBGb3JtYXQgCistLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAgICAgICB8IHQK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVh bWluZyA9IHBhcmFsbGVsKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gfCBDb3B5IEZvcm1hdCAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJh bGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMCAgICAg IHwgdAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiB8IENvcHkgRm9ybWF0IAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w ICAgICAgfCB0CiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0 cwpAQCAtMzA2LDEwICszMDYsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBBREQgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZnIKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0 cHViMiBXSVRIIChyZWZyZXNoID0gZmFsc2UpOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1 YjEiIGlzIGFscmVhZHkgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHVi MSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24g ICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gfCBDb3B5IEZvcm1hdCAKKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3Rw dWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wICAgICAgfCB0CiAoMSByb3cpCiAKIC0tIGZhaWwgLSBw dWJsaWNhdGlvbiB1c2VkIG1vcmUgdGhhbiBvbmNlCkBAIC0zMjQsMTAgKzMyNCwxMCBAQCBFUlJP UjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViMyIgaXMgbm90IGluIHN1YnNjcmlwdGlvbiAicmVncmVz c190ZXN0c3ViIgogLS0gb2sgLSBkZWxldGUgcHVibGljYXRpb25zCiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIyIFdJ VEggKHJlZnJlc2ggPSBmYWxzZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIHwgQ29weSBGb3JtYXQgCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAg ICAgICB8IHQKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpA QCAtMzYzLDEwICszNjMsMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg Q09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBz dWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJz Y3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIHwgQ29weSBGb3JtYXQgCistLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg cCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAgICAgICB8IHQKICgx IHJvdykKIAogLS1mYWlsIC0gYWx0ZXIgb2YgdHdvX3BoYXNlIG9wdGlvbiBub3Qgc3VwcG9ydGVk LgpAQCAtMzc1LDEwICszNzUsMTAgQEAgRVJST1I6ICB1bnJlY29nbml6ZWQgc3Vic2NyaXB0aW9u IHBhcmFtZXRlcjogInR3b19waGFzZSIKIC0tIGJ1dCBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4g dHdvX3BoYXNlIGVuYWJsZWQKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzdHJlYW1pbmcgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAot LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAg ICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gfCBDb3B5IEZvcm1hdCAKKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv biAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMCAg ICAgIHwgdAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNF VCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0zODgsMTAgKzM4OCwxMCBAQCBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlv biwgYW5kIHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gfCBDb3B5IEZvcm1hdCAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMCAgICAgIHwgdAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC00MDQsMTggKzQwNCwxOCBAQCBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRl ZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwg eW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhl IHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gfCBD b3B5IEZvcm1hdCAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMCAgICAgIHwgdAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogXGRS cysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiB8IENvcHkgRm9ybWF0IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wICAgICAgfCB0CiAoMSByb3cpCiAKIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAwMl90eXBlcy5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAwMl90eXBlcy5wbAppbmRleCA2YjU4NTNiODBiLi4xYmUyZjNjMzA0 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDJfdHlwZXMucGwKKysrIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDAyX3R5cGVzLnBsCkBAIC0xOSw2ICsxOSwxMSBAQCBt eSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJz Y3JpYmVyJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xv Z2ljYWwnKTsKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCisjIENyZWF0ZSBiaW5hcnkgc3Vi c2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyX2JpbmFyeSA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcl9iaW5hcnknKTsKKyRub2RlX3N1YnNjcmliZXJf YmluYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNj cmliZXJfYmluYXJ5LT5zdGFydDsKKwogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250ZW50 IG9uIHB1Ymxpc2hlcgogbXkgJGRkbCA9IHFxKAogCUNSRUFURSBFWFRFTlNJT04gaHN0b3JlIFdJ VEggU0NIRU1BIHB1YmxpYzsKQEAgLTEwNCw2ICsxMDksMTAwIEBAIG15ICRkZGwgPSBxcSgKICMg U2V0dXAgc3RydWN0dXJlIG9uIGJvdGggbm9kZXMKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICRkZGwpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICRkZGwpOworJG5vZGVfc3Vic2NyaWJlcl9iaW5hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAkZGRsKTsKKworIyBJbnNlcnQgaW5pdGlhbCB0ZXN0IGRhdGEKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCS0tIHRlc3RfdGJsX29uZV9hcnJheV9jb2wK KwlJTlNFUlQgSU5UTyB0c3Rfb25lX2FycmF5IChhLCBiKSBWQUxVRVMKKwkJKDEsICd7MSwgMiwg M30nKSwKKwkJKDIsICd7MiwgMywgMX0nKTsKKworCS0tIHRlc3RfdGJsX2FycmF5cworCUlOU0VS VCBJTlRPIHRzdF9hcnJheXMgKGEsIGIsIGMsIGQpIFZBTFVFUworCQkoJ3sxLCAyLCAzfScsICd7 ImEiLCAiYiIsICJjIn0nLCAnezEuMSwgMi4yLCAzLjN9JywgJ3siMSBkYXkiLCAiMiBkYXlzIiwg IjMgZGF5cyJ9JyksCisJCSgnezIsIDMsIDF9JywgJ3siYiIsICJjIiwgImEifScsICd7Mi4yLCAz LjMsIDEuMX0nLCAneyIyIG1pbnV0ZXMiLCAiMyBtaW51dGVzIiwgIjEgbWludXRlIn0nKTsKKwor CS0tIHRlc3RfdGJsX3NpbmdsZV9lbnVtCisJSU5TRVJUIElOVE8gdHN0X29uZV9lbnVtIChhLCBi KSBWQUxVRVMKKwkJKDEsICdhJyksCisJCSgyLCAnYicpOworCisJLS0gdGVzdF90YmxfZW51bXMK KwlJTlNFUlQgSU5UTyB0c3RfZW51bXMgKGEsIGIpIFZBTFVFUworCQkoJ2EnLCAne2IsIGN9Jyks CisJCSgnYicsICd7YywgYX0nKTsKKworCS0tIHRlc3RfdGJsX3NpbmdsZV9jb21wb3NpdGVzCisJ SU5TRVJUIElOVE8gdHN0X29uZV9jb21wIChhLCBiKSBWQUxVRVMKKwkJKDEsIFJPVygxLjAsICdh JywgMSkpLAorCQkoMiwgUk9XKDIuMCwgJ2InLCAyKSk7CisKKwktLSB0ZXN0X3RibF9jb21wb3Np dGVzCisJSU5TRVJUIElOVE8gdHN0X2NvbXBzIChhLCBiKSBWQUxVRVMKKwkJKFJPVygxLjAsICdh JywgMSksIEFSUkFZW1JPVygxLCAnYScsIDEpOjp0c3RfY29tcF9iYXNpY190XSksCisJCShST1co Mi4wLCAnYicsIDIpLCBBUlJBWVtST1coMiwgJ2InLCAyKTo6dHN0X2NvbXBfYmFzaWNfdF0pOwor CisJLS0gdGVzdF90YmxfY29tcG9zaXRlX3dpdGhfZW51bXMKKwlJTlNFUlQgSU5UTyB0c3RfY29t cF9lbnVtIChhLCBiKSBWQUxVRVMKKwkJKDEsIFJPVygxLjAsICdhJywgMSkpLAorCQkoMiwgUk9X KDIuMCwgJ2InLCAyKSk7CisKKwktLSB0ZXN0X3RibF9jb21wb3NpdGVfd2l0aF9lbnVtc19hcnJh eQorCUlOU0VSVCBJTlRPIHRzdF9jb21wX2VudW1fYXJyYXkgKGEsIGIpIFZBTFVFUworCQkoUk9X KDEuMCwgJ2EnLCAxKSwgQVJSQVlbUk9XKDEsICdhJywgMSk6OnRzdF9jb21wX2VudW1fdF0pLAor CQkoUk9XKDIuMCwgJ2InLCAyKSwgQVJSQVlbUk9XKDIsICdiJywgMik6OnRzdF9jb21wX2VudW1f dF0pOworCisJLS0gdGVzdF90YmxfY29tcG9zaXRlX3dpdGhfc2luZ2xlX2VudW1zX2FycmF5X2lu X2NvbXBvc2l0ZQorCUlOU0VSVCBJTlRPIHRzdF9jb21wX29uZV9lbnVtX2FycmF5IChhLCBiKSBW QUxVRVMKKwkJKDEsIFJPVygxLjAsICd7YSwgYiwgY30nLCAxKSksCisJCSgyLCBST1coMi4wLCAn e2EsIGIsIGN9JywgMikpOworCisJLS0gdGVzdF90YmxfY29tcG9zaXRlX3dpdGhfZW51bXNfYXJy YXlfaW5fY29tcG9zaXRlCisJSU5TRVJUIElOVE8gdHN0X2NvbXBfZW51bV93aGF0IChhLCBiKSBW QUxVRVMKKwkJKFJPVygxLjAsICd7YSwgYiwgY30nLCAxKSwgQVJSQVlbUk9XKDEsICd7YSwgYiwg Y30nLCAxKTo6dHN0X2NvbXBfZW51bV9hcnJheV90XSksCisJCShST1coMi4wLCAne2IsIGMsIGF9 JywgMiksIEFSUkFZW1JPVygyLCAne2IsIGMsIGF9JywgMSk6OnRzdF9jb21wX2VudW1fYXJyYXlf dF0pOworCisJLS0gdGVzdF90YmxfbWl4ZWRfY29tcG9zaXRlcworCUlOU0VSVCBJTlRPIHRzdF9j b21wX21peF9hcnJheSAoYSwgYikgVkFMVUVTCisJCShST1coCisJCQlST1coMSwnYScsMSksCisJ CQlBUlJBWVtST1coMSwnYScsMSk6OnRzdF9jb21wX2Jhc2ljX3QsIFJPVygyLCdiJywyKTo6dHN0 X2NvbXBfYmFzaWNfdF0sCisJCQknYScsCisJCQkne2EsYixOVUxMLGN9JyksCisJCUFSUkFZWwor CQkJUk9XKAorCQkJCVJPVygxLCdhJywxKSwKKwkJCQlBUlJBWVsKKwkJCQkJUk9XKDEsJ2EnLDEp Ojp0c3RfY29tcF9iYXNpY190LAorCQkJCQlST1coMiwnYicsMik6OnRzdF9jb21wX2Jhc2ljX3Qs CisJCQkJCU5VTEwKKwkJCQkJXSwKKwkJCQknYScsCisJCQkJJ3thLGIsY30nCisJCQkJKTo6dHN0 X2NvbXBfbWl4X3QKKwkJCV0KKwkJKTsKKworCS0tIHRlc3RfdGJsX3JhbmdlCisJSU5TRVJUIElO VE8gdHN0X3JhbmdlIChhLCBiKSBWQUxVRVMKKwkJKDEsICdbMSwgMTBdJyksCisJCSgyLCAnWzIs IDIwXScpOworCisJLS0gdGVzdF90YmxfcmFuZ2VfYXJyYXkKKwlJTlNFUlQgSU5UTyB0c3RfcmFu Z2VfYXJyYXkgKGEsIGIsIGMpIFZBTFVFUworCQkoMSwgdHN0enJhbmdlKCdNb24gQXVnIDA0IDAw OjAwOjAwIDIwMTQgQ0VTVCc6OnRpbWVzdGFtcHR6LCAnaW5maW5pdHknKSwgJ3siWzEsMl0iLCAi WzEwLDIwXSJ9JyksCisJCSgyLCB0c3R6cmFuZ2UoJ1NhdCBBdWcgMDIgMDA6MDA6MDAgMjAxNCBD RVNUJzo6dGltZXN0YW1wdHosICdNb24gQXVnIDA0IDAwOjAwOjAwIDIwMTQgQ0VTVCc6OnRpbWVz dGFtcHR6KSwgJ3siWzIsM10iLCAiWzIwLDMwXSJ9Jyk7CisKKwktLSB0c3RfaHN0b3JlCisJSU5T RVJUIElOVE8gdHN0X2hzdG9yZSAoYSwgYikgVkFMVUVTCisJCSgxLCAnImEiPT4iMSInKSwKKwkJ KDIsICcienp6Ij0+ImZvbyInKTsKKworCS0tIHRzdF9kb21fY29uc3RyCisJSU5TRVJUIElOVE8g dHN0X2RvbV9jb25zdHIgVkFMVUVTICgxMCk7CispKTsKIAogIyBTZXR1cCBsb2dpY2FsIHJlcGxp Y2F0aW9uCiBteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIg LiAnIGRibmFtZT1wb3N0Z3Jlcyc7CkBAIC0xMTMsODkgKzIxMiwxMjYgQEAgJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHNsb3RfbmFtZSA9IHRh cF9zdWJfc2xvdCkiCiApOworJG5vZGVfc3Vic2NyaWJlcl9iaW5hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfYmluYXJ5IENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzbG90X25hbWUg PSB0YXBfc3ViX2JpbmFyeV9zbG90LCBiaW5hcnkgPSB0cnVlLCBjb3B5X2Zvcm1hdCA9ICdiaW5h cnknKSIKKyk7CiAKICMgV2FpdCBmb3IgaW5pdGlhbCBzeW5jIHRvIGZpbmlzaCBhcyB3ZWxsCiAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNo ZXIsICd0YXBfc3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyX2JpbmFyeS0+d2FpdF9mb3Jfc3Vic2Ny aXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9iaW5hcnknKTsKIAotIyBJbnNl cnQgaW5pdGlhbCB0ZXN0IGRhdGEKK215ICRzeW5jX2NoZWNrID0gIHFxKAorCVNFVCB0aW1lem9u ZSA9ICcrMic7CisJU0VMRUNUIGEsIGIgRlJPTSB0c3Rfb25lX2FycmF5IE9SREVSIEJZIGE7CisJ U0VMRUNUIGEsIGIsIGMsIGQgRlJPTSB0c3RfYXJyYXlzIE9SREVSIEJZIGE7CisJU0VMRUNUIGEs IGIgRlJPTSB0c3Rfb25lX2VudW0gT1JERVIgQlkgYTsKKwlTRUxFQ1QgYSwgYiBGUk9NIHRzdF9l bnVtcyBPUkRFUiBCWSBhOworCVNFTEVDVCBhLCBiIEZST00gdHN0X29uZV9jb21wIE9SREVSIEJZ IGE7CisJU0VMRUNUIGEsIGIgRlJPTSB0c3RfY29tcHMgT1JERVIgQlkgYTsKKwlTRUxFQ1QgYSwg YiBGUk9NIHRzdF9jb21wX2VudW0gT1JERVIgQlkgYTsKKwlTRUxFQ1QgYSwgYiBGUk9NIHRzdF9j b21wX2VudW1fYXJyYXkgT1JERVIgQlkgYTsKKwlTRUxFQ1QgYSwgYiBGUk9NIHRzdF9jb21wX29u ZV9lbnVtX2FycmF5IE9SREVSIEJZIGE7CisJU0VMRUNUIGEsIGIgRlJPTSB0c3RfY29tcF9lbnVt X3doYXQgT1JERVIgQlkgYTsKKwlTRUxFQ1QgYSwgYiBGUk9NIHRzdF9jb21wX21peF9hcnJheSBP UkRFUiBCWSBhOworCVNFTEVDVCBhLCBiIEZST00gdHN0X3JhbmdlIE9SREVSIEJZIGE7CisJU0VM RUNUIGEsIGIsIGMgRlJPTSB0c3RfcmFuZ2VfYXJyYXkgT1JERVIgQlkgYTsKKwlTRUxFQ1QgYSwg YiBGUk9NIHRzdF9oc3RvcmUgT1JERVIgQlkgYTsKKyk7CisKKyMgQ2hlY2sgdGhlIHN5bmNlZCBk YXRhIG9uIHN1YnNjcmliZXJzCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICRzeW5jX2NoZWNrKTsKK215ICRyZXN1bHRfYmluYXJ5ID0gJG5vZGVf c3Vic2NyaWJlcl9iaW5hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkc3luY19jaGVjayk7CisK K215ICRzeW5jX3Jlc3VsdCA9ICcxfHsxLDIsM30KKzJ8ezIsMywxfQorezEsMiwzfXx7YSxiLGN9 fHsxLjEsMi4yLDMuM318eyIxIGRheSIsIjIgZGF5cyIsIjMgZGF5cyJ9Cit7MiwzLDF9fHtiLGMs YX18ezIuMiwzLjMsMS4xfXx7MDA6MDI6MDAsMDA6MDM6MDAsMDA6MDE6MDB9CisxfGEKKzJ8Ygor YXx7YixjfQorYnx7YyxhfQorMXwoMSxhLDEpCisyfCgyLGIsMikKKygxLGEsMSl8eyIoMSxhLDEp In0KKygyLGIsMil8eyIoMixiLDIpIn0KKzF8KDEsYSwxKQorMnwoMixiLDIpCisoMSxhLDEpfHsi KDEsYSwxKSJ9CisoMixiLDIpfHsiKDIsYiwyKSJ9CisxfCgxLCJ7YSxiLGN9IiwxKQorMnwoMiwi e2EsYixjfSIsMikKKygxLCJ7YSxiLGN9IiwxKXx7IigxLFwie2EsYixjfVwiLDEpIn0KKygyLCJ7 YixjLGF9IiwyKXx7IigyLFwie2IsYyxhfVwiLDEpIn0KKygiKDEsYSwxKSIsInsiIigxLGEsMSki IiwiIigyLGIsMikiIn0iLGEsInthLGIsTlVMTCxjfSIpfHsiKFwiKDEsYSwxKVwiLFwie1wiXCIo MSxhLDEpXCJcIixcIlwiKDIsYiwyKVwiXCIsTlVMTH1cIixhLFwie2EsYixjfVwiKSJ9CisxfFsx LDExKQorMnxbMiwyMSkKKzF8WyIyMDE0LTA4LTA0IDAwOjAwOjAwKzAyIixpbmZpbml0eSl8eyJb MSwzKSIsIlsxMCwyMSkifQorMnxbIjIwMTQtMDgtMDIgMDA6MDA6MDArMDIiLCIyMDE0LTA4LTA0 IDAwOjAwOjAwKzAyIil8eyJbMiw0KSIsIlsyMCwzMSkifQorMXwiYSI9PiIxIgorMnwienp6Ij0+ ImZvbyInOworCitpcyggJHJlc3VsdCwgJHN5bmNfcmVzdWx0LCAnY2hlY2sgaW5pdGlhbCBzeW5j IG9uIHN1YnNjcmliZXInKTsKK2lzKCAkcmVzdWx0X2JpbmFyeSwgJHN5bmNfcmVzdWx0LCAnY2hl Y2sgaW5pdGlhbCBzeW5jIG9uIHN1YnNjcmliZXIgaW4gYmluYXJ5Jyk7CisKKyMgSW5zZXJ0IHRl c3QgZGF0YSBmb3IgdXBkYXRlIHRvIGFwcGx5IGNoYW5nZXMKICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCS0tIHRlc3RfdGJsX29uZV9hcnJheV9jb2wKIAlJ TlNFUlQgSU5UTyB0c3Rfb25lX2FycmF5IChhLCBiKSBWQUxVRVMKLQkJKDEsICd7MSwgMiwgM30n KSwKLQkJKDIsICd7MiwgMywgMX0nKSwKIAkJKDMsICd7MywgMiwgMX0nKSwKIAkJKDQsICd7NCwg MywgMn0nKSwKIAkJKDUsICd7NSwgTlVMTCwgM30nKTsKIAogCS0tIHRlc3RfdGJsX2FycmF5cwog CUlOU0VSVCBJTlRPIHRzdF9hcnJheXMgKGEsIGIsIGMsIGQpIFZBTFVFUwotCQkoJ3sxLCAyLCAz fScsICd7ImEiLCAiYiIsICJjIn0nLCAnezEuMSwgMi4yLCAzLjN9JywgJ3siMSBkYXkiLCAiMiBk YXlzIiwgIjMgZGF5cyJ9JyksCi0JCSgnezIsIDMsIDF9JywgJ3siYiIsICJjIiwgImEifScsICd7 Mi4yLCAzLjMsIDEuMX0nLCAneyIyIG1pbnV0ZXMiLCAiMyBtaW51dGVzIiwgIjEgbWludXRlIn0n KSwKIAkJKCd7MywgMSwgMn0nLCAneyJjIiwgImEiLCAiYiJ9JywgJ3szLjMsIDEuMSwgMi4yfScs ICd7IjMgeWVhcnMiLCAiMSB5ZWFyIiwgIjIgeWVhcnMifScpLAogCQkoJ3s0LCAxLCAyfScsICd7 ImQiLCAiYSIsICJiIn0nLCAnezQuNCwgMS4xLCAyLjJ9JywgJ3siNCB5ZWFycyIsICIxIHllYXIi LCAiMiB5ZWFycyJ9JyksCiAJCSgnezUsIE5VTEwsIE5VTEx9JywgJ3siZSIsIE5VTEwsICJiIn0n LCAnezUuNSwgMS4xLCBOVUxMfScsICd7IjUgeWVhcnMiLCBOVUxMLCBOVUxMfScpOwogCiAJLS0g dGVzdF90Ymxfc2luZ2xlX2VudW0KIAlJTlNFUlQgSU5UTyB0c3Rfb25lX2VudW0gKGEsIGIpIFZB TFVFUwotCQkoMSwgJ2EnKSwKLQkJKDIsICdiJyksCiAJCSgzLCAnYycpLAogCQkoNCwgJ2QnKSwK IAkJKDUsIE5VTEwpOwogCiAJLS0gdGVzdF90YmxfZW51bXMKIAlJTlNFUlQgSU5UTyB0c3RfZW51 bXMgKGEsIGIpIFZBTFVFUwotCQkoJ2EnLCAne2IsIGN9JyksCi0JCSgnYicsICd7YywgYX0nKSwK IAkJKCdjJywgJ3tiLCBhfScpLAogCQkoJ2QnLCAne2MsIGJ9JyksCiAJCSgnZScsICd7ZCwgTlVM TH0nKTsKIAogCS0tIHRlc3RfdGJsX3NpbmdsZV9jb21wb3NpdGVzCiAJSU5TRVJUIElOVE8gdHN0 X29uZV9jb21wIChhLCBiKSBWQUxVRVMKLQkJKDEsIFJPVygxLjAsICdhJywgMSkpLAotCQkoMiwg Uk9XKDIuMCwgJ2InLCAyKSksCiAJCSgzLCBST1coMy4wLCAnYycsIDMpKSwKIAkJKDQsIFJPVyg0 LjAsICdkJywgNCkpLAogCQkoNSwgUk9XKE5VTEwsIE5VTEwsIDUpKTsKIAogCS0tIHRlc3RfdGJs X2NvbXBvc2l0ZXMKIAlJTlNFUlQgSU5UTyB0c3RfY29tcHMgKGEsIGIpIFZBTFVFUwotCQkoUk9X KDEuMCwgJ2EnLCAxKSwgQVJSQVlbUk9XKDEsICdhJywgMSk6OnRzdF9jb21wX2Jhc2ljX3RdKSwK LQkJKFJPVygyLjAsICdiJywgMiksIEFSUkFZW1JPVygyLCAnYicsIDIpOjp0c3RfY29tcF9iYXNp Y190XSksCiAJCShST1coMy4wLCAnYycsIDMpLCBBUlJBWVtST1coMywgJ2MnLCAzKTo6dHN0X2Nv bXBfYmFzaWNfdF0pLAogCQkoUk9XKDQuMCwgJ2QnLCA0KSwgQVJSQVlbUk9XKDQsICdkJywgMyk6 OnRzdF9jb21wX2Jhc2ljX3RdKSwKIAkJKFJPVyg1LjAsICdlJywgTlVMTCksIEFSUkFZW05VTEws IFJPVyg1LCBOVUxMLCA1KTo6dHN0X2NvbXBfYmFzaWNfdF0pOwogCiAJLS0gdGVzdF90YmxfY29t cG9zaXRlX3dpdGhfZW51bXMKIAlJTlNFUlQgSU5UTyB0c3RfY29tcF9lbnVtIChhLCBiKSBWQUxV RVMKLQkJKDEsIFJPVygxLjAsICdhJywgMSkpLAotCQkoMiwgUk9XKDIuMCwgJ2InLCAyKSksCiAJ CSgzLCBST1coMy4wLCAnYycsIDMpKSwKIAkJKDQsIFJPVyg0LjAsICdkJywgNCkpLAogCQkoNSwg Uk9XKE5VTEwsICdlJywgTlVMTCkpOwogCiAJLS0gdGVzdF90YmxfY29tcG9zaXRlX3dpdGhfZW51 bXNfYXJyYXkKIAlJTlNFUlQgSU5UTyB0c3RfY29tcF9lbnVtX2FycmF5IChhLCBiKSBWQUxVRVMK LQkJKFJPVygxLjAsICdhJywgMSksIEFSUkFZW1JPVygxLCAnYScsIDEpOjp0c3RfY29tcF9lbnVt X3RdKSwKLQkJKFJPVygyLjAsICdiJywgMiksIEFSUkFZW1JPVygyLCAnYicsIDIpOjp0c3RfY29t cF9lbnVtX3RdKSwKIAkJKFJPVygzLjAsICdjJywgMyksIEFSUkFZW1JPVygzLCAnYycsIDMpOjp0 c3RfY29tcF9lbnVtX3RdKSwKIAkJKFJPVyg0LjAsICdkJywgMyksIEFSUkFZW1JPVygzLCAnZCcs IDMpOjp0c3RfY29tcF9lbnVtX3RdKSwKIAkJKFJPVyg1LjAsICdlJywgMyksIEFSUkFZW1JPVygz LCAnZScsIDMpOjp0c3RfY29tcF9lbnVtX3QsIE5VTExdKTsKIAogCS0tIHRlc3RfdGJsX2NvbXBv c2l0ZV93aXRoX3NpbmdsZV9lbnVtc19hcnJheV9pbl9jb21wb3NpdGUKIAlJTlNFUlQgSU5UTyB0 c3RfY29tcF9vbmVfZW51bV9hcnJheSAoYSwgYikgVkFMVUVTCi0JCSgxLCBST1coMS4wLCAne2Es IGIsIGN9JywgMSkpLAotCQkoMiwgUk9XKDIuMCwgJ3thLCBiLCBjfScsIDIpKSwKIAkJKDMsIFJP VygzLjAsICd7YSwgYiwgY30nLCAzKSksCiAJCSg0LCBST1coNC4wLCAne2MsIGIsIGR9JywgNCkp LAogCQkoNSwgUk9XKDUuMCwgJ3tOVUxMLCBlLCBOVUxMfScsIDUpKTsKIAogCS0tIHRlc3RfdGJs X2NvbXBvc2l0ZV93aXRoX2VudW1zX2FycmF5X2luX2NvbXBvc2l0ZQogCUlOU0VSVCBJTlRPIHRz dF9jb21wX2VudW1fd2hhdCAoYSwgYikgVkFMVUVTCi0JCShST1coMS4wLCAne2EsIGIsIGN9Jywg MSksIEFSUkFZW1JPVygxLCAne2EsIGIsIGN9JywgMSk6OnRzdF9jb21wX2VudW1fYXJyYXlfdF0p LAotCQkoUk9XKDIuMCwgJ3tiLCBjLCBhfScsIDIpLCBBUlJBWVtST1coMiwgJ3tiLCBjLCBhfScs IDEpOjp0c3RfY29tcF9lbnVtX2FycmF5X3RdKSwKIAkJKFJPVygzLjAsICd7YywgYSwgYn0nLCAx KSwgQVJSQVlbUk9XKDMsICd7YywgYSwgYn0nLCAxKTo6dHN0X2NvbXBfZW51bV9hcnJheV90XSks CiAJCShST1coNC4wLCAne2MsIGIsIGR9JywgNCksIEFSUkFZW1JPVyg0LCAne2MsIGIsIGR9Jywg NCk6OnRzdF9jb21wX2VudW1fYXJyYXlfdF0pLAogCQkoUk9XKDUuMCwgJ3tjLCBOVUxMLCBifScs IE5VTEwpLCBBUlJBWVtST1coNSwgJ3tjLCBlLCBifScsIDEpOjp0c3RfY29tcF9lbnVtX2FycmF5 X3RdKTsKQEAgLTIwMywxMCArMzM5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAog CS0tIHRlc3RfdGJsX21peGVkX2NvbXBvc2l0ZXMKIAlJTlNFUlQgSU5UTyB0c3RfY29tcF9taXhf YXJyYXkgKGEsIGIpIFZBTFVFUwogCQkoUk9XKAotCQkJUk9XKDEsJ2EnLDEpLAotCQkJQVJSQVlb Uk9XKDEsJ2EnLDEpOjp0c3RfY29tcF9iYXNpY190LCBST1coMiwnYicsMik6OnRzdF9jb21wX2Jh c2ljX3RdLAotCQkJJ2EnLAotCQkJJ3thLGIsTlVMTCxjfScpLAorCQkJUk9XKDIsJ2InLDIpLAor CQkJQVJSQVlbUk9XKDIsJ2InLDIpOjp0c3RfY29tcF9iYXNpY190LCBST1coMywnYycsMyk6OnRz dF9jb21wX2Jhc2ljX3RdLAorCQkJJ2InLAorCQkJJ3tiLGMsTlVMTCxkfScpLAogCQlBUlJBWVsK IAkJCVJPVygKIAkJCQlST1coMSwnYScsMSksCkBAIC0yMjMsMzYgKzM1OSwyOSBAQCAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKIAogCS0tIHRlc3RfdGJsX3JhbmdlCiAJSU5TRVJUIElOVE8g dHN0X3JhbmdlIChhLCBiKSBWQUxVRVMKLQkJKDEsICdbMSwgMTBdJyksCi0JCSgyLCAnWzIsIDIw XScpLAogCQkoMywgJ1szLCAzMF0nKSwKIAkJKDQsICdbNCwgNDBdJyksCiAJCSg1LCAnWzUsIDUw XScpOwogCiAJLS0gdGVzdF90YmxfcmFuZ2VfYXJyYXkKIAlJTlNFUlQgSU5UTyB0c3RfcmFuZ2Vf YXJyYXkgKGEsIGIsIGMpIFZBTFVFUwotCQkoMSwgdHN0enJhbmdlKCdNb24gQXVnIDA0IDAwOjAw OjAwIDIwMTQgQ0VTVCc6OnRpbWVzdGFtcHR6LCAnaW5maW5pdHknKSwgJ3siWzEsMl0iLCAiWzEw LDIwXSJ9JyksCi0JCSgyLCB0c3R6cmFuZ2UoJ1NhdCBBdWcgMDIgMDA6MDA6MDAgMjAxNCBDRVNU Jzo6dGltZXN0YW1wdHosICdNb24gQXVnIDA0IDAwOjAwOjAwIDIwMTQgQ0VTVCc6OnRpbWVzdGFt cHR6KSwgJ3siWzIsM10iLCAiWzIwLDMwXSJ9JyksCiAJCSgzLCB0c3R6cmFuZ2UoJ0ZyaSBBdWcg MDEgMDA6MDA6MDAgMjAxNCBDRVNUJzo6dGltZXN0YW1wdHosICdNb24gQXVnIDA0IDAwOjAwOjAw IDIwMTQgQ0VTVCc6OnRpbWVzdGFtcHR6KSwgJ3siWzMsNF0ifScpLAogCQkoNCwgdHN0enJhbmdl KCdUaHUgSnVsIDMxIDAwOjAwOjAwIDIwMTQgQ0VTVCc6OnRpbWVzdGFtcHR6LCAnTW9uIEF1ZyAw NCAwMDowMDowMCAyMDE0IENFU1QnOjp0aW1lc3RhbXB0eiksICd7Ils0LDVdIiwgTlVMTCwgIls0 MCw1MF0ifScpLAogCQkoNSwgTlVMTCwgTlVMTCk7CiAKIAktLSB0c3RfaHN0b3JlCiAJSU5TRVJU IElOVE8gdHN0X2hzdG9yZSAoYSwgYikgVkFMVUVTCi0JCSgxLCAnImEiPT4iMSInKSwKLQkJKDIs ICcienp6Ij0+ImZvbyInKSwKIAkJKDMsICciMTIzIj0+IjMyMSInKSwKIAkJKDQsICcieWVsbG93 IGhvcnNlIj0+Im1vYW5lZCInKTsKIAogCS0tIHRzdF9kb21fY29uc3RyCi0JSU5TRVJUIElOVE8g dHN0X2RvbV9jb25zdHIgVkFMVUVTICgxMCk7CisJSU5TRVJUIElOVE8gdHN0X2RvbV9jb25zdHIg VkFMVUVTICgxMSk7CiApKTsKIAogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0 YXBfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfYmlu YXJ5Jyk7CiAKLSMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vic2NyaWJlcgotbXkgJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKK215ICRpbml0aWFs X2NoZWNrID0gIHFxKAogCVNFVCB0aW1lem9uZSA9ICcrMic7CiAJU0VMRUNUIGEsIGIgRlJPTSB0 c3Rfb25lX2FycmF5IE9SREVSIEJZIGE7CiAJU0VMRUNUIGEsIGIsIGMsIGQgRlJPTSB0c3RfYXJy YXlzIE9SREVSIEJZIGE7CkBAIC0yNjgsOSArMzk3LDEzIEBAIG15ICRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJU0VMRUNUIGEsIGIgRlJPTSB0c3RfcmFuZ2UgT1JERVIg QlkgYTsKIAlTRUxFQ1QgYSwgYiwgYyBGUk9NIHRzdF9yYW5nZV9hcnJheSBPUkRFUiBCWSBhOwog CVNFTEVDVCBhLCBiIEZST00gdHN0X2hzdG9yZSBPUkRFUiBCWSBhOwotKSk7CispOworCisjIENo ZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXJzCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRpbml0aWFsX2NoZWNrKTsKKyRyZXN1bHRfYmluYXJ5ID0g JG5vZGVfc3Vic2NyaWJlcl9iaW5hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkaW5pdGlhbF9j aGVjayk7CiAKLWlzKCAkcmVzdWx0LCAnMXx7MSwyLDN9CitteSAkaW5pdGlhbF9yZXN1bHQgPSAn MXx7MSwyLDN9CiAyfHsyLDMsMX0KIDN8ezMsMiwxfQogNHx7NCwzLDJ9CkBAIC0zMjEsNiArNDU0 LDcgQEAgZXx7ZCxOVUxMfQogKDQsIntjLGIsZH0iLDQpfHsiKDQsXCJ7YyxiLGR9XCIsNCkifQog KDUsIntjLE5VTEwsYn0iLCl8eyIoNSxcIntjLGUsYn1cIiwxKSJ9CiAoIigxLGEsMSkiLCJ7IiIo MSxhLDEpIiIsIiIoMixiLDIpIiJ9IixhLCJ7YSxiLE5VTEwsY30iKXx7IihcIigxLGEsMSlcIixc IntcIlwiKDEsYSwxKVwiXCIsXCJcIigyLGIsMilcIlwiLE5VTEx9XCIsYSxcInthLGIsY31cIiki fQorKCIoMixiLDIpIiwieyIiKDIsYiwyKSIiLCIiKDMsYywzKSIifSIsYiwie2IsYyxOVUxMLGR9 Iil8eyIoXCIoMSxhLDEpXCIsXCJ7XCJcIigxLGEsMSlcIlwiLFwiXCIoMixiLDIpXCJcIixOVUxM fVwiLGEsXCJ7YSxiLGN9XCIpIn0KIDF8WzEsMTEpCiAyfFsyLDIxKQogM3xbMywzMSkKQEAgLTMz NCw4ICs0NjgsMTAgQEAgZXx7ZCxOVUxMfQogMXwiYSI9PiIxIgogMnwienp6Ij0+ImZvbyIKIDN8 IjEyMyI9PiIzMjEiCi00fCJ5ZWxsb3cgaG9yc2UiPT4ibW9hbmVkIicsCi0JJ2NoZWNrIHJlcGxp Y2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7Cis0fCJ5ZWxsb3cgaG9yc2UiPT4ibW9hbmVk Iic7CisKK2lzKCAkcmVzdWx0LCAkaW5pdGlhbF9yZXN1bHQsICdjaGVjayByZXBsaWNhdGVkIGlu c2VydHMgb24gc3Vic2NyaWJlcicpOworaXMoICRyZXN1bHRfYmluYXJ5LCAkaW5pdGlhbF9yZXN1 bHQsICdjaGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlciBpbiBiaW5hcnknKTsK IAogIyBSdW4gYmF0Y2ggb2YgdXBkYXRlcwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBA IC0zNzAsMTAgKzUwNiw5IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogKSk7CiAKICRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2JpbmFyeScpOwogCi0jIENoZWNrIHRoZSBk YXRhIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXEoCitteSAkdXBkYXRlX2NoZWNrID0gIHFxKAogCVNFVCB0aW1lem9u ZSA9ICcrMic7CiAJU0VMRUNUIGEsIGIgRlJPTSB0c3Rfb25lX2FycmF5IE9SREVSIEJZIGE7CiAJ U0VMRUNUIGEsIGIsIGMsIGQgRlJPTSB0c3RfYXJyYXlzIE9SREVSIEJZIGE7CkBAIC0zODksOSAr NTI0LDEzIEBAICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJU0VMRUNU IGEsIGIgRlJPTSB0c3RfcmFuZ2UgT1JERVIgQlkgYTsKIAlTRUxFQ1QgYSwgYiwgYyBGUk9NIHRz dF9yYW5nZV9hcnJheSBPUkRFUiBCWSBhOwogCVNFTEVDVCBhLCBiIEZST00gdHN0X2hzdG9yZSBP UkRFUiBCWSBhOwotKSk7CispOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXJzCisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICR1cGRhdGVf Y2hlY2spOworJHJlc3VsdF9iaW5hcnkgPSAkbm9kZV9zdWJzY3JpYmVyX2JpbmFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICR1cGRhdGVfY2hlY2spOwogCi1pcyggJHJlc3VsdCwgJzF8ezQsNSw2 fQorbXkgJHVwZGF0ZV9yZXN1bHQgPSAnMXx7NCw1LDZ9CiAyfHsyLDMsMX0KIDN8ezMsMiwxfQog NHx7NCw1LDYsMX0KQEAgLTQ0Miw2ICs1ODEsNyBAQCBlfHtlLGR9CiAoNCwie2MsYixkfSIsNCl8 eyIoNSxcInthLGIsY31cIiw1KSJ9CiAoNSwie2MsTlVMTCxifSIsKXx7Iig1LFwie2EsYixjfVwi LDUpIn0KICgiKDEsYSwxKSIsInsiIigxLGEsMSkiIiwiIigyLGIsMikiIn0iLGEsInthLGIsTlVM TCxjfSIpfHsiKFwiKDEsYSwxKVwiLFwie1wiXCIoMSxhLDEpXCJcIixcIlwiKDIsYiwyKVwiXCIs TlVMTH1cIixhLFwie2EsYixjfVwiKSIsTlVMTH0KKygiKDIsYiwyKSIsInsiIigyLGIsMikiIiwi IigzLGMsMykiIn0iLGIsIntiLGMsTlVMTCxkfSIpfHsiKFwiKDEsYSwxKVwiLFwie1wiXCIoMSxh LDEpXCJcIixcIlwiKDIsYiwyKVwiXCIsTlVMTH1cIixhLFwie2EsYixjfVwiKSJ9CiAxfFsxMDAs MTAwMSkKIDJ8WzIsMjEpCiAzfFszLDMxKQpAQCAtNDU1LDggKzU5NSwxMCBAQCBlfHtlLGR9CiAx fCJ1cGRhdGVkIj0+InZhbHVlIgogMnwidXBkYXRlZCI9PiJ2YWx1ZSIKIDN8ImFsc28iPT4idXBk YXRlZCIKLTR8InllbGxvdyBob3JzZSI9PiJtb2FuZWQiJywKLQknY2hlY2sgcmVwbGljYXRlZCB1 cGRhdGVzIG9uIHN1YnNjcmliZXInKTsKKzR8InllbGxvdyBob3JzZSI9PiJtb2FuZWQiJzsKKwor aXMoICRyZXN1bHQsICR1cGRhdGVfcmVzdWx0LCAnY2hlY2sgcmVwbGljYXRlZCB1cGRhdGVzIG9u IHN1YnNjcmliZXInKTsKK2lzKCAkcmVzdWx0X2JpbmFyeSwgJHVwZGF0ZV9yZXN1bHQsICdjaGVj ayByZXBsaWNhdGVkIHVwZGF0ZXMgb24gc3Vic2NyaWJlciBpbiBiaW5hcnknKTsKIAogIyBSdW4g YmF0Y2ggb2YgZGVsZXRlcwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC00OTAsMTAg KzYzMiw5IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogKSk7CiAKICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2JpbmFyeScpOwogCi0jIENoZWNrIHRoZSBkYXRhIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXEoCitteSAkZGVsZXRlX2NoZWNrID0gIHFxKAogCVNFVCB0aW1lem9uZSA9ICcrMic7 CiAJU0VMRUNUIGEsIGIgRlJPTSB0c3Rfb25lX2FycmF5IE9SREVSIEJZIGE7CiAJU0VMRUNUIGEs IGIsIGMsIGQgRlJPTSB0c3RfYXJyYXlzIE9SREVSIEJZIGE7CkBAIC01MDksOSArNjUwLDEzIEBA ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJU0VMRUNUIGEsIGIgRlJP TSB0c3RfcmFuZ2UgT1JERVIgQlkgYTsKIAlTRUxFQ1QgYSwgYiwgYyBGUk9NIHRzdF9yYW5nZV9h cnJheSBPUkRFUiBCWSBhOwogCVNFTEVDVCBhLCBiIEZST00gdHN0X2hzdG9yZSBPUkRFUiBCWSBh OwotKSk7CispOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXJzCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRkZWxldGVfY2hlY2spOwor JHJlc3VsdF9iaW5hcnkgPSAkbm9kZV9zdWJzY3JpYmVyX2JpbmFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICRkZWxldGVfY2hlY2spOwogCi1pcyggJHJlc3VsdCwgJzN8ezMsMiwxfQorbXkgJGRl bGV0ZV9yZXN1bHQgPSAnM3x7MywyLDF9CiA0fHs0LDUsNiwxfQogNXx7NCw1LDYsMX0KIHszLDEs Mn18e2MsYSxifXx7My4zLDEuMSwyLjJ9fHsiMyB5ZWFycyIsIjEgeWVhciIsIjIgeWVhcnMifQpA QCAtNTQwLDI2ICs2ODUsNTYgQEAgZXx7ZSxkfQogKDIsIntiLGMsYX0iLDIpfHsiKDIsXCJ7Yixj LGF9XCIsMSkifQogKDQsIntjLGIsZH0iLDQpfHsiKDUsXCJ7YSxiLGN9XCIsNSkifQogKDUsIntj LE5VTEwsYn0iLCl8eyIoNSxcInthLGIsY31cIiw1KSJ9CisoIigyLGIsMikiLCJ7IiIoMixiLDIp IiIsIiIoMyxjLDMpIiJ9IixiLCJ7YixjLE5VTEwsZH0iKXx7IihcIigxLGEsMSlcIixcIntcIlwi KDEsYSwxKVwiXCIsXCJcIigyLGIsMilcIlwiLE5VTEx9XCIsYSxcInthLGIsY31cIikifQogMnxb IjIwMTQtMDgtMDIgMDA6MDA6MDArMDIiLCIyMDE0LTA4LTA0IDAwOjAwOjAwKzAyIil8eyJbMiw0 KSIsIlsyMCwzMSkifQogM3xbIjIwMTQtMDgtMDEgMDA6MDA6MDArMDIiLCIyMDE0LTA4LTA0IDAw OjAwOjAwKzAyIil8eyJbMyw1KSJ9CiAyfCJ1cGRhdGVkIj0+InZhbHVlIgogM3wiYWxzbyI9PiJ1 cGRhdGVkIgotNHwieWVsbG93IGhvcnNlIj0+Im1vYW5lZCInLAotCSdjaGVjayByZXBsaWNhdGVk IGRlbGV0ZXMgb24gc3Vic2NyaWJlcicpOworNHwieWVsbG93IGhvcnNlIj0+Im1vYW5lZCInOwor CitpcyggJHJlc3VsdCwgJGRlbGV0ZV9yZXN1bHQsICdjaGVjayByZXBsaWNhdGVkIGRlbGV0ZXMg b24gc3Vic2NyaWJlcicpOworaXMoICRyZXN1bHRfYmluYXJ5LCAkZGVsZXRlX3Jlc3VsdCwgJ2No ZWNrIHJlcGxpY2F0ZWQgZGVsZXRlcyBvbiBzdWJzY3JpYmVyIGluIGJpbmFyeScpOwogCiAjIFRl c3QgYSBkb21haW4gd2l0aCBhIGNvbnN0cmFpbnQgYmFja2VkIGJ5IGEgU1FMLWxhbmd1YWdlIGZ1 bmN0aW9uLAogIyB3aGljaCBuZWVkcyBhbiBhY3RpdmUgc25hcHNob3QgaW4gb3JkZXIgdG8gb3Bl cmF0ZS4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJ TlRPIHRzdF9kb21fY29uc3RyIFZBTFVFUyAoMTEpIik7CisJIklOU0VSVCBJTlRPIHRzdF9kb21f Y29uc3RyIFZBTFVFUyAoMTIpIik7CiAKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgndGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3Vi X2JpbmFyeScpOworCitteSAkZG9tYWluX2NoZWNrID0gcXEoU0VMRUNUIHN1bShhKSBGUk9NIHRz dF9kb21fY29uc3RyKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAkZG9tYWluX2NoZWNrKTsKKyRyZXN1bHRfYmluYXJ5ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRkb21haW5fY2hlY2spOwogCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBzdW0o YSkgRlJPTSB0c3RfZG9tX2NvbnN0ciIpOwotaXMoJHJlc3VsdCwgJzIxJywgJ3NxbC1mdW5jdGlv biBjb25zdHJhaW50IG9uIGRvbWFpbicpOworaXMoICRyZXN1bHQsICczMycsICdzcWwtZnVuY3Rp b24gY29uc3RyYWludCBvbiBkb21haW4nKTsKK2lzKCAkcmVzdWx0X2JpbmFyeSwgJzMzJywgJ3Nx bC1mdW5jdGlvbiBjb25zdHJhaW50IG9uIGRvbWFpbicpOworCisjIFRlc3Qgd2hldGhlciBzdWJz Y3JpYmVyIGZhaWxzIGluIGNhc2Ugb2YgY29sdW1uIHR5cGUgbWlzbWF0Y2gKKyRkZGwgPSBxcSgK KwlDUkVBVEUgVEFCTEUgdHN0X2JpbmFyeV9taXNtYXRjaCAoYSBpbnQpOworCUlOU0VSVCBJTlRP IHRzdF9iaW5hcnlfbWlzbWF0Y2ggVkFMVUVTICgxKTsKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKworJGRkbCA9IHFxKAorCUNSRUFURSBUQUJMRSB0 c3RfYmluYXJ5X21pc21hdGNoIChhIGJpZ2ludCk7CispOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICRkZGwpOworJG5vZGVfc3Vic2NyaWJlcl9iaW5hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9O Jyk7Ciskbm9kZV9zdWJzY3JpYmVyX2JpbmFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdBTFRF UiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9iaW5hcnkgUkVGUkVTSCBQVUJMSUNBVElPTicpOworCisj IEJpbmFyeSBlbmFibGVkIHN1YnNjcmlwdGlvbiBzaG91bGQgZmFpbAorJG5vZGVfc3Vic2NyaWJl cl9iaW5hcnktPndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gaW5zdWZmaWNp ZW50IGRhdGEgbGVmdCBpbiBtZXNzYWdlLyk7CisKKyMgQmluYXJ5IGRpc2FibGVkIHN1YnNjcmlw dGlvbiBzaG91bGQgc3VjY2VlZAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1YicpOwogCiAkbm9kZV9zdWJzY3JpYmVy LT5zdG9wKCdmYXN0Jyk7Ciskbm9kZV9zdWJzY3JpYmVyX2JpbmFyeS0+c3RvcCgnZmFzdCcpOwog JG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE0X2JpbmFyeS5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNF9iaW5hcnkucGwKaW5kZXggZTUzZTIzZGEzZS4uMDRhZDZkZTA4ZiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE0X2JpbmFyeS5wbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTRfYmluYXJ5LnBsCkBAIC0zNiw2ICszNiwxNiBAQCBt eSAkZGRsID0gcXEoCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRs KTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKIAorIyBJ bnNlcnQgc29tZSBjb250ZW50IGFuZCBtYWtlIHN1cmUgaXQncyBzeW5jZWQgdG8gc3Vic2NyaWJl cgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJU IElOVE8gcHVibGljLnRlc3RfYXJyYXlzIChhLCBiLCBjKSBWQUxVRVMKKwkJKCd7MSwyLDN9Jywg J3sxLjEsIDEuMiwgMS4zfScsICd7Im9uZSIsICJ0d28iLCAidGhyZWUifScpOworCisJSU5TRVJU IElOVE8gcHVibGljLnRlc3RfbnVtZXJpY2FsIChhLCBiLCBjLCBkKSBWQUxVRVMKKwkJKDEsIDEu MiwgMS4zLCAxMCk7CisJKSk7CisKICMgQ29uZmlndXJlIGxvZ2ljYWwgcmVwbGljYXRpb24KICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElP TiB0cHViIEZPUiBBTEwgVEFCTEVTIik7CkBAIC00OCwyNyArNTgsMzUgQEAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIEVuc3VyZSBub2RlcyBhcmUgaW4gc3luYyB3 aXRoIGVhY2ggb3RoZXIKICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9z eW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RzdWInKTsKIAorbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiwgYywgZCBGUk9NIHRl c3RfbnVtZXJpY2FsIE9SREVSIEJZIGE7CisJU0VMRUNUIGEsIGIsIGMgRlJPTSB0ZXN0X2FycmF5 cyBPUkRFUiBCWSBhOyIpOworCitpcyggJHJlc3VsdCwgJzF8MS4yfDEuM3wxMAorezEsMiwzfXx7 MS4xLDEuMiwxLjN9fHtvbmUsdHdvLHRocmVlfScsICdjaGVjayBzeW5lZCBkYXRhIG9uIHN1YnNj cmliZXInKTsKKwogIyBJbnNlcnQgc29tZSBjb250ZW50IGFuZCBtYWtlIHN1cmUgaXQncyByZXBs aWNhdGVkIGFjcm9zcwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywg cXEoCiAJSU5TRVJUIElOVE8gcHVibGljLnRlc3RfYXJyYXlzIChhLCBiLCBjKSBWQUxVRVMKLQkJ KCd7MSwyLDN9JywgJ3sxLjEsIDEuMiwgMS4zfScsICd7Im9uZSIsICJ0d28iLCAidGhyZWUifScp LAogCQkoJ3szLDEsMn0nLCAnezEuMywgMS4xLCAxLjJ9JywgJ3sidGhyZWUiLCAib25lIiwgInR3 byJ9Jyk7CiAKIAlJTlNFUlQgSU5UTyBwdWJsaWMudGVzdF9udW1lcmljYWwgKGEsIGIsIGMsIGQp IFZBTFVFUwotCQkoMSwgMS4yLCAxLjMsIDEwKSwKIAkJKDIsIDIuMiwgMi4zLCAyMCksCiAJCSgz LCAzLjIsIDMuMywgMzApOwogCSkpOwogCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3RzdWInKTsKIAotbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgYSwgYiwgYywgZCBGUk9NIHRlc3RfbnVtZXJpY2FsIE9SREVS IEJZIGEiKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGEsIGIsIGMsIGQgRlJPTSB0ZXN0X251bWVyaWNhbCBPUkRFUiBCWSBhOwor CVNFTEVDVCBhLCBiLCBjIEZST00gdGVzdF9hcnJheXMgT1JERVIgQlkgYTsiKTsKIAogaXMoICRy ZXN1bHQsICcxfDEuMnwxLjN8MTAKIDJ8Mi4yfDIuM3wyMAotM3wzLjJ8My4zfDMwJywgJ2NoZWNr IHJlcGxpY2F0ZWQgZGF0YSBvbiBzdWJzY3JpYmVyJyk7CiszfDMuMnwzLjN8MzAKK3sxLDIsM318 ezEuMSwxLjIsMS4zfXx7b25lLHR3byx0aHJlZX0KK3szLDEsMn18ezEuMywxLjEsMS4yfXx7dGhy ZWUsb25lLHR3b30nLCAnY2hlY2sgcmVwbGljYXRlZCBkYXRhIG9uIHN1YnNjcmliZXInKTsKIAog IyBUZXN0IHVwZGF0ZXMgYXMgd2VsbAogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0tIAoy LjI1LjEKCg== --0000000000001a5d5f05f378f91b--