Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vtM24-0013eC-1W for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Feb 2026 08:38:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vtM23-0072p1-0x for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Feb 2026 08:38:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vtM22-0072ot-2U for pgsql-hackers@lists.postgresql.org; Fri, 20 Feb 2026 08:38:38 +0000 Received: from mail-yx1-xb12c.google.com ([2607:f8b0:4864:20::b12c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vtM1z-00000000Ly3-25lr for pgsql-hackers@lists.postgresql.org; Fri, 20 Feb 2026 08:38:38 +0000 Received: by mail-yx1-xb12c.google.com with SMTP id 956f58d0204a3-649db2b6cdcso1603104d50.0 for ; Fri, 20 Feb 2026 00:38:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771576714; cv=none; d=google.com; s=arc-20240605; b=Rg4rnu984Z0OuHsPJym2ipyFJvFX16loFbTMtNCNZkRyRti4AW3QBe4hnj1B1eCkIh CUXCU+fvw2IrTPuuh+NX4u071lf1rcMYHkyjyo2Hvhobf5apt+0tRVyy8rHuewDeOaB/ rPZKK0sXocfa/f7zr8FfoVv0pC6ZpL41M+DJHfbf+T++pT282p4VCF+0NTBMF0x3ONke PIr5HaGGi5vIUyMEZ07ZZOBusr+mHzjmRJLuqlxeatGlbDJoHYzsJsLXLKVPFgO6WYvg 1e4+W3fVIZ+WxlOly+fW3shUxgddFRcnQDPpeWVAgMcwHKAJ1/wbZSIXDeMu+XXijaDn 8Jlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=6NNXg2mslvxW3aFquNap0QMijSKN9G5EhzZIMUsIXLw=; fh=rNfFIruJEJF0N5I51IjfRk/q9JbfqiL0D4o5QcU7K/M=; b=IBzhnbck1zodLUfMR3n+sr4/SJ3TjR0GqZAJWVVrqk9eQFicCOopy1JlVZ6tVWehVB w2pXG9xz/LYt4gOOVgfX6kOskHadWeb1WMG21OF+CRBsNV8aEF5cBMhYST+Fh4HNDQOn SwNd+CUQ51nffTFK1Kmcx1Z46H2vM6Sb6v14aMAsDP0cI17Q3dtBGn1q7/mwxuRv+FVB PosvqhIqMRWT4tRpVR/dhGAbnGGd8cAVXkuV6U6JB8861WvyTYoj0ozt8j7eGqd+daQ9 l1uVkorbEkduz8032Oi+QjRVE/u4ZuDh97sV6q0b1wkJU/RPwcfyJ46H0tBjOV52pz5i i3/w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771576714; x=1772181514; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6NNXg2mslvxW3aFquNap0QMijSKN9G5EhzZIMUsIXLw=; b=A6RLQUbO/jwdTcz4bPIfHikLHb9Mm/vRCzwlTSu2ipdcpR/utLvJmM2Sd9hYDNObww OQVUeePpHPYP581WT3IqJSdjQxvmy93kADtNILN6PhcyCZi7gfTz4UmET2dg1QCHMyYE 5fscq43mJyZ4PegXWYaYrrAjoltRgr0WUrXsDthHb9kJYrJIR+h17NHYgZ9GeZnqxvS6 K71dUxM+VB1ybV7+m6RKbBS8f+TFek/O3F8vNDtBxdpKY9x/xpgS4ZD0IfoD7QSzhOSI VowoRR6z25FiJg0m4q207amktoi3f9Q3iPJZnQwGLj4P3c/wmXfL45AlwItsjv4cUxdW h4UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771576714; x=1772181514; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6NNXg2mslvxW3aFquNap0QMijSKN9G5EhzZIMUsIXLw=; b=Wkn3wqO5nI6fGi96g5hgwu2FhOI/61pUD8wFlqx311Y/pWm0Tdd7x5iz/4E/MG6ij7 15q9dj47qM3o8PGckNne5V6jCHLrqtIr88wddxpuGu0EpdkLN0ylCdyR8O33WSDwWoQ9 WX8dhKRhuFysgI0E6+D6QEp6wZ4J7ZdiBpQZUeJPZ9DedmiMWDWH+apQq2uuyLSSQXpC CvkjZweHldwUgkM0COZbXFc7oTHBC1IiCEXJqU1gLKO/ftWUsEBYK4ckuNLgghhoyya6 XVVjbyoj5CbNuLSHfQXdBGfSmaeCNBDWUSq/SvIa7apT11wnHf/oTnifoeGcwYRDHJO/ f2mQ== X-Forwarded-Encrypted: i=1; AJvYcCWFdpXTur+qnbv0XLbUqrCMdDc5xS3mkM6u4y51KDPj3cwFjB0oZ51xX+GgAeabmyv/kNWwATrTSG/ts6a3@lists.postgresql.org X-Gm-Message-State: AOJu0Yxw5T+oRnwhsVTv2Vv7U9e0C0+UZ9j3rAhTBnzqGe8Dr1nn+uiM 1+Hp5w51T2zhCWrMrheR5e3fzM9W8aLCP6PfKUBI6fx2wJ8zlbRI8uTJnM5nbWQmXQ/EcyTtR/0 lbCpU0PXTz4I5dGbLh46m0FRAp1oM+z4= X-Gm-Gg: AZuq6aI19PuTOgbATPSA7HQcs9HEHdd7+Q+3scgjEVcHbk8vlV5JWMZVS4D8JvLynhb L06op8PpApkivaSFW6sMC7BhCV5mrUll8RYqpBzZW3XQKfZRsFvJT/UMOdLjz3h7Gpu3ZpXS4FL PfNf0i/ZCBwKEeNzZZCS/eXOhP36s/vfKWVugGR9b+D4eM9Lf+KO53vuDkg4HKAsl9z+LavG1uG 9L7K0lcSmyAmq4GodnggyB42P5tZcqJn0HMz0VYzhVIvL2xwFsrFcPgdoobD0bJJ67Me5vkvf5f HI/58rk= X-Received: by 2002:a53:d015:0:b0:641:f5bc:6945 with SMTP id 956f58d0204a3-64c21b6fb77mr13866642d50.73.1771576713754; Fri, 20 Feb 2026 00:38:33 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Fri, 20 Feb 2026 14:08:21 +0530 X-Gm-Features: AaiRm50ZtLzFThH15kV5lV8xb14NdodLkWcUi4DqDjwIhJlohvvrNEz0da3MXM0 Message-ID: Subject: Re: Skipping schema changes in publication To: Amit Kapila Cc: Shlok Kyal , shveta malik , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b7e8f5064b3d589e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b7e8f5064b3d589e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 19 Feb 2026 at 16:06, Amit Kapila wrote: > > On Thu, Feb 19, 2026 at 10:13=E2=80=AFAM Shlok Kyal wrote: > > > > Thanks for reviewing the patch. I have addressed the remaining > > comments in the v46 patch.. > > > > Can we think of some ideas to split this patch? One possibility is > that in the first patch we give an ERROR, if a non-root partitioned > table is present in EXCEPT Clause. I see that a lot of code is written > to handle partitions in EXCEPT clause. I feel such a split will make > code easier to review and validate. Split it accordingly. > Few other comments: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > 1. > if (stmt->for_all_tables) > { > + /* Process EXCEPT table list */ > + if (relations !=3D NIL) > + { > + Assert(rels !=3D NIL); > + PublicationAddTables(puboid, rels, true, NULL); > + } > + > /* > * Invalidate relcache so that publication info is rebuilt. Sequences > * publication doesn't require invalidation, as replica identity > CacheInvalidateRelcacheAll(); > > Here, the relations listed in the except table list will be > invalidated twice, once inside > PublicationAddTables->publication_add_relation, and second time via > CacheInvalidateRelcacheAll. Can we avoid that by adding a parameter to > PublicationAddTables? Fixed this > 2. > - root_relids =3D GetPublicationRelations(pubform->oid, > - PUBLICATION_PART_ROOT); > + root_relids =3D GetIncludedRelationsByPub(pubform->oid, > + PUBLICATION_PART_ROOT); > > To follow the previous function naming pattern, can we rename > GetIncludedRelationsByPub to GetIncludedPublicationRelations? If we > agree to this then rename the excluded version of the function as > well. Modified > 3. > +/* > + * Return the list of relation Oids for a publication. > + * > + * For a FOR TABLE publication, this returns the list of relations expli= citly > + * included in the publication. > + * > + * Publications declared with FOR ALL TABLES/SEQUENCES should use > + * GetAllPublicationRelations() to obtain the complete set of tables/seq= uences > + * covered by the publication. > + */ > +List * > +GetIncludedRelationsByPub(Oid pubid, PublicationPartOpt pub_partopt) > > This is equivalent to the existing function GetPublicationRelations() > which has more precise comments atop. We can use the same comments > unless there is any functionality difference. Updated it > 4. > --- a/src/backend/catalog/pg_publication.c > +++ b/src/backend/catalog/pg_publication.c > @@ -29,6 +29,7 @@ > #include "catalog/pg_publication.h" > #include "catalog/pg_publication_namespace.h" > #include "catalog/pg_publication_rel.h" > +#include "catalog/pg_subscription.h" > > It appears odd to include pg_subscription.h in the publication code. > Is there a reason for the same? If not then avoid it. This was required because we now started using GetPublicationsStr. I have moved GetPublicationsStr to logical.c from pg_subscription which is common to both pub and sub. > Apart from above, a few cosmetic changes are attached. Merged them. The attached v47 version patch has the changes for the same. Regards, Vignesh --000000000000b7e8f5064b3d589e Content-Type: application/octet-stream; name="v47-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v47-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlun0w9b0 RnJvbSBkMjE5MzJhNTc2NmYzYzdmOGU1MzMxMmQyN2U1YTI5ZmE3ZjU1MTRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0NyAxLzJd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKT25seSByb290IHBhcnRpdGlvbmVkIHRhYmxlcyBjYW4gYmUgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLgpTcGVjaWZ5aW5nIGEgcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZSBleGNsdWRlcyBhbGwgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8KdGhhdCBwYXJ0aXRpb24g aGllcmFyY2h5IGZyb20gcHVibGljYXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwgICAgICAgICB8ICAgNiArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICAgIHwgIDYxICsrKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jICAgICAgICAgIHwgMTk3ICsrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAzMSAtLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMgICAgICAgIHwgIDUzICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8IDExMSArKysrKysrCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0MSArKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8ICAzMSArKwogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICA0NyArKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAyMSArLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDY4ICsrKysrCiBzcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDMwICsrCiBzcmMvYmluL3BzcWwvZGVzY3Jp YmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgODcgKysrKystCiBzcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAxOCArLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWwuaCAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dCAgICAgfCAxMjEgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8ICA1OSArKystCiBzcmMvdGVzdC9zdWJzY3JpcHRp b24vbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3QvMDM3X3JlcF9jaGFuZ2Vz X2V4Y2VwdF90YWJsZS5wbCAgICAgICAgIHwgMjc2ICsrKysrKysrKysrKysrKysrKwogMjggZmls ZXMgY2hhbmdlZCwgMTE1OSBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2Vw dF90YWJsZS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMzMyMTkzNTY1ZTIuLjYwMGZlZDlmNGMwIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbApAQCAtNjU3Miw2ICs2NTcyLDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxh Y2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxl PiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICA8c3RydWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1 ZSBpZiB0aGUgdGFibGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQorICAg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2Vw dC10YWJsZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4uCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CiAgICAgICA8c3RydWN0ZmllbGQ+cHJxdWFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbm9kZV90 cmVlPC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggNTAyOGZl OWFmMDkuLmJjYjQ3M2MwNzhiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwK QEAgLTExNiw3ICsxMTYsMTEgQEAKICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9s aXRlcmFsPiwgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LAogICAgb3IgPGxpdGVy YWw+Rk9SIEFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBVbmxpa2UgdGFibGVzLCBzZXF1ZW5jZXMg Y2FuIGJlCiAgICBzeW5jaHJvbml6ZWQgYXQgYW55IHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9u LCBzZWUKLSAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+ LgorICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdo ZW4gYSBwdWJsaWNhdGlvbiBpcworICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFC TEVTPC9saXRlcmFsPiwgYSB0YWJsZSBvciBzZXQgb2YgdGFibGVzIGNhbgorICAgYmUgZXhwbGlj aXRseSBleGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uIHVzaW5nIHRoZQorICAgPGxpbmsgbGlua2Vu ZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJh bD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC9saW5rPgorICAgY2xhdXNlLgogICA8L3BhcmE+CiAK ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlv bi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCA2 ZWZiYjkxNWNlYy4uZjdjZjcyMzcwNjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGlj YXRpb24uc2dtbApAQCAtMzIsMTIgKzMyLDE2IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+YW5k IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0PC9y ZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCi0gICAgQUxMIFRBQkxFUworICAgIEFM TCBUQUJMRVMgWyBFWENFUFQgWyBUQUJMRSBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAgICBB TEwgU0VRVUVOQ0VTCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgWyBP TkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXQorCis8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQogPC9zeW5vcHNpcz4KICA8 L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xNjQsNyArMTY4LDggQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8 bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9u ZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgotICAgICAgdGhlIGRh dGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgIHRo ZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuIFRhYmxl cyBsaXN0ZWQgaW4KKyAgICAgIEVYQ0VQVCBUQUJMRSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVi bGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50 cnk+CkBAIC0xODQsNiArMTg5LDQxIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGlj YXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQ VCBUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVk IGZyb20gdGhlCisgICAgICBwdWJsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4K KyAgICAgIEZvciBpbmhlcml0ZWQgdGFibGVzLCBpZiA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBp cyBzcGVjaWZpZWQgYmVmb3JlIHRoZQorICAgICAgdGFibGUgbmFtZSwgb25seSB0aGF0IHRhYmxl IGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBJZgorICAgICAgPGxpdGVyYWw+T05M WTwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmllZCwgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2Nl bmRhbnQKKyAgICAgIHRhYmxlcyAoaWYgYW55KSBhcmUgZXhjbHVkZWQuIE9wdGlvbmFsbHksIDxs aXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZQorICAgICAgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJs ZSBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50CisgICAgICB0YWJs ZXMgYXJlIGV4Y2x1ZGVkLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgRm9yIHBh cnRpdGlvbmVkIHRhYmxlcywgb25seSB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBtYXkgYmUg c3BlY2lmaWVkCisgICAgICBpbiA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+LiBEb2lu ZyBzbyBleGNsdWRlcyB0aGUgcm9vdCB0YWJsZSBhbmQKKyAgICAgIGFsbCBvZiBpdHMgcGFydGl0 aW9ucyBmcm9tIHJlcGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgorICAgICAg PGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+LiBUaGUgb3B0aW9u YWwKKyAgICAgIDxsaXRlcmFsPio8L2xpdGVyYWw+IGhhcyBubyBlZmZlY3QgZm9yIHBhcnRpdGlv bmVkIHRhYmxlcy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFRoZXJlIGNhbiBi ZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRpb24gaW5jbHVkZXMgbXVsdGlwbGUgcHVibGljYXRp b25zLgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUgb3IgcGFydGl0aW9uIHRoYXQgaXMg aW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9uCisgICAgICBhbmQgbGlzdGVkIGluIHRoZSA8bGl0 ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGNsYXVzZSBvZiBhbm90aGVyIGlzCisgICAgICBj b25zaWRlcmVkIGluY2x1ZGVkIGZvciByZXBsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorICAgICA8 cGFyYT4KKyAgICAgIFN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aXRoIGRp ZmZlcmVudAorICAgICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPiBsaXN0cyBpcyBj dXJyZW50bHkgbm90IHN1cHBvcnRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1Ymxp Y2F0aW9uLXBhcmFtcy13aXRoIj4KICAgICA8dGVybT48bGl0ZXJhbD5XSVRIICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+ IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBb LCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC00ODksNiArNTI5 LDIzIEBAIENSRUFURSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzIEZPUiBBTEwgU0VRVUVOQ0VT OwogICAgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uOgogPHByb2dyYW1saXN0aW5n PgogQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfc2VxdWVuY2VzIEZPUiBBTEwgVEFCTEVT LCBBTEwgU0VRVUVOQ0VTOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgaW4g YWxsIHRhYmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQg PHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgor Q1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1 ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiwgYW5kCisgICBhbGwgY2hhbmdlcyBpbiBhbGwgdGFi bGVzIGV4Y2VwdCA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0 bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUg UFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VT LCBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKIDwvcHJvZ3JhbWxpc3Rp bmc+CiAgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDhi MWQ5NDhiYTA1Li4xMDQ1YmM2YTAyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMjEwMyw4 ICsyMTAzLDkgQEAgU0VMRUNUICQxIFxwYXJzZSBzdG10MQogICAgICAgICBsaXN0ZWQuCiAgICAg ICAgIElmIDxsaXRlcmFsPng8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5h bWUsIHRoZSByZXN1bHRzCiAgICAgICAgIGFyZSBkaXNwbGF5ZWQgaW4gZXhwYW5kZWQgbW9kZS4K LSAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1h bmQgbmFtZSwgdGhlIHRhYmxlcyBhbmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGgg ZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+ KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywK KyAgICAgICAgZXhjbHVkZWQgdGFibGVzLCBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFj aCBwdWJsaWNhdGlvbiBhcmUgc2hvd24KKyAgICAgICAgYXMgd2VsbC4KICAgICAgICAgPC9wYXJh PgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggOWE0NzkxYzU3M2UuLmUzYTY4ZmZiNmJiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwu aCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKQEAgLTM2Niw5ICszNjcsMTEgQEAgR2V0VG9w TW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGlu dCAqYW5jZXN0b3JfbGV2ZWwKIAlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCiAJewogCQlPaWQJCQlh bmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwotCQlMaXN0CSAgICphcHViaWRzID0gR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpOworCQlMaXN0CSAgICphcHViaWRzID0gTklMOwogCQlM aXN0CSAgICphc2NoZW1hUHViaWRzID0gTklMOwogCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25z KGFuY2VzdG9yLCAmYXB1YmlkcywgTlVMTCk7CisKIAkJbGV2ZWwrKzsKIAogCQlpZiAobGlzdF9t ZW1iZXJfb2lkKGFwdWJpZHMsIHB1Ym9pZCkpCkBAIC00NjYsNiArNDY5LDExIEBAIHB1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0K IAorCWlmIChwdWItPmFsbHRhYmxlcyAmJiBwcmktPmV4Y2VwdCAmJiB0YXJnZXRyZWwtPnJkX3Jl bC0+cmVsaXNwYXJ0aXRpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJybXNnKCJwYXJ0aXRp b24gXCIlc1wiIGNhbm5vdCBiZSBleGNsdWRlZCB1c2luZyBFWENFUFQgVEFCTEUiLAorCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSk7CisKIAljaGVja19wdWJsaWNh dGlvbl9hZGRfcmVsYXRpb24odGFyZ2V0cmVsKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFuc2xh dGUgY29sdW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KQEAgLTQ4Miw2 ICs0OTAsOCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlv blJlbEluZm8gKnByaSwKIAkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJdmFsdWVzW0FudW1f cGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQgLSAxXSA9CiAJCU9iamVjdElkR2V0RGF0dW0ocmVs aWQpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCAtIDFdID0KKwkJ Qm9vbEdldERhdHVtKHByaS0+ZXhjZXB0KTsKIAogCS8qIEFkZCBxdWFsaWZpY2F0aW9ucywgaWYg YXZhaWxhYmxlICovCiAJaWYgKHByaS0+d2hlcmVDbGF1c2UgIT0gTlVMTCkKQEAgLTUzMCwxNyAr NTQwLDI1IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9u UmVsSW5mbyAqcHJpLAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkv KgotCSAqIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJl YnVpbHQuCi0JICoKLQkgKiBGb3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVzdCBpbnZh bGlkYXRlIGFsbCBwYXJ0aXRpb25zIGNvbnRhaW5lZAotCSAqIGluIHRoZSByZXNwZWN0aXZlIHBh cnRpdGlvbiBoaWVyYXJjaGllcywgbm90IGp1c3QgdGhlIG9uZSBleHBsaWNpdGx5Ci0JICogbWVu dGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGlt cGxpY2l0bHkKLQkgKiBwdWJsaXNoIHRoZSBjaGlsZCB0YWJsZXMgd2hlbiB0aGUgcGFyZW50IHRh YmxlIGlzIHB1Ymxpc2hlZC4KKwkgKiBObyBuZWVkIHRvIGludmFsaWRhdGUgdGhlIHRhYmxlcyBs aXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGJlY2F1c2UKKwkgKiBpbiB0aGF0IGNhc2UgYWxs IHRhYmxlcyBhcmUgaW52YWxpZGF0ZWQgYW55d2F5LgogCSAqLwotCXJlbGlkcyA9IEdldFB1YlBh cnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZWxpZHMsIFBVQkxJQ0FUSU9OX1BBUlRfQUxMLAotCQkJ CQkJCQkJCQlyZWxpZCk7CisJaWYgKCFwcmktPmV4Y2VwdCkKKwl7CisJCS8qCisJCSAqIEludmFs aWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuCisJCSAq CisJCSAqIEZvciB0aGUgcGFydGl0aW9uZWQgdGFibGVzLCB3ZSBtdXN0IGludmFsaWRhdGUgYWxs IHBhcnRpdGlvbnMKKwkJICogY29udGFpbmVkIGluIHRoZSByZXNwZWN0aXZlIHBhcnRpdGlvbiBo aWVyYXJjaGllcywgbm90IGp1c3QgdGhlIG9uZQorCQkgKiBleHBsaWNpdGx5IG1lbnRpb25lZCBp biB0aGUgcHVibGljYXRpb24uIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZQorCQkgKiB3ZSBpbXBs aWNpdGx5IHB1Ymxpc2ggdGhlIGNoaWxkIHRhYmxlcyB3aGVuIHRoZSBwYXJlbnQgdGFibGUgaXMK KwkJICogcHVibGlzaGVkLgorCQkgKi8KKwkJcmVsaWRzID0gR2V0UHViUGFydGl0aW9uT3B0aW9u UmVsYXRpb25zKHJlbGlkcywgUFVCTElDQVRJT05fUEFSVF9BTEwsCisJCQkJCQkJCQkJCQlyZWxp ZCk7CiAKLQlJbnZhbGlkYXRlUHVibGljYXRpb25SZWxzKHJlbGlkcyk7CisJCUludmFsaWRhdGVQ dWJsaWNhdGlvblJlbHMocmVsaWRzKTsKKwl9CiAKIAlyZXR1cm4gbXlzZWxmOwogfQpAQCAtNzQ5 LDM4ICs3NjcsNTQgQEAgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hl bWFpZCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogCXJldHVybiBteXNlbGY7CiB9CiAKLS8qIEdldHMg bGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uICovCi1MaXN0ICoKLUdldFJl bGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKKy8qCisgKiBHZXQgdGhlIGxpc3Qgb2YgcHVi bGljYXRpb24gb2lkcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpZWQgcmVsYXRpb24uCisgKgor ICogJ3B1YmlkcycgcmV0dXJucyB0aGUgT2lkcyBvZiB0aGUgcHVibGljYXRpb25zIHRoZSByZWxh dGlvbiBpcyBwYXJ0IG9mLgorICoKKyAqICdleGNlcHRfcHViaWRzJyByZXR1cm5zIHRoZSBPaWRz IG9mIHB1YmxpY2F0aW9ucyB0aGUgcmVsYXRpb24gaXMgZXhjbHVkZWQKKyAqIGZyb20uCisgKgor ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHJlbGF0aW9uIGlzIHBhcnQgb2Yg YW55IHB1YmxpY2F0aW9uLgorICovCitib29sCitHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQg cmVsaWQsIExpc3QgKipwdWJpZHMsIExpc3QgKipleGNlcHRfcHViaWRzKQogewotCUxpc3QJICAg KnJlc3VsdCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJyZWxsaXN0OwotCWludAkJCWk7CisJYm9v bAkJZm91bmQgPSBmYWxzZTsKIAogCS8qIEZpbmQgYWxsIHB1YmxpY2F0aW9ucyBhc3NvY2lhdGVk IHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1YnJlbGxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3Qx KFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsK LQlmb3IgKGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1iZXJzOyBpKyspCisJZm9yIChpbnQg aSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21lbWJlcnM7IGkrKykKIAl7CiAJCUhlYXBUdXBsZQl0 dXAgPSAmcHVicmVsbGlzdC0+bWVtYmVyc1tpXS0+dHVwbGU7Ci0JCU9pZAkJCXB1YmlkID0gKChG b3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcnB1YmlkOworCQlGb3Jt X3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdF VFNUUlVDVCh0dXApOworCQlPaWQJCQlwdWJpZCA9IHB1YnJlbC0+cHJwdWJpZDsKKwkJTGlzdAkg ICoqdGFyZ2V0X2xpc3QgPSBwdWJyZWwtPnByZXhjZXB0ID8gZXhjZXB0X3B1YmlkcyA6IHB1Ymlk czsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKKwkJaWYgKHRhcmdl dF9saXN0KQorCQkJKnRhcmdldF9saXN0ID0gbGFwcGVuZF9vaWQoKnRhcmdldF9saXN0LCBwdWJp ZCk7CisKKwkJaWYgKCFwdWJyZWwtPnByZXhjZXB0KQorCQkJZm91bmQgPSB0cnVlOwogCX0KIAog CVJlbGVhc2VTeXNDYWNoZUxpc3QocHVicmVsbGlzdCk7CiAKLQlyZXR1cm4gcmVzdWx0OworCXJl dHVybiBmb3VuZDsKIH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIGZvciBh IHB1YmxpY2F0aW9uLgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2V0IHRoZSBsaXN0IG9mIHJl bGF0aW9uIE9pZHMgZm9yIGEgcHVibGljYXRpb24uCiAgKgotICogVGhpcyBzaG91bGQgb25seSBi ZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5D RVMKLSAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqIElmIGV4 Y2VwdF9mbGFnIGlzIHRydWUsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIHNwZWNpZmll ZCBpbiB0aGUKKyAqIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlIHB1YmxpY2F0aW9uOyBvdGhlcndpc2Us IHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zCisgKiBpbmNsdWRlZCBpbiB0aGUgcHVibGlj YXRpb24uCiAgKi8KLUxpc3QgKgotR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCitzdGF0aWMgTGlzdCAqCitnZXRfcHVibGlj YXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 LAorCQkJCQkJICBib29sIGV4Y2VwdF9mbGFnKQogewogCUxpc3QJICAgKnJlc3VsdDsKIAlSZWxh dGlvbglwdWJyZWxzcmVsOwpAQCAtODA1LDggKzgzOSwxMCBAQCBHZXRQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAkJRm9ybV9w Z19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOwogCiAJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0 aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7Ci0JCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlv blJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAotCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJl bGlkKTsKKworCQlpZiAoZXhjZXB0X2ZsYWcgPT0gcHVicmVsLT5wcmV4Y2VwdCkKKwkJCXJlc3Vs dCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAor CQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CiAJfQogCiAJc3lzdGFibGVfZW5kc2Nhbihz Y2FuKTsKQEAgLTgxOSw2ICs4NTUsMzUgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1 YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmV0dXJuIHJlc3VsdDsKIH0K IAorLyoKKyAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIHRoYXQgYXJlIGFzc29jaWF0ZWQg d2l0aCBhIHB1YmxpY2F0aW9uLgorICoKKyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1Ig VEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCisgKiBzaG91 bGQgdXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKi8KK0xpc3QgKgorR2V0SW5j bHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoIUdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVz KTsKKworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9w dCwgZmFsc2UpOworfQorCisvKgorICogR2V0cyBsaXN0IG9mIHRhYmxlIG9pZHMgdGhhdCB3ZXJl IHNwZWNpZmllZCBpbiB0aGUgZXhjZXB0IGNsYXVzZSBmb3IgYQorICogcHVibGljYXRpb24uCisg KgorICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRo ZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKKyAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGljYXRp b25SZWxhdGlvbnMoKS4KKyAqLworTGlzdCAqCitHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVz KE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQoreworCUFzc2VydChH ZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisKKwlyZXR1cm4gZ2V0X3B1YmxpY2F0 aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUpOworfQorCiAvKgogICogR2V0 cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIHB1YmxpY2F0aW9ucyBtYXJrZWQgYXMgRk9S IEFMTCBUQUJMRVMuCiAgKi8KQEAgLTg1OCwyNCArOTIzLDM1IEBAIEdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9ucyh2b2lkKQogCiAvKgogICogR2V0cyBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVibGlz aGVkIGJ5IEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUwotICogcHVibGljYXRpb24ocykuCisgKiBw dWJsaWNhdGlvbi4KICAqCiAgKiBJZiB0aGUgcHVibGljYXRpb24gcHVibGlzaGVzIHBhcnRpdGlv biBjaGFuZ2VzIHZpYSB0aGVpciByZXNwZWN0aXZlIHJvb3QKICAqIHBhcnRpdGlvbmVkIHRhYmxl cywgd2UgbXVzdCBleGNsdWRlIHBhcnRpdGlvbnMgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIHRoZQog ICogcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8gRk9S IEFMTCBTRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgorICoKKyAqIEZvciBhIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMgbWVudGlv bmVkCisgKiBpbiBFWENFUFQgVEFCTEUgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQorR2V0QWxsUHVi bGljYXRpb25SZWxhdGlvbnMoUHVibGljYXRpb24gKnB1YiwgY2hhciByZWxraW5kKQogewogCVJl bGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNjIHNj YW47CiAJSGVhcFR1cGxlCXR1cGxlOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0CSAg ICpleGNlcHRsaXN0ID0gTklMOworCWJvb2wJCXB1YnZpYXJvb3QgPSBwdWItPnB1YnZpYXJvb3Q7 CisJT2lkCQkJcHViaWQgPSBwdWItPm9pZDsKIAogCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lO RF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CiAKKwlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JF TEFUSU9OKQorCQlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJp ZCwgcHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJ CQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisKIAljbGFzc1JlbCA9IHRhYmxl X29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCiAJU2NhbktleUlu aXQoJmtleVswXSwKQEAgLTg5MSw3ICs5NjcsOCBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9u cyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAkJT2lkCQkJcmVsaWQgPSByZWxGb3Jt LT5vaWQ7CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgot CQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSkKKwkJCSEocmVsRm9y bS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKKwkJCSFsaXN0X21lbWJlcl9vaWQo ZXhjZXB0bGlzdCwgcmVsaWQpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxp ZCk7CiAJfQogCkBAIC05MTIsNyArOTg5LDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo Y2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0t Pm9pZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgot CQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRp b24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCQlyZXN1 bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTE2LDYgKzExOTQs NTEgQEAgR2V0UHVibGljYXRpb25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNz aW5nX29rKQogCXJldHVybiBPaWRJc1ZhbGlkKG9pZCkgPyBHZXRQdWJsaWNhdGlvbihvaWQpIDog TlVMTDsKIH0KIAorLyoKKyAqIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0X3RhYmxlCisgKgor ICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBPSUQgaGFzIGF0IGxlYXN0 IG9uZSBlbnRyeSBpbgorICogcGdfcHVibGljYXRpb25fcmVsIG1hcmtlZCBhcyBhbiBleGNlcHRp b24gKHByZXhjZXB0ID0gdHJ1ZSkuCisgKi8KK2Jvb2wKK3B1YmxpY2F0aW9uX2hhc19hbnlfZXhj ZXB0X3RhYmxlKE9pZCBwdWJpZCkKK3sKKwlSZWxhdGlvbglwdWJyZWxzcmVsOworCVNjYW5LZXlE YXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJ CWZvdW5kID0gZmFsc2U7CisKKwlwdWJyZWxzcmVsID0gdGFibGVfb3BlbihQdWJsaWNhdGlvblJl bFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2NhbmtleSwK KwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnB1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisKKwlzY2Fu ID0gc3lzdGFibGVfYmVnaW5zY2FuKHB1YnJlbHNyZWwsCisJCQkJCQkJICBQdWJsaWNhdGlvblJl bFBycHViaWRJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJnNjYW5rZXkpOworCisJ LyogV2Ugb25seSBuZWVkIHRvIGZpbmQgYW55IG9jY3VycmVuY2Ugb2YgcHJleGNlcHQgPSB0cnVl ICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2Fu KSkpCisJeworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CisKKwkJcHVicmVsID0g KEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJaWYgKHB1YnJlbC0+ cHJleGNlcHQpCisJCXsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJ c3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShwdWJyZWxzcmVsLCBBY2Nlc3NT aGFyZUxvY2spOworCisJcmV0dXJuIGZvdW5kOworfQorCiAvKgogICogR2V0IGluZm9ybWF0aW9u IG9mIHRoZSB0YWJsZXMgaW4gdGhlIGdpdmVuIHB1YmxpY2F0aW9uIGFycmF5LgogICoKQEAgLTEx NjgsMTcgKzEyOTEsMTcgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9B UkdTKQogCQkJICogdGhvc2UuIE90aGVyd2lzZSwgZ2V0IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBp dHNlbGYuCiAJCQkgKi8KIAkJCWlmIChwdWJfZWxlbS0+YWxsdGFibGVzKQotCQkJCXB1Yl9lbGVt X3RhYmxlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFJFTEtJTkRfUkVMQVRJT04sCi0J CQkJCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJvb3QpOworCQkJCXB1Yl9lbGVtX3RhYmxl cyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLAorCQkJCQkJCQkJCQkJCQkJ IFJFTEtJTkRfUkVMQVRJT04pOwogCQkJZWxzZQogCQkJewogCQkJCUxpc3QJICAgKnJlbGlkcywK IAkJCQkJCSAgICpzY2hlbWFyZWxpZHM7CiAKLQkJCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJl bGF0aW9ucyhwdWJfZWxlbS0+b2lkLAotCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290 ID8KLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBV QkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZp YXJvb3QgPworCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CiAJCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxs U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKIAkJCQkJCQkJCQkJCQkJ CQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFS VF9ST09UIDoKQEAgLTEzNjcsNyArMTQ5MCw3IEBAIHBnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5j ZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJcHVibGljYXRpb24gPSBHZXRQdWJsaWNhdGlvbkJ5TmFt ZShwdWJuYW1lLCBmYWxzZSk7CiAKIAkJaWYgKHB1YmxpY2F0aW9uLT5hbGxzZXF1ZW5jZXMpCi0J CQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5EX1NFUVVFTkNF LCBmYWxzZSk7CisJCQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJs aWNhdGlvbiwgUkVMS0lORF9TRVFVRU5DRSk7CiAKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gc2Vx dWVuY2VzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCAyYjEwMzI0 NTI5MC4uZmU0NjhkNjFmYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpA QCAtMzQsMzcgKzM0LDYgQEAKIAogc3RhdGljIExpc3QgKnRleHRhcnJheV90b19zdHJpbmdsaXN0 KEFycmF5VHlwZSAqdGV4dGFycmF5KTsKIAotLyoKLSAqIEFkZCBhIGNvbW1hLXNlcGFyYXRlZCBs aXN0IG9mIHB1YmxpY2F0aW9uIG5hbWVzIHRvIHRoZSAnZGVzdCcgc3RyaW5nLgotICovCi12b2lk Ci1HZXRQdWJsaWNhdGlvbnNTdHIoTGlzdCAqcHVibGljYXRpb25zLCBTdHJpbmdJbmZvIGRlc3Qs IGJvb2wgcXVvdGVfbGl0ZXJhbCkKLXsKLQlMaXN0Q2VsbCAgICpsYzsKLQlib29sCQlmaXJzdCA9 IHRydWU7Ci0KLQlBc3NlcnQocHVibGljYXRpb25zICE9IE5JTCk7Ci0KLQlmb3JlYWNoKGxjLCBw dWJsaWNhdGlvbnMpCi0JewotCQljaGFyCSAgICpwdWJuYW1lID0gc3RyVmFsKGxmaXJzdChsYykp OwotCi0JCWlmIChmaXJzdCkKLQkJCWZpcnN0ID0gZmFsc2U7Ci0JCWVsc2UKLQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoZGVzdCwgIiwgIik7Ci0KLQkJaWYgKHF1b3RlX2xpdGVyYWwpCi0JCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsIHF1b3RlX2xpdGVyYWxfY3N0cihwdWJuYW1lKSk7 Ci0JCWVsc2UKLQkJewotCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZGVzdCwgJyInKTsKLQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoZGVzdCwgcHVibmFtZSk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihkZXN0LCAnIicpOwotCQl9Ci0JfQotfQotCiAvKgogICogRmV0Y2ggdGhlIHN1YnNjcmlw dGlvbiBmcm9tIHRoZSBzeXNjYWNoZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuYwppbmRleCBmYzNhNGMxOWU2NS4uNDA3NzJjNjdkNzUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xOTgsNyArMTk4LDEyIEBAIE9iamVjdHNJblB1Ymxp Y2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAog CiAJCXN3aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CisJCQljYXNlIFBVQkxJQ0FUSU9O T0JKX0VYQ0VQVF9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwor CQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJYnJlYWs7 CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4 Y2VwdCA9IGZhbHNlOwogCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJs ZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6 CkBAIC01MTksOCArNTI0LDggQEAgSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShPaWQgcHViaWQs IGJvb2wgcHViYWxsdGFibGVzKQogCQkgKiBhIHRhcmdldC4gSG93ZXZlciwgV0FMIHJlY29yZHMg Zm9yIFRSVU5DQVRFIHNwZWNpZnkgYm90aCBhIHJvb3QgYW5kCiAJCSAqIGl0cyBsZWF2ZXMuCiAJ CSAqLwotCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJ CQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQlyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsK IAkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQs CiAJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIApAQCAtODQ1LDYgKzg1MCw3 IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRp b25TdG10ICpzdG10KQogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJTGlzdAkgICAqcmVsYXRpb25z ID0gTklMOwogCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKKwlMaXN0CSAgICpyZWxzID0g TklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2UgKi8KIAlh Y2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRGF0YWJhc2VSZWxhdGlvbklkLCBNeURhdGFiYXNl SWQsIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKQEAgLTkyOSw4ICs5MzUsMjMgQEAgQ3JlYXRl UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0 bXQpCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8qIEFzc29jaWF0ZSBvYmplY3Rz IHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLworCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0 bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKKwkJCQkJCQkgICAmc2NoZW1haWRs aXN0KTsKKwlpZiAocmVsYXRpb25zICE9IE5JTCkKKwl7CisJCUFzc2VydCghc3RtdC0+Zm9yX2Fs bF9zZXF1ZW5jZXMpOworCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOworCX0KKwog CWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKIAl7CisJCS8qIFByb2Nlc3MgRVhDRVBUIHRhYmxl IGxpc3QgKi8KKwkJaWYgKHJlbGF0aW9ucyAhPSBOSUwpCisJCXsKKwkJCUFzc2VydChyZWxzICE9 IE5JTCk7CisJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwp OworCQl9CisKIAkJLyoKIAkJICogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0 aW9uIGluZm8gaXMgcmVidWlsdC4gU2VxdWVuY2VzCiAJCSAqIHB1YmxpY2F0aW9uIGRvZXNuJ3Qg cmVxdWlyZSBpbnZhbGlkYXRpb24sIGFzIHJlcGxpY2EgaWRlbnRpdHkKQEAgLTk0MCw5ICs5NjEs NiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAl9CiAJZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQog CXsKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRl LCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKLQogCQkvKiBGT1IgVEFC TEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KIAkJaWYgKHNjaGVtYWlkbGlzdCAh PSBOSUwgJiYgIXN1cGVydXNlcigpKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTk1MSw5ICs5Njks NiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAogCQlpZiAocmVsYXRpb25zICE9IE5JTCkKIAkJewotCQkJTGlzdAkg ICAqcmVsczsKLQotCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKIAkJCVRyYW5z Zm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJ CSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTk2Miw3ICs5NzcsNiBAQCBDcmVh dGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAq c3RtdCkKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAogCQkJUHVi bGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFi bGVMaXN0KHJlbHMpOwogCQl9CiAKIAkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwpCkBAIC05NzYs NiArOTkwLDkgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCX0KIAl9CiAKKwlpZiAocmVscyAhPSBOSUwpCisJCUNs b3NlVGFibGVMaXN0KHJlbHMpOworCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIAogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25JZCwg cHVib2lkLCAwKTsKQEAgLTEwNTAsOCArMTA2Nyw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxvY2tE YXRhYmFzZU9iamVjdChQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1YmZvcm0tPm9pZCwgMCwKIAkJ CQkJCSAgIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQkJcm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9S T09UKTsKKwkJcm9vdF9yZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJ Zm9yZWFjaChsYywgcm9vdF9yZWxpZHMpCiAJCXsKQEAgLTExNzAsOCArMTE4Nyw4IEBAIEFsdGVy UHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0 bXQgKnN0bXQsCiAJCSAqIHRyZWVzLCBub3QganVzdCB0aG9zZSBleHBsaWNpdGx5IG1lbnRpb25l ZCBpbiB0aGUgcHVibGljYXRpb24uCiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQot CQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJ CQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQkJcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfQUxMKTsKIAkJZWxzZQogCQl7CiAJCQkvKgpAQCAtMTI1Niw4ICsxMjczLDggQEAgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxl IHR1cCwKIAkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxz ZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9Q QVJUX1JPT1QpOworCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9u UmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7 CiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwogCkBAIC0x MzU4LDYgKzEzNzUsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCW9sZHJlbCA9IHBhbGxvY19vYmplY3QoUHVi bGljYXRpb25SZWxJbmZvKTsKIAkJCQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKIAkJCQlv bGRyZWwtPmNvbHVtbnMgPSBOSUw7CisJCQkJb2xkcmVsLT5leGNlcHQgPSBmYWxzZTsKIAkJCQlv bGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWxpZCwKIAkJCQkJCQkJCQkJICBTaGFy ZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9s ZHJlbCk7CkBAIC0xNDA4LDcgKzE0MjYsOCBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJTGlzdENlbGwgICAqbGM7CiAJCUxpc3QJICAgKnJl bG9pZHM7CiAKLQkJcmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9p ZCwgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJcmVsb2lkcyA9IEdldEluY2x1ZGVkUHVibGlj YXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9Q QVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJlbG9pZHMpCiAJCXsKQEAgLTE3NzEsNiArMTc5 MCw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9 IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJcHViX3Jl bC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsK IAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lk KHJlbGlkcywgbXlyZWxpZCk7CiAKQEAgLTE4NDMsNiArMTg2Myw3IEBAIE9wZW5UYWJsZUxpc3Qo TGlzdCAqdGFibGVzKQogCiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgY29sdW1uIGxpc3QgZnJvbSBw YXJlbnQgKi8KIAkJCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJCQlwdWJfcmVs LT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7 CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGlsZHJlbGlkKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDBiM2M4NDk5YjQ5Li5iMGE1M2Mx N2RkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMzcsNiAr MzcsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5j cy5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2lu LmgiCkBAIC01NDksNiArNTUwLDExMyBAQCBjaGVja19wdWJsaWNhdGlvbnMoV2FsUmVjZWl2ZXJD b25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKIAl9CiB9CiAKKy8qCisgKiBFUlJPUiBp ZiBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBFWENFUFQgY2xhdXNlcyBhcmUgcHJlc2VudC4K KyAqCisgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaWJpbmcg dG8gbW9yZSB0aGFuIG9uZQorICogcHVibGljYXRpb24gdGhhdCBkZWZpbmVzIGFuIGV4Y2x1c2lv biBsaXN0LiBBbGxvd2luZyB0aGlzIHdvdWxkCisgKiBjcmVhdGUgYW1iaWd1b3VzIGFuZCB1bnBy ZWRpY3RhYmxlIHJlcGxpY2F0aW9uIGJlaGF2aW9yLgorICoKKyAqIFRoZSBhbWJpZ3VpdHkgYXJp c2VzIHdoZW4gcHVibGljYXRpb25zIGRpZmZlciBpbiB0aGVpciBleGNsdXNpb25zCisgKiBhbmQg aW4gdGhlIHNldHRpbmcgb2YgJ3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290Jy4gSW4gc3VjaCBj YXNlcywKKyAqIHRoZSBlZmZlY3RpdmUgcHVibGljYXRpb24gc2V0IGNhbm5vdCBiZSBkZXRlcm1p bmVkIGNvbnNpc3RlbnRseToKKyAqCisgKiAgIC0gVGFibGVzIGV4Y2x1ZGVkIGluIG9uZSBwdWJs aWNhdGlvbiBtYXkgYmUgaW1wbGljaXRseSBpbmNsdWRlZAorICogICAgIGluIGFub3RoZXIuCisg KiAgIC0gQ29uZmxpY3RpbmcgJ3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290JyBzZXR0aW5ncyBh bHRlciBob3cKKyAqICAgICBwYXJ0aXRpb25zIGFyZSByZXByZXNlbnRlZCBhbmQgZGVkdXBsaWNh dGVkLgorICoKKyAqIFRvIGF2b2lkIHRoZXNlIGNvbmZsaWN0cywgYSBzdWJzY3JpcHRpb24gbWF5 IGluY2x1ZGUgYXQgbW9zdCBvbmUKKyAqICdGT1IgQUxMIFRBQkxFUycgcHVibGljYXRpb24gdGhh dCBzcGVjaWZpZXMgYW4gRVhDRVBUIGNsYXVzZS4KKyAqCisgKiBFeGFtcGxlOgorICoKKyAqICAg UGFydGl0aW9uZWQgdGFibGU6IHRhYl9yb290CisgKiAgIFBhcnRpdGlvbnM6IHBhcnQxLCBwYXJ0 MiwgcGFydDMKKyAqCisgKiAgIHB1YjE6CisgKiAgICAgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChw YXJ0MSwgcGFydDIpCisgKiAgICAgICBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9 IHRydWUpCisgKgorICogICBwdWIyOgorICogICAgIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAocGFy dDMpCisgKiAgICAgICBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKQor ICoKKyAqIFN1YnNjcmliaW5nIHRvIGJvdGggcHViMSBhbmQgcHViMiBpcyBpbnZhbGlkIGJlY2F1 c2U6CisgKiAgIC0gcHViMSBleGNsdWRlcyBwYXJ0MSBhbmQgcGFydDIsIHB1Ymxpc2hpbmcgcmVt YWluaW5nIHBhcnRpdGlvbnMKKyAqICAgICB2aWEgdGhlIHJvb3QuCisgKiAgIC0gcHViMiBleGNs dWRlcyBwYXJ0MywgcHVibGlzaGluZyBvdGhlciBwYXJ0aXRpb25zIGluZGl2aWR1YWxseS4KKyAq CisgKiBUaGUgcmVzdWx0aW5nIHB1YmxpY2F0aW9uIHNldCBpcyBhbWJpZ3VvdXMgYW5kIHByb3Zp ZGVzIG5vIGNsZWFyCisgKiBiZW5lZml0LiBVbmxlc3MgYWxsIHB1YmxpY2F0aW9ucyBleGNsdWRl IHRoZSBzYW1lIHRhYmxlcywgY29tYmluaW5nCisgKiB0aGVtIGludHJvZHVjZXMgY29tcGxleCBh bmQgY29uZmxpY3RpbmcgcGFydGl0aW9uIHJlc29sdXRpb24gcnVsZXMuCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19wdWJsaWNhdGlvbnNfZXhjZXB0X2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3cmNv bm4sIExpc3QgKnB1YmxpY2F0aW9ucykKK3sKKwlMaXN0CSAgICpleGNlcHRfcHVibGljYXRpb25z ID0gTklMOworCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlTdHJpbmdJbmZvRGF0YSBjbWQ7CisJ U3RyaW5nSW5mb0RhdGEgcHVibmFtZXM7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJT2lkCQkJ dGFibGVSb3dbMV0gPSB7VEVYVE9JRH07CisKKwlpZiAobGlzdF9sZW5ndGgocHVibGljYXRpb25z KSA8PSAxKQorCQlyZXR1cm47CisKKwlpbml0U3RyaW5nSW5mbygmY21kKTsKKwlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZjbWQsCisJCQkJCQkgICAiU0VMRUNUIHAucHVibmFtZVxuIgorCQkJCQkJ ICAgIiBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJICAgIiBXSEVS RSBwLnB1Ym5hbWUgSU4gKCIpOworCisJR2V0UHVibGljYXRpb25zU3RyKHB1YmxpY2F0aW9ucywg JmNtZCwgdHJ1ZSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsCisJCQkJCQkgICAi KVxuIgorCQkJCQkJICAgIiAgIEFORCBFWElTVFMgKFNFTEVDVCAxXG4iCisJCQkJCQkgICAiICAg ICAgICAgICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJ CQkJCQkgICAiICAgICAgICAgICAgICAgIFdIRVJFIHByLnBycHViaWQgPSBwLm9pZFxuIgorCQkJ CQkJICAgIiAgICAgICAgICAgICAgICAgIEFORCBwci5wcmV4Y2VwdCBJUyBUUlVFKSIpOworCisJ cmVzID0gd2FscmN2X2V4ZWMod3Jjb25uLCBjbWQuZGF0YSwgMSwgdGFibGVSb3cpOworCXBmcmVl KGNtZC5kYXRhKTsKKworCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycm1zZygiY291bGQgbm90IHJlY2VpdmUgbGlzdCBvZiBwdWJs aWNhdGlvbnMgZnJvbSB0aGUgcHVibGlzaGVyOiAlcyIsCisJCQkJCSAgIHJlcy0+ZXJyKSk7CisK KwlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3Bz TWluaW1hbFR1cGxlKTsKKwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBs ZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xvdCkpCisJeworCQljaGFyCSAgICpwdWJuYW1lOworCQli b29sCQlpc251bGw7CisKKwkJcHVibmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRh dHRyKHNsb3QsIDEsICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCWV4Y2VwdF9w dWJsaWNhdGlvbnMgPSBsYXBwZW5kKGV4Y2VwdF9wdWJsaWNhdGlvbnMsIG1ha2VTdHJpbmcocHVi bmFtZSkpOworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9CisKKwlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOworCisJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOworCisJaWYg KGxpc3RfbGVuZ3RoKGV4Y2VwdF9wdWJsaWNhdGlvbnMpIDw9IDEpCisJCXJldHVybjsKKworCWlu aXRTdHJpbmdJbmZvKCZwdWJuYW1lcyk7CisJR2V0UHVibGljYXRpb25zU3RyKGV4Y2VwdF9wdWJs aWNhdGlvbnMsICZwdWJuYW1lcywgZmFsc2UpOworCisJZXJlcG9ydChFUlJPUiwKKwkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3QgY29t YmluZSBwdWJsaWNhdGlvbnMgdGhhdCBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXMiKSwKKwkJ CWVycmRldGFpbCgiVGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnMgZGVmaW5lIEVYQ0VQVCBUQUJM RSBjbGF1c2VzOiAlcy4iLAorCQkJCQkgIHB1Ym5hbWVzLmRhdGEpKTsKK30KKwogLyoKICAqIEF1 eGlsaWFyeSBmdW5jdGlvbiB0byBidWlsZCBhIHRleHQgYXJyYXkgb3V0IG9mIGEgbGlzdCBvZiBT dHJpbmcgbm9kZXMuCiAgKi8KQEAgLTc5NSw2ICs5MDMsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJY2hh cgkJcmVsYXRpb25fc3RhdGU7CiAKIAkJCWNoZWNrX3B1YmxpY2F0aW9ucyh3cmNvbm4sIHB1Ymxp Y2F0aW9ucyk7CisJCQljaGVja19wdWJsaWNhdGlvbnNfZXhjZXB0X2xpc3Qod3Jjb25uLCBwdWJs aWNhdGlvbnMpOwogCQkJY2hlY2tfcHVibGljYXRpb25zX29yaWdpbl90YWJsZXMod3Jjb25uLCBw dWJsaWNhdGlvbnMsCiAJCQkJCQkJCQkJCSBvcHRzLmNvcHlfZGF0YSwKIAkJCQkJCQkJCQkJIG9w dHMucmV0YWluZGVhZHR1cGxlcywgb3B0cy5vcmlnaW4sCkBAIC05NTksNiArMTA2OCw4IEBAIEFs dGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJvb2wgY29weV9kYXRh LAogCQlpZiAodmFsaWRhdGVfcHVibGljYXRpb25zKQogCQkJY2hlY2tfcHVibGljYXRpb25zKHdy Y29ubiwgdmFsaWRhdGVfcHVibGljYXRpb25zKTsKIAorCQljaGVja19wdWJsaWNhdGlvbnNfZXhj ZXB0X2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucyk7CisKIAkJLyogR2V0IHRoZSByZWxh dGlvbiBsaXN0IGZyb20gcHVibGlzaGVyLiAqLwogCQlwdWJyZWxzID0gZmV0Y2hfcmVsYXRpb25f bGlzdCh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCAyZjViNzAwN2ZmOS4uNTgxZGE2YjdiMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCkBAIC04Njg4LDcgKzg2ODgsNyBAQCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCSAqIGV4cHJl c3Npb25zLgogCSAqLwogCWlmIChhdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9W SVJUVUFMICYmCi0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVs KSkgIT0gTklMKQorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJl bCksIE5VTEwsIE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJBTFRFUiBUQUJMRSAvIFNFVCBF WFBSRVNTSU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMg aW4gdGFibGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIpLApAQCAtMTg4ODQsNyAr MTg4ODQsNyBAQCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCkKIAkgKiBVTkxPR0dFRCwgYXMgVU5MT0dHRUQg dGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYmCi0JCUdl dFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQorCQlH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCksIE5VTEwsIE5VTEwp KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGUgXCIl c1wiIHRvIHVubG9nZ2VkIGJlY2F1c2UgaXQgaXMgcGFydCBvZiBhIHB1YmxpY2F0aW9uIiwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IGM1NjcyNTJhY2M0Li5kZTQzNzRlNzRkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0y MDMsNiArMjAzLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NBU2JpdHMoaW50IGNhc19iaXRzLCBp bnQgbG9jYXRpb24sIGNvbnN0IGNoYXIgKmNvbnN0clR5cGUsCiBzdGF0aWMgUGFydGl0aW9uU3Ry YXRlZ3kgcGFyc2VQYXJ0aXRpb25TdHJhdGVneShjaGFyICpzdHJhdGVneSwgaW50IGxvY2F0aW9u LAogCQkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHZvaWQgcHJl cHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAorCQkJ CQkJCQkJCQlMaXN0ICoqcHVib2JqZWN0cywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3RhYmxlcywK IAkJCQkJCQkJCQkJYm9vbCAqYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpOwpAQCAtNDU1LDYgKzQ1Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9y ZWxhdGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xp c3QgcHViX29ial9saXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAorCQkJCXB1Yl9leGNlcHRfb2Jq X2xpc3Qgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmlu Z19jbGF1c2UKICV0eXBlIDxub2RlPglyZXR1cm5pbmdfb3B0aW9uCkBAIC01OTIsNiArNTk0LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92 YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5 CiAldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBl IDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYwogJXR5cGUg PHB1YmxpY2F0aW9uYWxsb2JqZWN0c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBl IDxrZXl3b3JkPiB1bnJlc2VydmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAt MTA3OTIsNyArMTA3OTUsNyBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3Jl Z2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAgKgogICogcHViX2FsbF9vYmpf dHlwZSBpcyBvbmUgb2Y6CiAgKgotICoJCVRBQkxFUworICoJCVRBQkxFUyBbRVhDRVBUIFtUQUJM RV0gKCB0YWJsZSBbLCAuLi5dICldCiAgKgkJU0VRVUVOQ0VTCiAgKgogICogQ1JFQVRFIFBVQkxJ Q0FUSU9OIEZPUiBwdWJfb2JqIFssIC4uLl0gW1dJVEggb3B0aW9uc10KQEAgLTEwODE4LDcgKzEw ODIxLDggQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0 bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5h bWUgPSAkMzsKLQkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPmZv cl9hbGxfdGFibGVzLAorCQkJCQlwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAm bi0+cHVib2JqZWN0cywKKwkJCQkJCQkJCQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCiAJCQkJCQkJ CQkJCQkJJm4tPmZvcl9hbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CiAJ CQkJCW4tPm9wdGlvbnMgPSAkNjsKQEAgLTEwOTMzLDExICsxMDkzNywxOSBAQCBwdWJfb2JqX2xp c3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJ OwogCitvcHRfcHViX2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxlICcoJyBwdWJf ZXhjZXB0X29ial9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJ CXsgJCQgPSBOSUw7IH0KKwkJOworCiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxMIFRB QkxFUworCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJCQkJ CSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0 eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0g JDM7CisJCQkJCQlpZigkJC0+ZXhjZXB0X3RhYmxlcyAhPSBOVUxMKQorCQkJCQkJCXByZXByb2Nl c3NfcHVib2JqX2xpc3QoJCQtPmV4Y2VwdF90YWJsZXMsIHl5c2Nhbm5lcik7CiAJCQkJCQkkJC0+ bG9jYXRpb24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQsNiAr MTA5NjYsMjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMK IAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRpb25FeGNlcHRP YmpTcGVjOgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVi bGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9F WENFUFRfVEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFi bGUpOworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0YWJs ZS0+cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKwor cHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQg PSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJsaWNh dGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsKIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MTIsOCArMTk4NDEsOSBAQCBwYXJzZVBh cnRpdGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2Fu X3QgeXlzY2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUgaGFz IGJlZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJlcHJv Y2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBib29sICph bGxfdGFibGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90IHl5 c2Nhbm5lcikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVj dHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsIGJv b2wgKmFsbF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogewog CWlmICghYWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MzMsNiArMTk4NjMsNyBA QCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3Qs IGJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2NhdGlv bikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3RfY29u Y2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYgKG9i ai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDYwM2EyYjk0ZDA1Li5hOGIx NjMxMGZjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAg LTIyMTAsMyArMjIxMCwzNCBAQCBMb2dpY2FsU2xvdEFkdmFuY2VBbmRDaGVja1NuYXBTdGF0ZShY TG9nUmVjUHRyIG1vdmV0bywKIAogCXJldHVybiByZXRsc247CiB9CisKKy8qCisgKiBBZGQgYSBj b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byB0aGUgJ2Rlc3QnIHN0 cmluZy4KKyAqLwordm9pZAorR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1YmxpY2F0aW9ucywg U3RyaW5nSW5mbyBkZXN0LCBib29sIHF1b3RlX2xpdGVyYWwpCit7CisJTGlzdENlbGwgICAqbGM7 CisJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJQXNzZXJ0KHB1YmxpY2F0aW9ucyAhPSBOSUwpOwor CisJZm9yZWFjaChsYywgcHVibGljYXRpb25zKQorCXsKKwkJY2hhcgkgICAqcHVibmFtZSA9IHN0 clZhbChsZmlyc3QobGMpKTsKKworCQlpZiAoZmlyc3QpCisJCQlmaXJzdCA9IGZhbHNlOworCQll bHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsICIsICIpOworCisJCWlmIChxdW90 ZV9saXRlcmFsKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhkZXN0LCBxdW90ZV9saXRlcmFs X2NzdHIocHVibmFtZSkpOworCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGRl c3QsICciJyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsIHB1Ym5hbWUpOworCQkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoZGVzdCwgJyInKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDE5YTNjMjFhODYzLi5lZWU5 MDlkOTEyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j CkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNs dWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggN2E0OTE4NWQyOWQuLmRkMzhlZWY5MzAz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE3 OTcsMTIgKzE3OTcsMTggQEAgcGdvdXRwdXRfc2h1dGRvd24oTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4KQogICogdG8gc2lsZW50bHkgY29udGludWUgdGhlIHJlcGxpY2F0aW9uIGluIHRoZSBh YnNlbmNlIG9mIGEgbWlzc2luZyBwdWJsaWNhdGlvbi4KICAqIFRoaXMgaXMgcmVxdWlyZWQgYmVj YXVzZSB3ZSBhbGxvdyB0aGUgdXNlcnMgdG8gY3JlYXRlIHB1YmxpY2F0aW9ucyBhZnRlciB0aGV5 CiAgKiBoYXZlIHNwZWNpZmllZCB0aGUgcmVxdWlyZWQgcHVibGljYXRpb25zIGF0IHRoZSB0aW1l IG9mIHJlcGxpY2F0aW9uIHN0YXJ0LgorICoKKyAqIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5vIG1v cmUgdGhhbiBvbmUgcHVibGljYXRpb24gaW4gdGhlIGxpc3QgbWF5IGNvbnRhaW4KKyAqIGFuIEVY Q0VQVCBUQUJMRSBjbGF1c2UuIFVzaW5nIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aXRoIEVYQ0VQ VCBUQUJMRSBjbGF1c2UKKyAqIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCB0byBwcmV2ZW50IG5v bi1kZXRlcm1pbmlzdGljIGZpbHRlcmluZyBiZWhhdmlvcgorICogYWNyb3NzIG92ZXJsYXBwaW5n IHB1YmxpY2F0aW9uIHNldHMuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIExvYWRQdWJsaWNhdGlvbnMo TGlzdCAqcHVibmFtZXMpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3RDZWxsICAg KmxjOworCUxpc3QJICAgKnB1Ym5hbWVzX3dpdGhfZXhjZXB0ID0gTklMOwogCiAJZm9yZWFjaChs YywgcHVibmFtZXMpCiAJewpAQCAtMTgxMCw3ICsxODE2LDEzIEBAIExvYWRQdWJsaWNhdGlvbnMo TGlzdCAqcHVibmFtZXMpCiAJCVB1YmxpY2F0aW9uICpwdWIgPSBHZXRQdWJsaWNhdGlvbkJ5TmFt ZShwdWJuYW1lLCB0cnVlKTsKIAogCQlpZiAocHViKQorCQl7CiAJCQlyZXN1bHQgPSBsYXBwZW5k KHJlc3VsdCwgcHViKTsKKworCQkJLyogQ2hlY2sgaWYgdGhpcyBwdWJsaWNhdGlvbiBoYXMgYW4g RVhDRVBUIFRBQkxFIGxpc3QuICovCisJCQlpZiAocHVibGljYXRpb25faGFzX2FueV9leGNlcHRf dGFibGUocHViLT5vaWQpKQorCQkJCXB1Ym5hbWVzX3dpdGhfZXhjZXB0ID0gbGFwcGVuZChwdWJu YW1lc193aXRoX2V4Y2VwdCwgcHN0cmR1cChwdWJuYW1lKSk7CisJCX0KIAkJZWxzZQogCQkJZXJl cG9ydChXQVJOSU5HLAogCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFV SVNJVEVfU1RBVEUpLApAQCAtMTgxOSw2ICsxODMxLDI1IEBAIExvYWRQdWJsaWNhdGlvbnMoTGlz dCAqcHVibmFtZXMpCiAJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUgcHVibGljYXRpb24gaWYgaXQg ZG9lcyBub3QgZXhpc3QuIikpOwogCX0KIAorCS8qCisJICogSWYgbW9yZSB0aGFuIG9uZSBwdWJs aWNhdGlvbiBoYXMgYW4gRVhDRVBUIGxpc3QsIHRocm93IGFuIGVycm9yIGxpc3RpbmcKKwkgKiBh bGwgdGhlIHByb2JsZW1hdGljIHB1YmxpY2F0aW9ucy4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgo cHVibmFtZXNfd2l0aF9leGNlcHQpID4gMSkKKwl7CisJCVN0cmluZ0luZm9EYXRhIHB1Yl9uYW1l c19zdHI7CisKKwkJaW5pdFN0cmluZ0luZm8oJnB1Yl9uYW1lc19zdHIpOworCQlHZXRQdWJsaWNh dGlvbnNTdHIocHVibmFtZXNfd2l0aF9leGNlcHQsICZwdWJfbmFtZXNfc3RyLCB0cnVlKTsKKwor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCWVycm1zZygiY2Fubm90IGNvbWJpbmUgcHVibGljYXRpb25zIHRoYXQgZGVmaW5l IEVYQ0VQVCBUQUJMRSBjbGF1c2VzIiksCisJCQkJZXJyZGV0YWlsKCJUaGUgZm9sbG93aW5nIHB1 YmxpY2F0aW9ucyBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXM6ICVzLiIsCisJCQkJCQkgIHB1 Yl9uYW1lc19zdHIuZGF0YSkpOworCX0KKworCWxpc3RfZnJlZV9kZWVwKHB1Ym5hbWVzX3dpdGhf ZXhjZXB0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDg5LDcgKzIxMjAsNyBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAlp ZiAoIWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQpCiAJewogCQlPaWQJCQlzY2hlbWFJZCA9IGdldF9y ZWxfbmFtZXNwYWNlKHJlbGlkKTsKLQkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMocmVsaWQpOworCQlMaXN0CSAgICpwdWJpZHMgPSBOSUw7CiAKIAkJLyoKIAkJICog V2UgZG9uJ3QgYWNxdWlyZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMg d2UgYnVpbGQKQEAgLTIxMDQsNiArMjEzNSw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQljaGFyCQlyZWxraW5kID0gZ2V0X3Jl bF9yZWxraW5kKHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsKIAor CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgJnB1YmlkcywgTlVMTCk7CisKIAkJLyog UmVsb2FkIHB1YmxpY2F0aW9ucyBpZiBuZWVkZWQgYmVmb3JlIHVzZS4gKi8KIAkJaWYgKCFwdWJs aWNhdGlvbnNfdmFsaWQpCiAJCXsKQEAgLTIyMDYsMTQgKzIyMzksMjIgQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKi8KIAkJ CWlmIChwdWItPmFsbHRhYmxlcykKIAkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAo cHViLT5wdWJ2aWFyb290ICYmIGFtX3BhcnRpdGlvbikKKwkJCQlMaXN0CSAgICpleGNlcHRwdWJp ZHMgPSBOSUw7CisKKwkJCQlpZiAoYW1fcGFydGl0aW9uICYmIHB1Yi0+cHVidmlhcm9vdCkKIAkJ CQl7CiAJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJl bGlkKTsKIAogCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKIAkJCQkJYW5j ZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOwogCQkJCX0KKworCQkJCUdldFJl bGF0aW9uUHVibGljYXRpb25zKHB1Yl9yZWxpZCwgTlVMTCwgJmV4Y2VwdHB1Ymlkcyk7CisKKwkJ CQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRwdWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQkJcHVi bGlzaCA9IHRydWU7CisKKwkJCQlsaXN0X2ZyZWUoZXhjZXB0cHViaWRzKTsKIAkJCX0KIAogCQkJ aWYgKCFwdWJsaXNoKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNmI2MzRjOWZm ZjEuLmRjMDIxZGJiNmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3ODgs NyArNTc4OCw5IEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0 aW9uLAogdm9pZAogUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlv biwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogewotCUxpc3QJICAgKnB1Ym9pZHM7CisJTGlz dAkgICAqcHVib2lkcyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOworCUxp c3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29udGV4 dCBvbGRjeHQ7CiAJT2lkCQkJc2NoZW1haWQ7CkBAIC01ODI2LDcgKzU4MjgsNyBAQCBSZWxhdGlv bkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2Mg KnB1YmRlc2MpCiAJcHViZGVzYy0+Z2VuY29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKIAog CS8qIEZldGNoIHRoZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lkcyA9 IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwlHZXRSZWxhdGlvblB1YmxpY2F0aW9u cyhyZWxpZCwgJnB1Ym9pZHMsICZleGNlcHRwdWJvaWRzKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9u R2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29p ZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIApAQCAtNTgzOCwx NiArNTg0MCwyNSBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0 aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCWZvcmVhY2gobGMsIGFuY2VzdG9ycykK IAkJewogCQkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJCUxpc3QJICAgKmFu Y2VzdG9yX3B1Ym9pZHMgPSBOSUw7CisJCQlMaXN0CSAgICphbmNlc3Rvcl9leGNlcHRwdWJvaWRz ID0gTklMOwogCi0JCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAot CQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCUdldFJl bGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCAmYW5jZXN0b3JfcHVib2lkcywKKwkJCQkJCQkJ CSZhbmNlc3Rvcl9leGNlcHRwdWJvaWRzKTsKKworCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3Vu aXF1ZV9vaWQocHVib2lkcywgYW5jZXN0b3JfcHVib2lkcyk7CiAJCQlzY2hlbWFpZCA9IGdldF9y ZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVf b2lkKHB1Ym9pZHMsCiAJCQkJCQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQp KTsKKwkJCWV4Y2VwdHB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKGV4Y2VwdHB1Ym9p ZHMsCisJCQkJCQkJCQkJCQkgICBhbmNlc3Rvcl9leGNlcHRwdWJvaWRzKTsKIAkJfQogCX0KLQlw dWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJs aWNhdGlvbnMoKSk7CiAKKwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGljYXRp b25zKCk7CisJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJ CQkJCSBsaXN0X2RpZmZlcmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJCQkJCQkJ CSBleGNlcHRwdWJvaWRzKSk7CiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9pZAkJCXB1 YmlkID0gbGZpcnN0X29pZChsYyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0OTU5ODMwNDMzNS4uMTExMmM0 ZTEyNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDYyMyw5ICs0NjIzLDU1IEBAIGdldFB1YmxpY2F0aW9u cyhBcmNoaXZlICpmb3V0KQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFy b290KSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJnZW5jb2xzX3R5cGUgPQogCQkJKihQ UWdldHZhbHVlKHJlcywgaSwgaV9wdWJnZW5jb2xzKSk7CisJCXB1YmluZm9baV0uZXhjZXB0X3Rh YmxlcyA9IChTaW1wbGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyog RGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2Jq ZWN0KCYocHViaW5mb1tpXS5kb2JqKSwgZm91dCk7CisKKwkJLyoKKwkJICogR2V0IHRoZSBsaXN0 IG9mIHRhYmxlcyBmb3IgcHVibGljYXRpb25zIHNwZWNpZmllZCB3aXRoIHRoZSBFWENFUFQKKwkJ ICogVEFCTEUgY2xhdXNlLiBUaGlzIGlzIGludHJvZHVjZWQgaW4gUG9zdGdyZVNRTCAxOS4KKwkJ ICoKKwkJICogRVhDRVBUIFRBQkxFUyBpcyBwcm9jZXNzZWQgaGVyZSBhbmQgb3V0cHV0IGRpcmVj dGx5IGJ5CisJCSAqIGR1bXBQdWJsaWNhdGlvbigpLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgYXBw cm9hY2ggdXNlZCBpbgorCQkgKiBkdW1wUHVibGljYXRpb25UYWJsZSgpIGFuZCBkdW1wUHVibGlj YXRpb25OYW1lc3BhY2UoKSwgc2luY2UgdGhhdAorCQkgKiBhcHByb2FjaCB3b3VsZCByZXF1aXJl IEVYQ0VQVCBUQUJMRSBzdXBwb3J0IGZvciBBTFRFUiBQVUJMSUNBVElPTiwKKwkJICogd2hpY2gg aXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisJCSAqLworCQlpZiAoZm91dC0+cmVtb3RlVmVy c2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCWludAkJCW50YmxzOworCQkJUEdyZXN1bHQgICAqcmVz X3RibHM7CisKKwkJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOworCQkJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksCisJCQkJCQkJICAiU0VMRUNUIHBycmVsaWRcbiIKKwkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsXG4iCisJCQkJCQkJICAiV0hFUkUgcHJwdWJpZCA9 ICV1IGFuZCBwcmV4Y2VwdCIsCisJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsK KworCQkJcmVzX3RibHMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVT X1RVUExFU19PSyk7CisKKwkJCW50YmxzID0gUFFudHVwbGVzKHJlc190YmxzKTsKKworCQkJZm9y IChpbnQgaiA9IDA7IGogPCBudGJsczsgaisrKQorCQkJeworCQkJCU9pZAkJCXBycmVsaWQ7CisJ CQkJVGFibGVJbmZvICAqdGJpbmZvOworCisJCQkJcHJyZWxpZCA9IGF0b29pZChQUWdldHZhbHVl KHJlc190YmxzLCBqLCAwKSk7CisKKwkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9pZChwcnJlbGlk KTsKKworCQkJCWlmICh0YmluZm8gIT0gTlVMTCkKKwkJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVu ZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJfQorCisJCQlQUWNsZWFy KHJlc190YmxzKTsKKwkJfQogCX0KIAogY2xlYW51cDoKQEAgLTQ2NjUsNyArNDcxMSwyNSBAQCBk dW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJp bmZvKQogCWlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMgJiYgcHViaW5mby0+cHViYWxsc2VxdWVu Y2VzKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUywgQUxM IFNFUVVFTkNFUyIpOwogCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKKwl7CisJCWlu dAkJCW5fZXhjZXB0ID0gMDsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1Ig QUxMIFRBQkxFUyIpOworCisJCS8qIEluY2x1ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0aGVy ZSBhcmUgZXhjZXB0X3RhYmxlcy4gKi8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9 IHB1YmluZm8tPmV4Y2VwdF90YWJsZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJ CXsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJ CQlpZiAoKytuX2V4Y2VwdCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAi IEVYQ0VQVCBUQUJMRSAoIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsICIpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJPTkxZICVzIiwgZm10UXVh bGlmaWVkRHVtcGFibGUodGJpbmZvKSk7CisJCX0KKwkJaWYgKG5fZXhjZXB0ID4gMCkKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOworCX0KIAllbHNlIGlmIChwdWJpbmZvLT5w dWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwg U0VRVUVOQ0VTIik7CiAKQEAgLTQ4NDUsNiArNDkwOSw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAkv KiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCiAJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgog CQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBycmVs cXVhbCwgIgpAQCAtNDg1Nyw2ICs0OTIyLDkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkgIiAg ICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlc biIKIAkJCQkJCQkgIiAgRUxTRSBOVUxMIEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIik7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdIRVJFIE5P VCBwci5wcmV4Y2VwdCIpOworCX0KIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IDRjNGIxNGU1ZmM3Li5kMTQxZWI2NmQxNyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02 NzYsNiArNjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1 YnRydW5jYXRlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1Ymdl bmNvbHNfdHlwZTsKKwlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CiB9IFB1YmxpY2F0aW9u SW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggYThkY2MyYjVjNzUuLjU0 ZWFlNTc3YzkxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAor KysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzE3MCw2ICszMTcwLDM2 IEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9k YXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOCcgPT4geworCQlj cmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChkdW1wX3Rlc3QudGVzdF90YWJsZSk7JywK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSBXSVRIIChwdWJs aXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJ bGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwor CSdDUkVBVEUgUFVCTElDQVRJT04gcHViOScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJ CWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vj b25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04g cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFi bGUsIE9OTFkgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKSBXSVRIIChwdWJsaXNoID0gJ2lu c2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7 ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVBVEUg UFVCTElDQVRJT04gcHViMTAnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDkyLAorCQljcmVhdGVf c3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgKGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX3BhcmVudCk7JywKKwkJcmVnZXhw ID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwIEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQsIE9OTFkg ZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfY2hpbGQpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1 bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBTVUJT Q1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwg PT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCAzNTg0YzRlMTQyOC4uNjRi MWI2ZWZlYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCkBAIC0zMDczLDE3ICszMDczLDM0IEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgIiAgICAgICAgICBX SEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4iCiAJ CQkJCQkJCSAgIiAgICAgICAgRUxTRSBOVUxMIEVORCkgIgogCQkJCQkJCQkgICJGUk9NIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCi0JCQkJCQkJ CSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlk XG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIgkJ Sk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHVi aWRcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBjLm9pZCA9 IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIsCisJ CQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAw MDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQU5EIE5PVCBwci5wcmV4Y2Vw dFxuIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCQkgICJVTklPTlxu IgogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxu IgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgorCQkJ CQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGlj YXRpb24gcFxuIgotCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0YWxv Zy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgotCQkJCQkJCQkgICJPUkRFUiBC WSAxOyIsCi0JCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwgb2lkKTsKKwkJCQkJCQkJICAiV0hFUkUg cC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUo JyVzJylcbiIsCisJCQkJCQkJCSAgb2lkKTsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5 MDAwMCkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAgIiAgICAgQU5E IE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCQkJICAiCQlTRUxFQ1QgMVxuIgorCQkJCQkJCQkJICAi CQlGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkJCQkgICIJ CUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwY1xuIgorCQkJCQkJCQkJICAiCQlPTiBwci5wcnJl bGlkID0gcGMub2lkXG4iCisJCQkJCQkJCQkgICIJCVdIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFO RCBwci5wcnB1YmlkID0gcC5vaWQpXG4iLAorCQkJCQkJCQkJICBvaWQpOworCisJCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7CiAJCQl9CiAJCQllbHNlCiAJCQl7 CkBAIC0zMTM0LDYgKzMxNTEsMzUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hh ciAqc2NoZW1hbmFtZSwKIAkJCVBRY2xlYXIocmVzdWx0KTsKIAkJfQogCisJCS8qIFByaW50IHB1 YmxpY2F0aW9ucyB3aGVyZSB0aGUgdGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KKwkJ aWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRh bG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldIRVJF IHByLnBycmVsaWQgPSAnJXMnXG4gQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJICAiT1JERVIg QlkgMTsiLCBvaWQpOworCisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAo IXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQ UW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDApCisJCQkJcHJpbnRUYWJsZUFk ZEZvb3RlcigmY29udCwgXygiRXhjZXB0IFB1YmxpY2F0aW9uczoiKSk7CisKKwkJCS8qIE1pZ2h0 IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJZm9yIChpID0gMDsgaSA8IHR1cGxl czsgaSsrKQorCQkJeworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwg UFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNv bnQsIGJ1Zi5kYXRhKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzdWx0KTsKKwkJfQorCiAJCS8qCiAJ CSAqIElmIHZlcmJvc2UsIHByaW50IE5PVCBOVUxMIGNvbnN0cmFpbnRzLgogCQkgKi8KQEAgLTY3 NTMsOCArNjc5OSwxMiBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu KQogCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKIAkJ CQkJCQkgICJXSEVSRSBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkXG4iCiAJCQkJCQkJICAiICBBTkQg Yy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydc biIKLQkJCQkJCQkgICJPUkRFUiBCWSAxLDIiLCBwdWJpZCk7CisJCQkJCQkJICAiICBBTkQgcHIu cHJwdWJpZCA9ICclcydcbiIsIHB1YmlkKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkw MDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIgIEFORCBOT1QgcHIucHJleGNlcHRc biIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiT1JERVIgQlkgMSwyIik7CiAJCQlp ZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFsc2Us ICZjb250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKIApAQCAtNjc3Miw2ICs2ODIyLDIzIEBA IGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCWdvdG8gZXJy b3JfcmV0dXJuOwogCQkJfQogCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHBzZXQuc3ZlcnNpb24g Pj0gMTkwMDAwKQorCQkJeworCQkJCS8qIEdldCB0YWJsZXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ug Zm9yIHRoaXMgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ CQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsICcuJywg Yy5yZWxuYW1lKVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgor CQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04g Yy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMn XG4iCisJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJCSAgIk9SREVSIEJZ IDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBf KCJFeGNlcHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3Rv IGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVl cnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDhiOTFiYzAwMDYyLi4zOTQwNGVhMGY2OSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwpAQCAtMzY2OSw3ICszNjY5LDE3IEBAIG1hdGNoX3ByZXZpb3Vz X3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJM RVMiLCAiU0VRVUVOQ0VTIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIpKQotCQlDT01QTEVURV9XSVRI KCJXSVRIICgiKTsKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUIFRBQkxFICgiLCAiV0lUSCAoIik7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUg KCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikpCisJCUNPTVBMRVRF X1dJVEgoIigiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIikp CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55Tikg JiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZ KFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQi LCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQor CQlDT01QTEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIklO IFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwg JywnKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCAzNjhiZWNjYTg5OS4u OGQ2OTUyNzY4MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE0Niwx NiArMTQ2LDE4IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0aW9u CXJlbGF0aW9uOwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7CisJ Ym9vbAkJZXhjZXB0OwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNhdGlv biAqR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVi bGljYXRpb25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKLWV4 dGVybiBMaXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIGJv b2wgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBMaXN0ICoqcHViaWRzLCBMaXN0 ICoqZXhjZXB0X3B1Ymlkcyk7CiAKIC8qLS0tLS0tLS0tCi0gKiBFeHBlY3RlZCB2YWx1ZXMgZm9y IHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZiBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucygpLAotICog d2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaCBwYXJ0aXRpb25zIG9mIHBhcnRp dGlvbmVkIHRhYmxlcwotICogbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVj dCB0byBzZWUuCisgKiBFeHBlY3RlZCB2YWx1ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBv ZgorICogR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucygpLCB3aGljaCBhbGxvd3MgY2Fs bGVycyB0byBzcGVjaWZ5IHdoaWNoCisgKiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxl cyBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uIHRoZXkgZXhwZWN0IHRvCisgKiBzZWUuCiAg KgogICoJUk9PVDoJb25seSB0aGUgdGFibGUgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhlIHB1 YmxpY2F0aW9uCiAgKglMRUFGOglvbmx5IGxlYWYgcGFydGl0aW9ucyBpbiBnaXZlbiB0cmVlCkBA IC0xNjgsOSArMTcwLDEyIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIAlQVUJM SUNBVElPTl9QQVJUX0FMTCwKIH0gUHVibGljYXRpb25QYXJ0T3B0OwogCi1leHRlcm4gTGlzdCAq R2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHVi X3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHB1YmlkLAorCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsK K2V4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKE9pZCBwdWJpZCwKKwkJ CQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAq R2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVybiBM aXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhQdWJsaWNhdGlvbiAqcHViLCBjaGFyIHJl bGtpbmQpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwog ZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJu IExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKQEAgLTE4 NSw2ICsxOTAsNyBAQCBleHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24o T2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAogCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJs ZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0 aW9uKE9pZCBwdWJpZCk7CitleHRlcm4gYm9vbCBwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdF90 YWJsZShPaWQgcHViaWQpOwogZXh0ZXJuIGJvb2wgY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0 KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IG1j eHQsIEJpdG1hcHNldCAqKmNvbHMpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAppbmRleCAzYTg3OTBlODQ4Mi4uODAyYThm NTc2YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVs LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEs NiArMzEsNyBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVs UmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBCS0lf TE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9p ZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRpb24g Ki8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJLyogcmVsYXRpb24gaXMgbm90IHB1 Ymxpc2hlZCAqLwogCiAjaWZkZWYJQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGgg ZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNh dGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IGYzNTcxZDJi ZmNmLi45MjhlNWFmODc2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBA IC0yMDUsNyArMjA1LDQgQEAgZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3Vi aWQpOwogCiBleHRlcm4gaW50CUNvdW50REJTdWJzY3JpcHRpb25zKE9pZCBkYmlkKTsKIAotZXh0 ZXJuIHZvaWQgR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1YmxpY2F0aW9ucywgU3RyaW5nSW5m byBkZXN0LAotCQkJCQkJCSAgIGJvb2wgcXVvdGVfbGl0ZXJhbCk7Ci0KICNlbmRpZgkJCQkJCQkv KiBQR19TVUJTQ1JJUFRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDBhZWM0OWJk ZDIyLi5iMWRlMzVkYzNlMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDI5OSw5ICs0Mjk5 LDEwIEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogdHlwZWRlZiBz dHJ1Y3QgUHVibGljYXRpb25UYWJsZQogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAq cmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KKwlSYW5nZVZhciAgICpy ZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkgICAqd2hlcmVDbGF1 c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIExpc3Qgb2Yg Y29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCisJYm9vbAkJZXhjZXB0OwkJCS8qIFRy dWUgaWYgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCiB9IFB1YmxpY2F0aW9uVGFibGU7 CiAKIC8qCkBAIC00MzEwLDYgKzQzMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRh YmxlCiB0eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQogewogCVBVQkxJQ0FUSU9O T0JKX1RBQkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRSwJ LyogQSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxF U19JTl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJT05PQkpf VEFCTEVTX0lOX0NVUl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVudCBvZgog CQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwpAQCAtNDMzOCw2ICs0MzQwLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlQdWJs aWNhdGlvbkFsbE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9u IG9iamVjdCAqLworCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIHRhYmxlcyBzcGVjaWZpZWQg aW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxv Y2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCmluZGV4IGJjOWQ0ZWNlNjcyLi4xZmVjZTc0Mzk4ZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWwuaApAQCAtMTUyLDUgKzE1Miw3IEBAIGV4dGVybiBY TG9nUmVjUHRyIExvZ2ljYWxSZXBsaWNhdGlvblNsb3RDaGVja1BlbmRpbmdXYWwoWExvZ1JlY1B0 ciBlbmRfb2Zfd2FsLAogCQkJCQkJCQkJCQkJCQlYTG9nUmVjUHRyIHNjYW5fY3V0b2ZmX2xzbik7 CiBleHRlcm4gWExvZ1JlY1B0ciBMb2dpY2FsU2xvdEFkdmFuY2VBbmRDaGVja1NuYXBTdGF0ZShY TG9nUmVjUHRyIG1vdmV0bywKIAkJCQkJCQkJCQkJCQkgIGJvb2wgKmZvdW5kX2NvbnNpc3RlbnRf c25hcHNob3QpOworZXh0ZXJuIHZvaWQgR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1YmxpY2F0 aW9ucywgU3RyaW5nSW5mbyBkZXN0LAorCQkJCQkJCSAgIGJvb2wgcXVvdGVfbGl0ZXJhbCk7CiAK ICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA3 ZmI0OWFhZjI5Yi4uMWU1ODE5YzZkZTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywxMzIgQEAgTm90LW51bGwgY29uc3RyYWludHM6 CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKICgxIHJvdykKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2Zv cnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bDMgKGEgaW50KTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRT ICh0ZXN0cHViX3RibDMpOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIG5vcm1hbCB0YWJsZXMKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0 ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkg dGVzdHB1Yl90YmwzOworLS0gU3BlY2lmeSB0YWJsZWxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ug b2YgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo dGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRl c3RwdWJfdGJsMSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMiIKKworLS0gU3BlY2lmeSB0YWJs ZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFi bGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgorCistLSBDaGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBz aG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJlIGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQ VCBjbGF1c2UKK1xkIHRlc3RwdWJfdGJsMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRh YmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgbm90IG51bGwgfCBuZXh0dmFsKCd0ZXN0cHViX3RibDFfaWRfc2VxJzo6cmVnY2xhc3MpCisg ZGF0YSAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZXN0cHViX3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpZCkKK1B1YmxpY2F0aW9u czoKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCitFeGNlcHQgUHVibGljYXRpb25zOgorICAg ICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSIKKyAgICAidGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUxIgorCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBU QUJMRSB0ZXN0cHViX3RibDI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVz LCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3Nj aGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFi bGVzX2V4Y2VwdHRhYmxlMTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMsIGFuZAorLS0gRVhDRVBUIFRB QkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0 ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50 OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCiAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZgogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgot ICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX2NoaWxk IgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1 YjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI0CiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAg IHwgZgogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgorICAgICJwdWJsaWMudGVz dHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJsMywgdGVzdHB1Yl90Ymwz YTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0OworLS0gTGlzdCB0aGUgcGFy ZW50IHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlICh3aXRob3V0IE9OTFkgb3IgJyonKQorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVz dHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI1CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg dCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAg InB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVu dCIKKworLS0gRVhDRVBUIHdpdGggJyonOiBsaXN0IHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNj ZW5kYW50cyBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50ICopOworXGRS cCsgdGVzdHB1YjYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAg ICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX2No aWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCistLSBFWENFUFQgd2l0aCBP TkxZOiBsaXN0IHRoZSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSwgYnV0IG5vdCBpdHMgZGVz Y2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgKE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI3CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg R2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4 Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKK1JFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1 Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1 YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJs ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcm9vdChh IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDEg UEFSVElUSU9OIE9GIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDIgUEFSVElUSU9OIE9GIHRlc3RwdWJfcm9vdCBGT1Ig VkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yjgg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Jvb3QpOworXGRScCsgdGVzdHB1 Yjg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViOAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAg ICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3Jvb3QiCisKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3Rw dWJfcGFydDEpOworRVJST1I6ICBwYXJ0aXRpb24gInRlc3RwdWJfcGFydDEiIGNhbm5vdCBiZSBl eGNsdWRlZCB1c2luZyBFWENFUFQgVEFCTEUKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitE Uk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0MSwgdGVzdHB1Yl9wYXJ0MjsKK0RS T1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRo IFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VR VUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbAppbmRleCA4NWIwMGJkNjdjOC4uNGRlMDE3NmJjMjUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEwNSwyMCArMTA1LDYzIEBAIFNFTEVDVCBwdWJuYW1lLCBw dWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJf Zm9yYWxsCiBcZCsgdGVzdHB1Yl90YmwyCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwogCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCBU QUJMRSB0ZXN0cyBmb3Igbm9ybWFsIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7Cist LSBTcGVjaWZ5IHRhYmxlbGlzdCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRl c3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorLS0g U3BlY2lmeSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0 dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorLS0gQ2hlY2sgdGhhdCB0aGUgdGFibGUgZGVz Y3JpcHRpb24gc2hvd3MgdGhlIHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGlu IHRoZSBFWENFUFQgY2xhdXNlCitcZCB0ZXN0cHViX3RibDEKKworUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRl c3RwdWJfZm9yX3RibF9zY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlMTsKIAotQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQp OwotQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsM2EgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJf dGJsMyk7CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IFRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzLCBhbmQKKy0tIEVYQ0VQVCBUQUJMRSB0ZXN0cyBm b3IgaW5oZXJpdGVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKLUNSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7Ci1SRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHVi X3RibF9wYXJlbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0 cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWI0Cist LSBMaXN0IHRoZSBwYXJlbnQgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKHdpdGhvdXQgT05M WSBvciAnKicpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjUKKy0tIEVYQ0VQ VCB3aXRoICcqJzogbGlzdCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgaW4gdGhl IEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3RwdWI2Cist LSBFWENFUFQgd2l0aCBPTkxZOiBsaXN0IHRoZSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSwg YnV0IG5vdCBpdHMgZGVzY2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnAr IHRlc3RwdWI3CiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CitSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQsIHRlc3RwdWJfdGJsX2NoaWxkOwor RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0cHViNiwg dGVzdHB1Yjc7CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcm9vdChhIGludCkgUEFSVElU SU9OIEJZIFJBTkdFKGEpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDEgUEFSVElUSU9OIE9G IHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworQ1JFQVRFIFRBQkxF IHRlc3RwdWJfcGFydDIgUEFSVElUSU9OIE9GIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00g KDEwMCkgVE8gKDIwMCk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjggRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Jvb3QpOworXGRScCsgdGVzdHB1Yjg7CitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHVi X3BhcnQxKTsKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1 Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0ZXN0cHViX3BhcnQyOworRFJPUCBQVUJMSUNBVElPTiB0 ZXN0cHViODsKIAogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIENS RUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxk CmluZGV4IGE0YzdkYmFmZjU5Li4wNzI4MmFhM2MxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZApAQCAtNDYsNiArNDYsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMzRfdGVtcG9yYWwu cGwnLAogICAgICAgJ3QvMDM1X2NvbmZsaWN0cy5wbCcsCiAgICAgICAndC8wMzZfc2VxdWVuY2Vz LnBsJywKKyAgICAgICd0LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwnLAogICAgICAg J3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzYxY2UxYWM5OTYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBs CkBAIC0wLDAgKzEsMjc2IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgTG9naWNhbCByZXBsaWNhdGlvbiB0ZXN0 cyBmb3IgRVhDRVBUIFRBQkxFIHB1YmxpY2F0aW9ucwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n czsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQor bXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJs aXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dp Y2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCitteSAkcHVibGlzaGVyX2Nvbm5zdHIg PSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CisKKyMgSW5p dGlhbGl6ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3Rh cnQ7CisKK215ICRyZXN1bHQ7CisKK3N1YiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbgorewor CW15ICRwdWJ2aWFyb290ID0gQF87CisKKwkjIFdoZW4gdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFi bGUgaXMgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlLAorCSMgYWxsIGl0cyBwYXJ0aXRpb25z IGFyZSBub3QgcHVibGlzaGVkLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxcSgKKwkJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gJHB1YnZpYXJvb3QpOworCQlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMSksICgx MDEpLCAoMTUxKTsKKwkpKTsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgorCSk7CisJJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLAorCQkn dGFwX3N1Yl9wYXJ0Jyk7CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rl c3Rfc2xvdCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCisJKTsKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIp LCAoMTAyKSwgKDE1MikiKTsKKworCSMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4KKwkjIGl0IGlzIGluIHRo ZSBFWENFUFQgY2xhdXNlLgorCSRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9u JywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCisJKTsKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisJIyBDaGVj ayB0aGF0IG5vIHJvd3MgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9N IHNjaDEudDEiKTsKKwlpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxl Jyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7CisJaXMoJHJlc3VsdCwgcXEoKSwgJ2No ZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0 MiIpOworCWlzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDIn KTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMSIpOworCWlzKCRyZXN1bHQsIHFxKCksICdj aGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOworCisJJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5w YXJ0Ml8yIik7CisJaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5w YXJ0Ml8yJyk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKK30KKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQg VEFCTEUgdGVzdCBjYXNlcyBmb3Igbm9ybWFsIHRhYmxlcworIyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9u IHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJQ1JFQVRFIFNDSEVNQSBzY2gxOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNU IGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhOworKSk7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5k IHRhYmxlcyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXEoCisJQ1JFQVRFIFNDSEVNQSBzY2gxOworCUNSRUFURSBUQUJMRSBzY2gxLnRh YjEgKGEgaW50KTsKKykpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24sIGFuZCBjcmVh dGUgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgdG8gaGVscCB3aXRoCisjIGxhdGVyIHRlc3Rz LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWJfc2NoZW1hIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50 YWIxKSIKKyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAncGdv dXRwdXQnKSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworIyBXYWl0IGZvciBp bml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9z dWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsCisJJ3RhcF9zdWJfc2NoZW1hJyk7CisK KyMgQ2hlY2sgdGhlIHRhYmxlIGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgdGhlIHRhYmxlcyBzcGVj aWZpZWQgaW4gRVhDRVBUIGNsYXVzZQorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWIxIik7Citp cygkcmVzdWx0LCBxcSgwKSwKKwknY2hlY2sgdGhlcmUgaXMgbm8gaW5pdGlhbCBkYXRhIGNvcGll ZCBmb3IgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIGV4Y2VwdCBjbGF1c2UnCispOworCisj IEluc2VydCBzb21lIGRhdGEgaW50byB0aGUgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xh dXNlCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyBzY2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpIik7CisKKyMgVmVyaWZ5 IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIGEgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xh dXNlIGlzIG5vdAorIyBwdWJsaXNoZWQuCiskcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxf c2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192 ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3N1Yl9zY2hlbWEnKSIKKyk7 CitpcygkcmVzdWx0LCBxcSh0KSwKKwkndmVyaWZ5IG5vIGNoYW5nZXMgZm9yIHRhYmxlIGxpc3Rl ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBhcmUgcHJlc2VudCBpbiB0aGUgcmVwbGljYXRpb24gc2xv dCcKKyk7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIGEgdGFibGUgbGlzdGVk IGluIHRoZSBFWENFUFQgY2xhdXNlIGlzIG5vdAorIyByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gc2NoMS50YWIxIik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5z ZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CisKKyMgY2xlYW51cAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSIpOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBQVUJM SUNBVElPTiB0YXBfcHViX3NjaGVtYTsKKwlUUlVOQ0FURSBUQUJMRSBzY2gxLnRhYjE7CispKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg c2NoMS50YWIxIik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKyMgRVhDRVBUIFRBQkxFIHRlc3QgY2FzZXMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcwor IyBDaGVjayBiZWhhdmlvciBvZiBFWENFUFQgVEFCTEUgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCBvbiBhCisjIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBpdHMgcGFydGl0aW9ucy4KKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgU2V0dXAgcGFy dGl0aW9uZWQgdGFibGUgYW5kIHBhcnRpdGlvbnMgb24gdGhlIHB1Ymxpc2hlciB0aGF0IG1hcCB0 byBub3JtYWwKKyMgdGFibGVzIG9uIHRoZSBzdWJzY3JpYmVyCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50MShhIGludCkg UEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxIFBBUlRJVElP TiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCk7CisJQ1JFQVRFIFRBQkxF IHNjaDEucGFydDIgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9SIFZBTFVFUyBGUk9NICgxMDApIFRP ICgyMDApIFBBUlRJVElPTiBCWSBSQU5HRShhKTs7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJf MSBQQVJUSVRJT04gT0Ygc2NoMS5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDE1MCk7 CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMiBQQVJUSVRJT04gT0Ygc2NoMS5wYXJ0MiBGT1Ig VkFMVUVTIEZST00gKDE1MCkgVE8gKDIwMCk7CispKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50KTsK KwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFy dDIoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzEoYSBpbnQpOworCUNSRUFURSBU QUJMRSBzY2gxLnBhcnQyXzIoYSBpbnQpOworKSk7CisKK3Rlc3RfZXhjZXB0X3Jvb3RfcGFydGl0 aW9uKCdmYWxzZScpOwordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ3RydWUnKTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHNsb3RfbmFtZSBG Uk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93 YWxfbHNuKCkpOyIKKyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKyMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11 bHRpcGxlIHB1YmxpY2F0aW9ucworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBFUlJPUiBpZiBzdWJzY3JpYmluZyB0byBtdWx0aXBsZSBwdWJsaWNhdGlv bnMgaGF2aW5nIEVYQ0VQVCBUQUJMRS4KK215ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoc2NoMS50YWIxKTsKKwlDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChzY2gxLnQxKTsKKykp OworCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9zdWJzY3JpYmVyLT5wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIKKyk7Cits aWtlKAorCSRzdGRlcnIsCisJcXIvRVJST1I6ICBjYW5ub3QgY29tYmluZSBwdWJsaWNhdGlvbnMg dGhhdCBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXMuKgorLipERVRBSUw6LipUaGUgZm9sbG93 aW5nIHB1YmxpY2F0aW9ucyBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXM6ICJ0YXBfcHViMSIs ICJ0YXBfcHViMiIuLywKKwknc3Vic2NyaXB0aW9uIHdpdGggbXVsdGlwbGUgRVhDRVBUIFRBQkxF IHB1YmxpY2F0aW9uJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisKKyMgT0sgd2hlbiBhIHRhYmxlIGlzIGV4 Y2x1ZGVkIGJ5IHB1YjEgRVhDRVBUIFRBQkxFLCBidXQgaXQgaXMgaW5jbHVkZWQgYnkgcHViMgor IyBGT1IgVEFCTEUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMiBGT1IgVEFCTEUgc2NoMS50YWIxOworCUlO U0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnBz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgorKTsK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJ3RhcF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXEoSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUygyKSkpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHNjaDEudGFiMSBPUkRF UiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEoMQorMiksCisJImNoZWNrIHJlcGxpY2F0aW9uIG9m IGEgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNs dWRlZCBieSBhbm90aGVyIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCURST1AgUFVCTElDQVRJT04gdGFwX3B1YjI7CisJVFJVTkNBVEUgc2NoMS50 YWIxOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJV TkNBVEUgc2NoMS50YWIxKSk7CisKKyMgT0sgd2hlbiBhIHRhYmxlIGlzIGV4Y2x1ZGVkIGJ5IHB1 YjEgRVhDRVBUIFRBQkxFLCBidXQgaXQgaXMgaW5jbHVkZWQgYnkgcHViMgorIyBGT1IgQUxMIFRB QkxFUworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwgVEFCTEVTOworCUlOU0VSVCBJTlRPIHNj aDEudGFiMSBWQUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9z dWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoSU5TRVJU IElOVE8gc2NoMS50YWIxIFZBTFVFUygyKSkpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHNjaDEudGFiMSBPUkRFUiBCWSBhIik7Citp cyggJHJlc3VsdCwgcXEoMQorMiksCisJImNoZWNrIHJlcGxpY2F0aW9uIG9mIGEgdGFibGUgaW4g dGhlIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90 aGVyIgorKTsKKworIyBFUlJPUiBpZiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVC TElDQVRJT04gY2F1c2VzIHRoZQorIyBzdWJzY3JpcHRpb24gdG8gZW5kIHVwIHdpdGggbXVsdGlw bGUgcHVibGljYXRpb25zIGhhdmluZyBFWENFUFQgVEFCTEUuCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyOwor CUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHNjaDEu dDEpOworKSk7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmli ZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgUkVGUkVT SCBQVUJMSUNBVElPTiIpOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL0VSUk9SOiAgY2Fubm90IGNv bWJpbmUgcHVibGljYXRpb25zIHRoYXQgZGVmaW5lIEVYQ0VQVCBUQUJMRSBjbGF1c2VzLioKKy4q REVUQUlMOi4qVGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnMgZGVmaW5lIEVYQ0VQVCBUQUJMRSBj bGF1c2VzOiAidGFwX3B1YjEiLCAidGFwX3B1YjIiLi8sCisJJ3N1YnNjcmlwdGlvbiB3aXRoIG11 bHRpcGxlIEVYQ0VQVCBUQUJMRSBwdWJsaWNhdGlvbicpOworCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9w dWIxJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJM SUNBVElPTiB0YXBfcHViMicpOworCiskbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKKwor ZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQzLjAKCg== --000000000000b7e8f5064b3d589e Content-Type: application/octet-stream; name="v47-0002-Support-specifying-partition-tables-in-EXCEPT-cl.patch" Content-Disposition: attachment; filename="v47-0002-Support-specifying-partition-tables-in-EXCEPT-cl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlun0w9r1 RnJvbSA2ZjgxYjE2YTA5YTYwNGQ3MjkzZWRlYTU5Nzc4ODRhMDRlYjI2ZDUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMjAgRmViIDIwMjYgMTM6MzQ6MTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0NyAyLzJd IFN1cHBvcnQgc3BlY2lmeWluZyBwYXJ0aXRpb24gdGFibGVzIGluIEVYQ0VQVCBjbGF1c2UKCkFs bG93IHBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgaW5kaXZpZHVhbCBwYXJ0aXRpb25zIHRvIGJlIGV4 cGxpY2l0bHkKc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgcHVibGljYXRpb24u CgpBZGp1c3QgbG9naWNhbCByZXBsaWNhdGlvbiBzbyB0aGF0IGJvdGggaW5pdGlhbCBkYXRhIHN5 bmNocm9uaXphdGlvbiBhbmQKb25nb2luZyBjaGFuZ2UgcmVwbGljYXRpb24gY29ycmVjdGx5IGhv bm9yIGV4Y2x1c2lvbnMgaW52b2x2aW5nCnBhcnRpdGlvbmVkIHRhYmxlcy4KCk9uIHRoZSBzdWJz Y3JpYmVyIHNpZGUsIGV4dGVuZCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbygpIHRvIGNvbXB1dGUg dGhlCmVmZmVjdGl2ZSBzZXQgb2YgcmVsYXRpb25zIGZvciB0aGUgaW5pdGlhbCBDT1BZLiBJZiBl eGNsdXNpb25zIGFmZmVjdCBhCnBhcnRpdGlvbmVkIHRhYmxlLCB0aGUgcm9vdCByZWxhdGlvbiBj YW5ub3QgYWx3YXlzIGJlIHVzZWQgZGlyZWN0bHkuCkluc3RlYWQsIGRlcml2ZSB0aGUgbGlzdCBv ZiBub24tZXhjbHVkZWQgbGVhZiBwYXJ0aXRpb25zIGFuZCBjb25zdHJ1Y3QgdGhlCkNPUFkgcXVl cnkgdXNpbmcgVU5JT04gQUxMIG92ZXIgdGhvc2UgcGFydGl0aW9ucy4gSWYgbm8gcmVsZXZhbnQK ZXhjbHVzaW9ucyBhcmUgcHJlc2VudCwgcmV0YWluIHRoZSBleGlzdGluZyBiZWhhdmlvciBhbmQg Y29weSBmcm9tIHRoZQpyb290IHJlbGF0aW9uIGFzIGJlZm9yZS4KLS0tCiBkb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgICB8IDQ0NyArKysrKysrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAxNDggKysrKyst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAxNTYgKysr KystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDcg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgNiArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCAgMTEgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8ICAgMyArLQogLi4u L3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAgICAgIHwgIDkwICsrKy0KIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxMiBm aWxlcyBjaGFuZ2VkLCA4NDcgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggZjdjZjcyMzcwNjEuLjQzNmU3 ZDY5NGEzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTIw NSwxMSArMjA1LDkgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgIHRhYmxlcyBhcmUgZXhjbHVkZWQuCiAg ICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCBv bmx5IHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIG1heSBiZSBzcGVjaWZpZWQKLSAgICAgIGlu IDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD4uIERvaW5nIHNvIGV4Y2x1ZGVzIHRoZSBy b290IHRhYmxlIGFuZAotICAgICAgYWxsIG9mIGl0cyBwYXJ0aXRpb25zIGZyb20gcmVwbGljYXRp b24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mCi0gICAgICA8bGl0ZXJhbD5wdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4uIFRoZSBvcHRpb25hbAotICAgICAgPGxpdGVyYWw+ KjwvbGl0ZXJhbD4gaGFzIG5vIGVmZmVjdCBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgorICAgICAg Rm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgaWYgYSB0YWJsZSBpcyBzcGVjaWZpZWQgaW4gRVhDRVBU IFRBQkxFLCB0aGF0CisgICAgICB0YWJsZSBhbmQgYWxsIG9mIGl0cyBwYXJ0aXRpb25zICh0aGF0 IGlzLCB0aGUgZW50aXJlIHBhcnRpdGlvbiBzdWJ0cmVlCisgICAgICByb290ZWQgYXQgdGhhdCB0 YWJsZSkgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAg ICAgIDxwYXJhPgogICAgICAgVGhlcmUgY2FuIGJlIGEgY2FzZSB3aGVyZSBhIHN1YnNjcmlwdGlv biBpbmNsdWRlcyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMKaW5kZXggZTNhNjhmZmI2YmIuLjFmZGFmYWZiNTU4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCkBAIC00NjksMTEgKzQ2OSw2IEBAIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAotCWlmIChw dWItPmFsbHRhYmxlcyAmJiBwcmktPmV4Y2VwdCAmJiB0YXJnZXRyZWwtPnJkX3JlbC0+cmVsaXNw YXJ0aXRpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJZXJybXNnKCJwYXJ0aXRpb24gXCIlc1wi IGNhbm5vdCBiZSBleGNsdWRlZCB1c2luZyBFWENFUFQgVEFCTEUiLAotCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSk7Ci0KIAljaGVja19wdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24odGFyZ2V0cmVsKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFuc2xhdGUgY29sdW1u IG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KQEAgLTkyMSw2ICs5MTYsNDUg QEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcGFydGl0aW9uZWQgdGFibGUgaXMgZWZm ZWN0aXZlbHkgZXhjbHVkZWQKKyAqIGJ5IHRoZSBFWENFUFQgbGlzdC4KKyAqCisgKiBBIHJlbGF0 aW9uIGlzIGNvbnNpZGVyZWQgZXhjbHVkZWQgaWY6CisgKiAgMSkgSXQgaXMgZXhwbGljaXRseSBw cmVzZW50IGluIGV4Y2VwdGxpc3QsIG9yCisgKiAgMikgQWxsIG9mIGl0cyBsZWFmIHBhcnRpdGlv bnMgYXJlIHByZXNlbnQgaW4gZXhjZXB0bGlzdC4KKyAqLworc3RhdGljIGJvb2wKK3JlbGF0aW9u X2lzX2VmZmVjdGl2ZWx5X2V4Y2x1ZGVkKE9pZCByZWxpZCwgTGlzdCAqZXhjZXB0bGlzdCkKK3sK KwlMaXN0CSAgICpsZWFmdGFibGVzID0gTklMOworCisJaWYgKGV4Y2VwdGxpc3QgPT0gTklMKQor CQlyZXR1cm4gZmFsc2U7CisKKwkvKiBFeHBsaWNpdGx5IGV4Y2x1ZGVkICovCisJaWYgKGxpc3Rf bWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCisJCXJldHVybiB0cnVlOworCisJLyogR2V0 IGFsbCBsZWFmIHBhcnRpdGlvbnMgb2YgcmVsaWQgKi8KKwlsZWFmdGFibGVzID0gR2V0UHViUGFy dGl0aW9uT3B0aW9uUmVsYXRpb25zKGxlYWZ0YWJsZXMsCisJCQkJCQkJCQkJCQlQVUJMSUNBVElP Tl9QQVJUX0xFQUYsCisJCQkJCQkJCQkJCQlyZWxpZCk7CisKKwkvKgorCSAqIElmIGFueSBsZWFm IGlzIE5PVCBwcmVzZW50IGluIGV4Y2VwdGxpc3QsIHRoZW4gdGhlIHJlbGF0aW9uIGlzIG5vdAor CSAqIGZ1bGx5IGV4Y2x1ZGVkLgorCSAqLworCWZvcmVhY2hfb2lkKGxlYWZyZWxpZCwgbGVhZnRh YmxlcykKKwl7CisJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIGxlYWZyZWxpZCkp CisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogQWxsIGxlYXZlcyBhcmUgZXhjbHVkZWQgKi8K KwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBhbGwgcmVsYXRpb25zIHB1 Ymxpc2hlZCBieSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgpAQCAt OTQ5LDcgKzk4Myw3IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFB1YmxpY2F0aW9uICpw dWIsIGNoYXIgcmVsa2luZCkKIAogCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pCiAJ CWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBwdWJ2aWFy b290ID8KLQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJ CSAgUFVCTElDQVRJT05fUEFSVF9BTEwgOgogCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJU X0xFQUYpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNj ZXNzU2hhcmVMb2NrKTsKQEAgLTk5MCw3ICsxMDI0LDcgQEAgR2V0QWxsUHVibGljYXRpb25SZWxh dGlvbnMoUHVibGljYXRpb24gKnB1YiwgY2hhciByZWxraW5kKQogCiAJCQlpZiAoaXNfcHVibGlz aGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYmCiAJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0 aW9uICYmCi0JCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCisJCQkJIXJl bGF0aW9uX2lzX2VmZmVjdGl2ZWx5X2V4Y2x1ZGVkKHJlbGlkLCBleGNlcHRsaXN0KSkKIAkJCQly ZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMjM5LDYgKzEy NzMsNDA1IEBAIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0X3RhYmxlKE9pZCBwdWJpZCkKIAly ZXR1cm4gZm91bmQ7CiB9CiAKKy8qIGlzX3JlbGlkX2V4Y2VwdGVkCisgKgorICogQ2hlY2sgaWYg dGhlIHJlbGF0aW9uICdyZWxpZCcgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQ VCBjbGF1c2UKKyAqIG9mIHRoZSBnaXZlbiBwdWJsaWNhdGlvbi4KKyAqLworYm9vbAoraXNfcmVs aWRfZXhjZXB0ZWQoT2lkIHJlbGlkLCBPaWQgcHViaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwli b29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElP TlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgIE9iamVjdElkR2V0RGF0 dW0ocHViaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJRm9ybV9wZ19w dWJsaWNhdGlvbl9yZWwgcHJmb3JtOworCQkKKwkJcHJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRp b25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJcmVzdWx0ID0gcHJmb3JtLT5wcmV4Y2VwdDsKKwor CQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwl9CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAq IGlzX3JlbGlkX29yX2FuY2VzdG9yX2V4Y2VwdGVkCisgKgorICogQ2hlY2sgaWYgdGhlIHJlbGF0 aW9uICdyZWxpZCcgb3IgYW55IG9mIGl0cyBwYXJ0aXRpb24gYW5jZXN0b3JzIGFyZQorICogZXhw bGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlIGdpdmVuIHB1Ymxp Y2F0aW9uLgorICovCitzdGF0aWMgYm9vbAoraXNfcmVsaWRfb3JfYW5jZXN0b3JfZXhjZXB0ZWQo T2lkIHJlbGlkLCBPaWQgcHViaWQpCit7CisJTGlzdAkgICAqYW5jZXN0b3JzOworCUxpc3RDZWxs ICAgKmxjOworCWJvb2wJCWluX2V4Y2VwdCA9IGZhbHNlOworCisJLyogQ2hlY2sgdGhlIHJlbGF0 aW9uIGl0c2VsZiBmaXJzdCAqLworCWlmIChpc19yZWxpZF9leGNlcHRlZChyZWxpZCwgcHViaWQp KQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qIENoZWNrIHRoZSBpbmhlcml0YW5jZSBjaGFpbiAqLwor CWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKworCWZvcmVhY2go bGMsIGFuY2VzdG9ycykKKwl7CisJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7CisK KwkJaWYgKGlzX3JlbGlkX2V4Y2VwdGVkKGFuY2VzdG9yLCBwdWJpZCkpCisJCXsKKwkJCWluX2V4 Y2VwdCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0KKworCWxpc3RfZnJlZShhbmNlc3RvcnMp OworCisJcmV0dXJuIGluX2V4Y2VwdDsKK30KKworLyoKKyAqIGlzX3JlbGlkX3B1Ymxpc2hlZAor ICoKKyAqIENoZWNrIHdoZXRoZXIgYSBnaXZlbiB0YWJsZSBvciBpdHMgc2NoZW1hIGlzIGluY2x1 ZGVkIGluIHRoZSBzcGVjaWZpZWQKKyAqIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgYm9vbAor aXNfcmVsaWRfcHVibGlzaGVkKE9pZCByZWxpZCwgT2lkIHB1YmlkKQoreworCUhlYXBUdXBsZQl0 dXA7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJaWYg KEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCWJvb2wJCXB1Ymxpc2hlZCA9IGZhbHNlOwor CQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwcmZvcm07CisKKwkJcHJmb3JtID0gKEZvcm1fcGdf cHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJcHVibGlzaGVkID0gIXByZm9ybS0+ cHJleGNlcHQ7CisKKwkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwkJaWYgKHB1Ymxpc2hlZCkK KwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBTZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVC TElDQVRJT05OQU1FU1BBQ0VNQVAsCisJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKGdldF9yZWxf bmFtZXNwYWNlKHJlbGlkKSksCisJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7Cit9 CisKKy8qCisgKiBpc19yZWxpZF9vcl9hbmNlc3Rvcl9wdWJsaXNoZWQKKyAqCisgKiBDaGVjayB3 aGV0aGVyIGEgZ2l2ZW4gdGFibGUgb3IgaXRzIHNjaGVtYSBvciBhbnkgb2YgaXRzIHBhcnRpdGlv biBhbmNlc3RvcnMsCisgKiBvciBpdHMgc2NoZW1hIGluY2x1ZGVkIGluIHRoZSBzcGVjaWZpZWQg cHVibGljYXRpb24KKyAqLworc3RhdGljIGJvb2wKK2lzX3JlbGlkX29yX2FuY2VzdG9yX3B1Ymxp c2hlZChPaWQgcmVsaWQsIE9pZCBwdWJpZCkKK3sKKwlpZiAoaXNfcmVsaWRfcHVibGlzaGVkKHJl bGlkLCBwdWJpZCkpCisJCXJldHVybiB0cnVlOworCWVsc2UKKwl7CisJCUxpc3QJICAgKmFuY2Vz dG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKworCQlmb3JlYWNoX29pZChh bmNfb2lkLCBhbmNlc3RvcnMpCisJCXsKKwkJCWlmIChpc19yZWxpZF9wdWJsaXNoZWQoYW5jX29p ZCwgcHViaWQpKQorCQkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOwor fQorCisvKgorICogcGdfZ2V0X3B1YmxpY2F0aW9uX2VmZmVjdGl2ZV90YWJsZXMKKyAqCisgKiBH aXZlbiBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgYW5kIGEgbGlzdCBvZiBwdWJsaWNhdGlvbnMs IGNhbGN1bGF0ZSB0aGUgc2V0CisgKiBvZiByZWxhdGlvbnMgdGhhdCBhcmUgZWZmZWN0aXZlbHkg cHVibGlzaGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IKKyAqICJGT1IgQUxMIFRBQkxFUyIgcHVi bGljYXRpb25zIHRoYXQgdXNlICJFWENFUFQgVEFCTEUiIGZpbHRlcnMuCisgKgorICogVGhlIGZ1 bmN0aW9uIHJldHVybnMgYSBtaW5pbWFsIHNldCBvZiByZWxhdGlvbnMgdGhhdCBjb2xsZWN0aXZl bHkKKyAqIGluY2x1ZGUgYWxsIG5vbi1leGNsdWRlZCBsZWFmIHBhcnRpdGlvbnMgaW4gdGhlIHBh cnRpdGlvbiBoaWVyYXJjaHkuCisgKi8KK0RhdHVtCitwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0 aXZlX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0 eDsKKwlMaXN0CSAgICpyZXN1bHRzOworCisJaWYgKFNSRl9JU19GSVJTVENBTEwoKSkKKwl7CisJ CU9pZAkJCXJvb3RfcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOworCQlBcnJheVR5cGUgICpwdWJf bmFtZXNfYXJyYXkgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoMSk7CisJCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKKwkJTGlzdAkgICAqcHViX29pZHMgPSBOSUw7CisJCURhdHVtCSAgICpwdWJf ZGF0dW1zOworCQlib29sCSAgICpwdWJfbnVsbHM7CisJCWludAkJCXB1Yl9jb3VudDsKKwkJVHVw bGVEZXNjCXR1cGRlc2M7CisJCUxpc3QJICAgKmZpbmFsX291dHB1dCA9IE5JTDsKKwkJYm9vbAkJ aGFzX2NsZWFuX2FsbF90YWJsZXNfcHViID0gZmFsc2U7CisJCUxpc3QJICAgKmV4Y2VwdF9wdWJf bmFtZXMgPSBOSUw7CisJCU9pZAkJCWV4Y2VwdF9wdWJfaWQgPSBJbnZhbGlkT2lkOworCisJCUFz c2VydChnZXRfcmVsX3JlbGtpbmQocm9vdF9yZWxpZCkgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSk7CisKKwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCisJCWRlY29uc3Ry dWN0X2FycmF5KHB1Yl9uYW1lc19hcnJheSwgVEVYVE9JRCwgLTEsIGZhbHNlLCAnaScsCisJCQkJ CQkgICZwdWJfZGF0dW1zLCAmcHViX251bGxzLCAmcHViX2NvdW50KTsKKworCQkvKiBCdWlsZCB0 aGUgbGlzdCBvZiBwdWJfb2lkcyAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IHB1Yl9jb3VudDsg aSsrKQorCQl7CisJCQlpZiAoIXB1Yl9udWxsc1tpXSkKKwkJCXsKKwkJCQljaGFyCSAgICpwdWJu YW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwdWJfZGF0dW1zW2ldKTsKKworCQkJCXB1Yl9vaWRz ID0gbGFwcGVuZF9vaWQocHViX29pZHMsIGdldF9wdWJsaWNhdGlvbl9vaWQocHVibmFtZSwgZmFs c2UpKTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIERldGVybWluZSB3aGV0aGVyIHRoZSBleHBl bnNpdmUgZXhwYW5zaW9uIHN0ZXAgY2FuIGJlIHNraXBwZWQuIElmCisJCSAqIGFueSBwdWJsaWNh dGlvbiBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIHdpdGhvdXQgYW4gRVhDRVBUCisJ CSAqIGNsYXVzZSwgdGhlIHJvb3QgcmVsYXRpb24gYWxvbmUgaXMgc3VmZmljaWVudCBhcyB0aGUg cmVzdWx0LgorCQkgKi8KKwkJZm9yZWFjaF9vaWQocHVib2lkLCBwdWJfb2lkcykKKwkJeworCQkJ SGVhcFR1cGxlCXB1YlR1cDsKKwkJCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybTsKKworCQkJ cHViVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBVQkxJQ0FUSU9OT0lELCBPYmplY3RJZEdldERhdHVt KHB1Ym9pZCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHB1YlR1cCkpCisJCQkJY29udGlu dWU7CisKKwkJCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHB1YlR1 cCk7CisJCQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCQkJeworCQkJCS8qIENoZWNrIHdo ZXRoZXIgdGhpcyBwdWJsaWNhdGlvbiBkZWZpbmVzIGFueSBFWENFUFQgZW50cmllcyAqLworCQkJ CWlmIChwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdF90YWJsZShwdWJvaWQpKQorCQkJCXsKKwkJ CQkJZXhjZXB0X3B1Yl9uYW1lcyA9IGxhcHBlbmQoZXhjZXB0X3B1Yl9uYW1lcywKKwkJCQkJCQkJ CQkJICAgbWFrZVN0cmluZyhwdWJmb3JtLT5wdWJuYW1lLmRhdGEpKTsKKwkJCQkJZXhjZXB0X3B1 Yl9pZCA9IHB1YmZvcm0tPm9pZDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogVGhp cyBwdWJsaWNhdGlvbiBpbmNsdWRlcyBhbGwgdGFibGVzIHdpdGhvdXQgZXhjZXB0ICovCisJCQkJ CWhhc19jbGVhbl9hbGxfdGFibGVzX3B1YiA9IHRydWU7CisJCQkJfQorCQkJfQorCisJCQlSZWxl YXNlU3lzQ2FjaGUocHViVHVwKTsKKwkJfQorCisJCWlmIChsaXN0X2xlbmd0aChleGNlcHRfcHVi X25hbWVzKSA+IDEpCisJCXsKKwkJCVN0cmluZ0luZm8JcHViX25hbWVzID0gbWFrZVN0cmluZ0lu Zm8oKTsKKworCQkJR2V0UHVibGljYXRpb25zU3RyKGV4Y2VwdF9wdWJfbmFtZXMsIHB1Yl9uYW1l cywgdHJ1ZSk7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY29tYmluZSBwdWJsaWNhdGlv bnMgdGhhdCBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXMiKSwKKwkJCQkJZXJyZGV0YWlsKCJU aGUgZm9sbG93aW5nIHB1YmxpY2F0aW9ucyBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXM6ICVz LiIsCisJCQkJCQkJICBwdWJfbmFtZXMtPmRhdGEpKTsKKwkJfQorCisJCS8qIFJldHVybiByb290 IGltbWVkaWF0ZWx5IGlmIG5vIGZpbHRlcmluZyBsb2dpYyBpcyBuZWVkZWQgKi8KKwkJaWYgKGhh c19jbGVhbl9hbGxfdGFibGVzX3B1YiB8fCAhT2lkSXNWYWxpZChleGNlcHRfcHViX2lkKSkKKwkJ eworCQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9j YWxsX21lbW9yeV9jdHgpOworCQkJZmluYWxfb3V0cHV0ID0gbGlzdF9tYWtlMV9vaWQocm9vdF9y ZWxpZCk7CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCX0KKworCQkv KgorCQkgKiBCdWlsZCB0aGUgZWZmZWN0aXZlIHB1YmxpY2F0aW9uIHJlbGF0aW9uIGxpc3QgZm9y IGEgcGFydGl0aW9uZWQKKwkJICogaGllcmFyY2h5IGluIHRoZSBwcmVzZW5jZSBvZiBhbiBFWENF UFQgcHVibGljYXRpb24uCisJCSAqCisJCSAqIDEuIENvbGxlY3QgYWxsIGxlYWYgcGFydGl0aW9u cyB1bmRlciB0aGUgZ2l2ZW4gcm9vdCByZWxhdGlvbi4KKwkJICoKKwkJICogMi4gQ2xhc3NpZnkg ZWFjaCBsZWFmIGFzIGVpdGhlcjogLSBleGNlcHRlZF9sZWF2ZXM6IGV4cGxpY2l0bHkKKwkJICog ZXhjbHVkZWQgdmlhIHRoZSBFWENFUFQgY2xhdXNlIChlaXRoZXIgZGlyZWN0bHkgb3IgdGhyb3Vn aCBhbnkgb2YKKwkJICogaXRzIGFuY2VzdG9ycyksIG9yIC0gYWxsb3dlZF9sZWF2ZXM6IG5vdCBl eGNsdWRlZCBhbmQgdGhlcmVmb3JlCisJCSAqIHBhcnQgb2YgdGhlIGVmZmVjdGl2ZSBwdWJsaWNh dGlvbiBzZXQuCisJCSAqCisJCSAqIDMuIFJlLWV2YWx1YXRlIGV4Y2x1ZGVkIGxlYXZlcyBhZ2Fp bnN0IG90aGVyIHB1YmxpY2F0aW9ucy4gQSBsZWFmCisJCSAqIGV4Y2x1ZGVkIGluIG9uZSBwdWJs aWNhdGlvbiBtYXkgc3RpbGwgYmUgZWZmZWN0aXZlbHkgaW5jbHVkZWQgaWYgaXQKKwkJICogKG9y IGFueSBvZiBpdHMgYW5jZXN0b3JzLCBvciBpdHMgc2NoZW1hKSBpcyBwdWJsaXNoZWQgdGhyb3Vn aAorCQkgKiBhbm90aGVyIHB1YmxpY2F0aW9uLiBTdWNoIGxlYXZlcyBhcmUgYWRkZWQgYmFjayB0 byBhbGxvd2VkX2xlYXZlcy4KKwkJICoKKwkJICogNC4gQm90dG9tLXVwIGNvbGxhcHNlIG9mIHBh cnRpdGlvbiBicmFuY2hlcy4gRm9yIGVhY2ggcGFydGl0aW9uZWQKKwkJICogdGFibGUgaW4gdGhl IGhpZXJhcmNoeTogLSBJZiAqYWxsKiBvZiBpdHMgbGVhZiBwYXJ0aXRpb25zIGFyZQorCQkgKiBw cmVzZW50IGluIGFsbG93ZWRfbGVhdmVzLCB0aGUgcGFyZW50IGNhbiByZXByZXNlbnQgdGhlIGVu dGlyZQorCQkgKiBicmFuY2guIC0gU3VjaCBwYXJlbnRzIGFyZSBhZGRlZCBhcyBjYW5kaWRhdGVz LCBhbGxvd2luZworCQkgKiBoaWdoZXItbGV2ZWwgcmVwcmVzZW50YXRpb24gaW5zdGVhZCBvZiBs aXN0aW5nIGV2ZXJ5IGxlYWYKKwkJICogaW5kaXZpZHVhbGx5LgorCQkgKgorCQkgKiA1LiBEZWR1 cGxpY2F0ZSBhbmQgbm9ybWFsaXplIHRoZSByZXN1bHQuIFJlbW92ZSBhbnkgcmVsYXRpb24gd2hv c2UKKwkJICogYW5jZXN0b3IgaXMgYWxyZWFkeSBzZWxlY3RlZCBhcyBhIGNhbmRpZGF0ZS4gVGhp cyBlbnN1cmVzIHRoZSBmaW5hbAorCQkgKiBvdXRwdXQgY29udGFpbnMgb25seSB0aGUgaGlnaGVz dC1sZXZlbCByZXByZXNlbnRhdGl2ZSBmb3IgZWFjaAorCQkgKiBmdWxseS1hbGxvd2VkIGJyYW5j aCBhbmQgYXZvaWRzIHJlZHVuZGFudCBlbnRyaWVzLgorCQkgKgorCQkgKiBUaGUgZmluYWxfb3V0 cHV0IHRoZXJlZm9yZSBjb250YWlucyBhIG1pbmltYWwsIG5vbi1yZWR1bmRhbnQgc2V0IG9mCisJ CSAqIHJlbGF0aW9ucyB0aGF0IGFjY3VyYXRlbHkgcmVwcmVzZW50cyB0aGUgZWZmZWN0aXZlIHB1 YmxpY2F0aW9uIHNldAorCQkgKiBhZnRlciBjb25zaWRlcmluZyBFWENFUFQgcnVsZXMgYW5kIG11 bHRpcGxlIHB1YmxpY2F0aW9ucy4KKwkJICovCisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqYWxs X3RhYmxlczsKKwkJCUxpc3QJICAgKmFsbF9sZWF2ZXMgPSBOSUw7CisJCQlMaXN0CSAgICpleGNl cHRlZF9sZWF2ZXMgPSBOSUw7CisJCQlMaXN0CSAgICphbGxvd2VkX2xlYXZlcyA9IE5JTDsKKwkJ CUxpc3QJICAgKmNhbmRpZGF0ZV9saXN0ID0gTklMOworCisJCQkvKiBHZXQgYWxsIHRoZSBsZWFm IHJlbGF0aW9ucyAqLworCQkJYWxsX2xlYXZlcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0 aW9ucyhhbGxfbGVhdmVzLAorCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0xFQUYsCisJ CQkJCQkJCQkJCQkJCXJvb3RfcmVsaWQpOworCQkJZm9yZWFjaF9vaWQoY3Vycl9yZWxpZCwgYWxs X2xlYXZlcykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEEgbGVhZiB0YWJsZSBpcyBjb25zaWRlcmVk IGV4Y2x1ZGVkIGlmIGl0LCBvciBhbnkgb2YgaXRzCisJCQkJICogYW5jZXN0b3JzLCBpcyBsaXN0 ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlCisJCQkJICogcHVibGljYXRpb24uIE90aGVy d2lzZSwgaXQgcmVtYWlucyBwYXJ0IG9mIHRoZSBlZmZlY3RpdmUKKwkJCQkgKiBwdWJsaWNhdGlv biBzZXQuCisJCQkJICovCisJCQkJaWYgKGlzX3JlbGlkX29yX2FuY2VzdG9yX2V4Y2VwdGVkKGN1 cnJfcmVsaWQsIGV4Y2VwdF9wdWJfaWQpKQorCQkJCQlleGNlcHRlZF9sZWF2ZXMgPSBsYXBwZW5k X29pZChleGNlcHRlZF9sZWF2ZXMsIGN1cnJfcmVsaWQpOworCQkJCWVsc2UKKwkJCQkJYWxsb3dl ZF9sZWF2ZXMgPSBsYXBwZW5kX29pZChhbGxvd2VkX2xlYXZlcywgY3Vycl9yZWxpZCk7CisJCQl9 CisKKwkJCS8qCisJCQkgKiBBIHRhYmxlIGV4Y2x1ZGVkIGJ5IHRoZSBFWENFUFQgY2xhdXNlIG9m IG9uZSBwdWJsaWNhdGlvbiBtYXkKKwkJCSAqIHN0aWxsIGJlIGluY2x1ZGVkIGlmIGl0IGlzIGV4 cGxpY2l0bHkgcHVibGlzaGVkLCBvciBwdWJsaXNoZWQKKwkJCSAqIHZpYSBpdHMgc2NoZW1hIG9y IGFueSBvZiBpdHMgYW5jZXN0b3JzLCBpbiBhbm90aGVyIHB1YmxpY2F0aW9uLgorCQkJICovCisJ CQlmb3JlYWNoX29pZChjdXJyX3JlbGlkLCBleGNlcHRlZF9sZWF2ZXMpCisJCQl7CisJCQkJZm9y ZWFjaF9vaWQocHViaWQsIHB1Yl9vaWRzKQorCQkJCXsKKwkJCQkJLyogU2tpcCB0aGUgcHVibGlj YXRpb24gdGhhdCBleGNsdWRlZCB0aGlzIHJlbGF0aW9uLiAqLworCQkJCQlpZiAocHViaWQgPT0g ZXhjZXB0X3B1Yl9pZCkKKwkJCQkJCWNvbnRpbnVlOworCisJCQkJCWlmIChpc19yZWxpZF9vcl9h bmNlc3Rvcl9wdWJsaXNoZWQoY3Vycl9yZWxpZCwgcHViaWQpKQorCQkJCQkJYWxsb3dlZF9sZWF2 ZXMgPSBsYXBwZW5kX29pZChhbGxvd2VkX2xlYXZlcywKKwkJCQkJCQkJCQkJCQkgY3Vycl9yZWxp ZCk7CisJCQkJfQorCQkJfQorCisJCQkvKiBCb3R0b20tVXAgQ29sbGFwc2UuIENoZWNrIGlmIHBh cmVudHMgY2FuIHJlcHJlc2VudCBjaGlsZHJlbiAqLworCQkJYWxsX3RhYmxlcyA9IGZpbmRfYWxs X2luaGVyaXRvcnMocm9vdF9yZWxpZCwgQWNjZXNzU2hhcmVMb2NrLCBOVUxMKTsKKwkJCWNhbmRp ZGF0ZV9saXN0ID0gbGlzdF9jb3B5KGFsbG93ZWRfbGVhdmVzKTsKKwkJCWZvcmVhY2hfb2lkKGN1 cnJfcmVsaWQsIGFsbF90YWJsZXMpCisJCQl7CisJCQkJTGlzdAkgICAqYnJhbmNoX2xlYXZlcyA9 IE5JTDsKKwkJCQlib29sCQlhbGxfYWxsb3dlZCA9IHRydWU7CisKKwkJCQkvKiBPbmx5IGNvbnNp ZGVyIHBhcnRpdGlvbmVkIHRhYmxlcyBhcyBjb2xsYXBzZSBjYW5kaWRhdGVzICovCisJCQkJaWYg KGdldF9yZWxfcmVsa2luZChjdXJyX3JlbGlkKSAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KQorCQkJCQljb250aW51ZTsKKworCQkJCWJyYW5jaF9sZWF2ZXMgPSBHZXRQdWJQYXJ0aXRpb25P cHRpb25SZWxhdGlvbnMoYnJhbmNoX2xlYXZlcywKKwkJCQkJCQkJCQkJCQkJCSAgIFBVQkxJQ0FU SU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCQkJCSAgIGN1cnJfcmVsaWQpOworCQkJCWlmIChi cmFuY2hfbGVhdmVzID09IE5JTCkKKwkJCQkJY29udGludWU7CisKKwkJCQlmb3JlYWNoX29pZChs Y2Jfb2lkLCBicmFuY2hfbGVhdmVzKQorCQkJCXsKKwkJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQo YWxsb3dlZF9sZWF2ZXMsIGxjYl9vaWQpKQorCQkJCQl7CisJCQkJCQlhbGxfYWxsb3dlZCA9IGZh bHNlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlpZiAoYWxsX2FsbG93ZWQp CisJCQkJCWNhbmRpZGF0ZV9saXN0ID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZChjYW5kaWRhdGVf bGlzdCwKKwkJCQkJCQkJCQkJCQkJCWN1cnJfcmVsaWQpOworCQkJfQorCisJCQkvKgorCQkJICog RGVkdXBsaWNhdGU6IEZpbHRlciBvdXQgYW55IHJlbGF0aW9uIHdob3NlIGFuY2VzdG9yIGlzIGFs cmVhZHkKKwkJCSAqIHByZXNlbnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LiBUaGlzIGVuc3VyZXMg d2Ugb25seSByZXR1cm4gdGhlCisJCQkgKiAiaGlnaGVzdCIgcmVwcmVzZW50YXRpdmUgZm9yIGVh Y2ggYnJhbmNoLgorCQkJICovCisJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJCWZvcmVhY2hfb2lkKGN1cnJf cmVsaWQsIGNhbmRpZGF0ZV9saXN0KQorCQkJeworCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdl dF9wYXJ0aXRpb25fYW5jZXN0b3JzKGN1cnJfcmVsaWQpOworCQkJCWJvb2wJCWFuY2VzdG9yX2Fs cmVhZHlfaW5jbHVkZWQgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogQ2hlY2sgaWYgYW55IGFu Y2VzdG9yIG9mIHRoZSBjdXJyZW50IHJlbGF0aW9uIGV4aXN0cyBpbiB0aGUKKwkJCQkgKiBjYW5k aWRhdGUgbGlzdC4gSWYgc28sIHRoaXMgcmVsYXRpb24gaXMgcmVkdW5kYW50LgorCQkJCSAqLwor CQkJCWZvcmVhY2hfb2lkKGFuY2VzdG9yX3JlbGlkLCBhbmNlc3RvcnMpCisJCQkJeworCQkJCQlp ZiAobGlzdF9tZW1iZXJfb2lkKGNhbmRpZGF0ZV9saXN0LCBhbmNlc3Rvcl9yZWxpZCkpCisJCQkJ CXsKKwkJCQkJCWFuY2VzdG9yX2FscmVhZHlfaW5jbHVkZWQgPSB0cnVlOworCQkJCQkJYnJlYWs7 CisJCQkJCX0KKwkJCQl9CisKKwkJCQlpZiAoIWFuY2VzdG9yX2FscmVhZHlfaW5jbHVkZWQpCisJ CQkJCWZpbmFsX291dHB1dCA9IGxhcHBlbmRfb2lkKGZpbmFsX291dHB1dCwgY3Vycl9yZWxpZCk7 CisKKwkJCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKwkJCX0KKworCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOworCQl9CisKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOworCQkvKiBDb25zdHJ1Y3Qg YSB0dXBsZSBkZXNjcmlwdG9yIGZvciB0aGUgcmVzdWx0IHJvd3MuICovCisJCXR1cGRlc2MgPSBD cmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygyKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSAxLCAibnNwbmFtZSIsCisJCQkJCQkgICBURVhUT0lELCAtMSwgMCk7CisJ CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInJlbG5hbWUiLAor CQkJCQkJICAgVEVYVE9JRCwgLTEsIDApOworCisJCWZ1bmNjdHgtPnR1cGxlX2Rlc2MgPSBCbGVz c1R1cGxlRGVzYyh0dXBkZXNjKTsKKwkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gZmluYWxfb3V0cHV0 OworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKiBTUkYg UGVyLWNhbGwgUmVzdW1lICovCisJZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisJcmVz dWx0cyA9IChMaXN0ICopIGZ1bmNjdHgtPnVzZXJfZmN0eDsKKworCWlmIChmdW5jY3R4LT5jYWxs X2NudHIgPCBsaXN0X2xlbmd0aChyZXN1bHRzKSkKKwl7CisJCU9pZAkJCWN1cnJlbnRfcmVsaWQg PSBsaXN0X250aF9vaWQocmVzdWx0cywgKGludCkgZnVuY2N0eC0+Y2FsbF9jbnRyKTsKKwkJSGVh cFR1cGxlCXJldHR1cGxlOworCQlEYXR1bQkJdmFsdWVzWzJdOworCQlib29sCQludWxsc1syXSA9 IHtmYWxzZSwgZmFsc2V9OworCisJCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZ2V0 X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKGN1cnJlbnRfcmVsaWQpKSk7CisJCXZh bHVlc1sxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZ2V0X3JlbF9uYW1lKGN1cnJlbnRfcmVsaWQp KTsKKworCQlyZXR0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShmdW5jY3R4LT50dXBsZV9kZXNjLCB2 YWx1ZXMsIG51bGxzKTsKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIEhlYXBUdXBsZUdldERh dHVtKHJldHR1cGxlKSk7CisJfQorCisJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworfQorCiAv KgogICogR2V0IGluZm9ybWF0aW9uIG9mIHRoZSB0YWJsZXMgaW4gdGhlIGdpdmVuIHB1YmxpY2F0 aW9uIGFycmF5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRl eCBiMGE1M2MxN2RkMC4uMWRlZTMxYTg2YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKQEAgLTMwNTEsNiArMzA1MSw4IEBAIGZldGNoX3JlbGF0aW9uX2xpc3QoV2Fs UmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKIAkJCQkJCSBwdWJfbmFt ZXMuZGF0YSk7CiAJfQogCisJZWxvZyhMT0csICJmZXRjaF9yZWxhdGlvbl9saXN0OiBleGVjdXRp bmcgcXVlcnkgdG8gZmV0Y2ggZWZmZWN0aXZlIHJlbGF0aW9uczogXG4lcyIsCisJCSBjbWQuZGF0 YSk7CiAJcGZyZWUocHViX25hbWVzLmRhdGEpOwogCiAJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25u LCBjbWQuZGF0YSwgY29sdW1uX2NvdW50LCB0YWJsZVJvdyk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBlZWU5MDlkOTEyYi4uYTZiNjQzN2RhNTgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNzE3 LDIxICs3MTcsMjggQEAgY29weV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwg aW50IG1heHJlYWQpCiAgKiBtZXNzYWdlIHByb3ZpZGVzIGR1cmluZyByZXBsaWNhdGlvbi4KICAq CiAgKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmV0dXJucyAoYSkgdGhlIHJlbGF0aW9uIHF1YWxpZmlj YXRpb25zIHRvIGJlIHVzZWQgaW4KLSAqIHRoZSBDT1BZIGNvbW1hbmQsIGFuZCAoYikgd2hldGhl ciB0aGUgcmVtb3RlIHJlbGF0aW9uIGhhcyBwdWJsaXNoZWQgYW55Ci0gKiBnZW5lcmF0ZWQgY29s dW1uLgorICogdGhlIENPUFkgY29tbWFuZCwgKGIpIHdoZXRoZXIgdGhlIHJlbW90ZSByZWxhdGlv biBoYXMgcHVibGlzaGVkIGFueQorICogZ2VuZXJhdGVkIGNvbHVtbiwgYW5kIChjKSBjb21wdXRl cyB0aGUgZWZmZWN0aXZlIHNldCBvZiByZWxhdGlvbnMgdG8gYmUgdXNlZAorICogYXMgQ09QWSBz b3VyY2VzIHdoZW4gZXhjbHVzaW9ucyBhcmUgcHJlc2VudC4gV2hlbiBubyBleGNsdXNpb25zIGV4 aXN0LCB0aGUKKyAqIGxpc3QgcmVtYWlucyBlbXB0eSBhbmQgdGhlIHJvb3QgcmVsYXRpb24gaXMg dXNlZCBhcy1pcy4gV2hlbiBleGNsdXNpb25zCisgKiBleGlzdCwgdGhlIGxpc3QgY29udGFpbnMg bGVhZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90IGV4Y2x1ZGVkIGFuZCBtdXN0IGJlCisgKiBjb21i aW5lZCB1c2luZyBVTklPTiBBTEwuCiAgKi8KIHN0YXRpYyB2b2lkCiBmZXRjaF9yZW1vdGVfdGFi bGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24g KmxyZWwsCi0JCQkJCQlMaXN0ICoqcXVhbCwgYm9vbCAqZ2VuY29sX3B1Ymxpc2hlZCkKKwkJCQkJ CUxpc3QgKipxdWFsLCBib29sICpnZW5jb2xfcHVibGlzaGVkLAorCQkJCQkJTGlzdCAqKmVmZmVj dGl2ZV9yZWxhdGlvbnMpCiB7CiAJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0luZm9E YXRhIGNtZDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKLQlPaWQJCQl0YWJsZVJvd1tdID0ge09J RE9JRCwgQ0hBUk9JRCwgQ0hBUk9JRH07CisJT2lkCQkJdGFibGVSb3dbXSA9IHtPSURPSUQsIENI QVJPSUQsIENIQVJPSUQsIEJPT0xPSUR9OwogCU9pZAkJCWF0dHJSb3dbXSA9IHtJTlQyT0lELCBU RVhUT0lELCBPSURPSUQsIEJPT0xPSUQsIEJPT0xPSUR9OwogCU9pZAkJCXF1YWxSb3dbXSA9IHtU RVhUT0lEfTsKKwlPaWQJCQlmaWx0ZXJ0YWJsZVJvd1tdID0ge1RFWFRPSUQsIFRFWFRPSUR9Owog CWJvb2wJCWlzbnVsbDsKIAlpbnQJCQluYXR0OworCWJvb2wJCWlzX3BhcnRpdGlvbjsKIAlTdHJp bmdJbmZvCXB1Yl9uYW1lcyA9IE5VTEw7CiAJQml0bWFwc2V0ICAqaW5jbHVkZWRfY29scyA9IE5V TEw7CiAJaW50CQkJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVw V29ya2VyV2FsUmN2Q29ubik7CkBAIC03NDEsNyArNzQ4LDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxl X2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICps cmVsLAogCiAJLyogRmlyc3QgZmV0Y2ggT2lkIGFuZCByZXBsaWNhIGlkZW50aXR5LiAqLwogCWlu aXRTdHJpbmdJbmZvKCZjbWQpOwotCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIlNFTEVDVCBjLm9p ZCwgYy5yZWxyZXBsaWRlbnQsIGMucmVsa2luZCIKKwlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJT RUxFQ1QgYy5vaWQsIGMucmVscmVwbGlkZW50LCBjLnJlbGtpbmQsIGMucmVsaXNwYXJ0aXRpb24i CiAJCQkJCSAiICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyIKIAkJCQkJICIgIElOTkVSIEpP SU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiIKIAkJCQkJICIgICAgICAgIE9OIChjLnJlbG5h bWVzcGFjZSA9IG4ub2lkKSIKQEAgLTc3MSw2ICs3NzgsOCBAQCBmZXRjaF9yZW1vdGVfdGFibGVf aW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxy ZWwsCiAJQXNzZXJ0KCFpc251bGwpOwogCWxyZWwtPnJlbGtpbmQgPSBEYXR1bUdldENoYXIoc2xv dF9nZXRhdHRyKHNsb3QsIDMsICZpc251bGwpKTsKIAlBc3NlcnQoIWlzbnVsbCk7CisJaXNfcGFy dGl0aW9uID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihzbG90LCA0LCAmaXNudWxsKSk7CisJ QXNzZXJ0KCFpc251bGwpOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsK IAl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CkBAIC05NTUsNiArOTY0LDc1IEBAIGZldGNoX3Jl bW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBS ZWxhdGlvbiAqbHJlbCwKIAogCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKIAorCWlmIChzZXJ2 ZXJfdmVyc2lvbiA+PSAxOTAwMDAgJiYgIWlzX3BhcnRpdGlvbiAmJgorCQlscmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJeworCQlyZXNldFN0cmluZ0luZm8oJmNt ZCk7CisKKwkJLyoKKwkJICogVGhpcyBxdWVyeSByZWN1cnNpdmVseSB0cmF2ZXJzZXMgdGhlIGlu aGVyaXRhbmNlIChwYXJ0aXRpb24pIHRyZWUKKwkJICogc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4g dGFibGUgT0lEIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGxlYWYKKwkJICogcmVsYXRpb25zIHNob3Vs ZCBiZSBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uIEV4Y2x1c2lvbiBwcm9wYWdhdGVzCisJCSAq IGZyb20gcGFyZW50IHRvIGNoaWxkLCBhbmQgYSByZWxhdGlvbiBpcyBhbHNvIHRyZWF0ZWQgYXMg ZXhjbHVkZWQgaWYKKwkJICogaXQgaXMgZXhwbGljaXRseSBtYXJrZWQgd2l0aCBwcmV4Y2VwdCA9 IHRydWUgaW4gcGdfcHVibGljYXRpb25fcmVsCisJCSAqIGZvciB0aGUgc3BlY2lmaWVkIHB1Ymxp Y2F0aW9ucy4gVGhlIGZpbmFsIHJlc3VsdCByZXR1cm5zIG9ubHkgbm9uCisJCSAqIGV4Y2x1ZGVk IGxlYWYgcmVsYXRpb25zLgorCQkgKi8KKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiU0VMRUNU IG5zcG5hbWUsIHJlbG5hbWUgRlJPTSBwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3RhYmxl cygldSwgQVJSQVlbJXNdKTsiLAorCQkJCQkJIGxyZWwtPnJlbW90ZWlkLAorCQkJCQkJIHB1Yl9u YW1lcy0+ZGF0YSk7CisKKwkJZWxvZyhMT0csICJFeGVjdXRpbmcgcXVlcnkgdG8gZ2V0IHRoZSBw YXJ0aXRpb24gdGFibGVzIHRvIGJlIGNvcGllZDpcbiVzIiwgY21kLmRhdGEpOworCQlyZXMgPSB3 YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwKKwkJCQkJCSAgbGVu Z3Rob2YoZmlsdGVydGFibGVSb3cpLCBmaWx0ZXJ0YWJsZVJvdyk7CisKKwkJaWYgKHJlcy0+c3Rh dHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkJZXJybXNnKCJjb3VsZCBub3QgZ2V0 IGVmZmVjdGl2ZSBpbmNsdWRlZCB0YWJsZSBsaXN0IGZvciB0YWJsZSBcIiVzLiVzXCIgZnJvbSBw dWJsaXNoZXI6ICVzIiwKKwkJCQkJCSAgIG5zcG5hbWUsIHJlbG5hbWUsIHJlcy0+ZXJyKSk7CisK KwkJLyoKKwkJICogU3RvcmUgdGhlIHRhYmxlcyBhcyBhIGxpc3Qgb2Ygc2NoZW1hbmFtZSBhbmQg dGFibGVuYW1lLgorCQkgKi8KKwkJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMt PnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJCXdoaWxlICh0dXBsZXN0b3JlX2dl dHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkKKwkJeworCQkJ UXVhbGlmaWVkUmVsYXRpb25OYW1lICpyZWxpbmZvID0gcGFsbG9jX29iamVjdChRdWFsaWZpZWRS ZWxhdGlvbk5hbWUpOworCisJCQlyZWxpbmZvLT5uc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCkpOworCQkJQXNzZXJ0KCFpc251bGwpOwor CQkJcmVsaW5mby0+cmVsbmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNs b3QsIDIsICZpc251bGwpKTsKKwkJCUFzc2VydCghaXNudWxsKTsKKworCQkJKmVmZmVjdGl2ZV9y ZWxhdGlvbnMgPSBsYXBwZW5kKCplZmZlY3RpdmVfcmVsYXRpb25zLCByZWxpbmZvKTsKKworCQkJ RXhlY0NsZWFyVHVwbGUoc2xvdCk7CisJCX0KKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVT bG90KHNsb3QpOworCisJCS8qCisJCSAqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gaW4g dGhlIGVmZmVjdGl2ZV9yZWxhdGlvbnMgbGlzdCBhbmQgaXQKKwkJICogZXF1YWxzIHRoZSB0YWJs ZSBiZWluZyBwcm9jZXNzZWQsIHRoYXQgbWVhbnMgbm8gYWN0dWFsIGV4Y2x1c2lvbgorCQkgKiBv Y2N1cnJlZC4KKwkJICovCisJCWlmIChsaXN0X2xlbmd0aCgqZWZmZWN0aXZlX3JlbGF0aW9ucykg PT0gMSkKKwkJeworCQkJUXVhbGlmaWVkUmVsYXRpb25OYW1lICpyZWxpbmZvOworCisJCQlyZWxp bmZvID0gbGluaXRpYWwoKmVmZmVjdGl2ZV9yZWxhdGlvbnMpOworCQkJaWYgKHN0cmNtcChuc3Bu YW1lLCByZWxpbmZvLT5uc3BuYW1lKSA9PSAwICYmCisJCQkJc3RyY21wKHJlbG5hbWUsIHJlbGlu Zm8tPnJlbG5hbWUpID09IDApCisJCQl7CisJCQkJcGZyZWUocmVsaW5mby0+bnNwbmFtZSk7CisJ CQkJcGZyZWUocmVsaW5mby0+cmVsbmFtZSk7CisJCQkJbGlzdF9mcmVlX2RlZXAoKmVmZmVjdGl2 ZV9yZWxhdGlvbnMpOworCQkJCSplZmZlY3RpdmVfcmVsYXRpb25zID0gTklMOworCQkJfQorCQl9 CisJfQorCiAJLyoKIAkgKiBHZXQgcmVsYXRpb24ncyByb3cgZmlsdGVyIGV4cHJlc3Npb25zLiBE SVNUSU5DVCBhdm9pZHMgdGhlIHNhbWUKIAkgKiBleHByZXNzaW9uIG9mIGEgdGFibGUgaW4gbXVs dGlwbGUgcHVibGljYXRpb25zIGZyb20gYmVpbmcgaW5jbHVkZWQKQEAgLTEwNDQsNiArMTEyMiw3 IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVs bWFwZW50cnk7CiAJTG9naWNhbFJlcFJlbGF0aW9uIGxyZWw7CiAJTGlzdAkgICAqcXVhbCA9IE5J TDsKKwlMaXN0CSAgICplZmZlY3RpdmVfcmVsYXRpb25zID0gTklMOwogCVdhbFJjdkV4ZWNSZXN1 bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJQ29weUZyb21TdGF0ZSBjc3RhdGU7CkBA IC0xMDU1LDcgKzExMzQsNyBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAkvKiBHZXQgdGhl IHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAqLwogCWZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGdl dF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSwKIAkJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAmbHJlbCwgJnF1YWwsCi0JCQkJCQkJJmdlbmNvbF9w dWJsaXNoZWQpOworCQkJCQkJCSZnZW5jb2xfcHVibGlzaGVkLCAmZWZmZWN0aXZlX3JlbGF0aW9u cyk7CiAKIAkvKiBQdXQgdGhlIHJlbGF0aW9uIGludG8gcmVsbWFwLiAqLwogCWxvZ2ljYWxyZXBf cmVsbWFwX3VwZGF0ZSgmbHJlbCk7CkBAIC0xMDY3LDkgKzExNDYsNjEgQEAgY29weV90YWJsZShS ZWxhdGlvbiByZWwpCiAJLyogU3RhcnQgY29weSBvbiB0aGUgcHVibGlzaGVyLiAqLwogCWluaXRT dHJpbmdJbmZvKCZjbWQpOwogCisKKwlpZiAoZWZmZWN0aXZlX3JlbGF0aW9ucyAmJiBsaXN0X2xl bmd0aChlZmZlY3RpdmVfcmVsYXRpb25zKSkKKwl7CisJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKwor CQkvKgorCQkgKiBCdWlsZCBhIHNpbmdsZSBDT1BZIGNvbW1hbmQgdG8gc3luY2hyb25pemUgYWxs IHJlc29sdmVkIHJlbGF0aW9ucworCQkgKiBpbnRvIHRoZSByb290IHRhYmxlLgorCQkgKgorCQkg KiBUaGUgYXJyYXkgJ2VmZmVjdGl2ZV9yZWxhdGlvbnMnIGNvbnRhaW5zIHRoZSBsZWFmIHRhYmxl cyBvZgorCQkgKiBwYXJ0aXRpb24gaGllcmFyY2hpZXMsIHdpdGggZXhjbHVkZWQgc3VidHJlZXMg cmVtb3ZlZCBhY2NvcmRpbmcgdG8KKwkJICogdGhlIEVYQ0VQVCBjbGF1c2VzLiBUaGlzIGFwcGxp ZXMgb25seSB3aGVuCisJCSAqICdwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCcgaXMgZW5hYmxl ZCwgc2luY2UgdGhlIGluaXRpYWwgc3luYworCQkgKiBtdXN0IHJvdXRlIGFsbCBjaGFuZ2VzIHRv IHRoZSByb290IHRhYmxlLgorCQkgKgorCQkgKiBXZSBjb25zdHJ1Y3QgYSBVTklPTiBBTEwgcXVl cnkgdGhhdCBjb21iaW5lcyBkYXRhIGZyb20gbXVsdGlwbGUKKwkJICogbGVhZiByZWxhdGlvbnMg aW50byBvbmUgc3ViLUNPUFkgc3RhdGVtZW50LCBlbnN1cmluZyBhbGwgcm93cyBhcmUKKwkJICog Y29waWVkIGNvbnNpc3RlbnRseSBpbnRvIHRoZSByb290IHRhYmxlLgorCQkgKi8KKwkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmY21kLCAiQ09QWSAoXG4iKTsKKwkJZm9yZWFjaF9wdHIoUXVhbGlm aWVkUmVsYXRpb25OYW1lLCByZWxpbmZvLCBlZmZlY3RpdmVfcmVsYXRpb25zKQorCQl7CisJCQlp ZiAoIWZpcnN0KQorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIlVOSU9OIEFMTFxu Iik7CisKKwkJCWZpcnN0ID0gZmFsc2U7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNt ZCwgIlNFTEVDVCAiKTsKKworCQkJLyogSWYgdGhlIHRhYmxlIGhhcyBjb2x1bW5zLCB0aGVuIHNw ZWNpZnkgdGhlIGNvbHVtbnMgKi8KKwkJCWlmIChscmVsLm5hdHRzKQorCQkJeworCQkJCWZvciAo aW50IGkgPSAwOyBpIDwgbHJlbC5uYXR0czsgaSsrKQorCQkJCXsKKwkJCQkJaWYgKGkgPiAwKQor CQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCAiKTsKKworCQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZjbWQsIHF1b3RlX2lkZW50aWZpZXIobHJlbC5hdHRuYW1lc1tpXSkp OworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQs ICIgKiAiKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiIEZST00gICVzXG4iLAorCQkJ CQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihyZWxpbmZvLT5uc3BuYW1lLAorCQkJCQkJ CQkJCQkJCQlyZWxpbmZvLT5yZWxuYW1lKSk7CisJCX0KKworCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICIpXG4iKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiVE8gU1RE T1VUIik7CisJfQogCS8qIFJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBubyByb3cg ZmlsdGVyIG9yIGdlbmVyYXRlZCBjb2x1bW5zICovCi0JaWYgKChscmVsLnJlbGtpbmQgPT0gUkVM S0lORF9SRUxBVElPTiB8fCBscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSkKLQkJJiYgcXVhbCA9PSBOSUwgJiYgIWdlbmNvbF9wdWJsaXNoZWQpCisJZWxzZSBpZiAoKGxy ZWwucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkgIGxyZWwucmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAmJgorCQkJIHF1YWwgPT0gTklMICYmICFnZW5jb2xf cHVibGlzaGVkKQogCXsKIAkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiQ09QWSAlcyIsCiAJCQkJ CQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJlbC5uc3BuYW1lLCBscmVsLnJlbG5hbWUp KTsKQEAgLTExNTgsNiArMTI4OSw3IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCX0KIAog CXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sIGNtZC5kYXRhLCAwLCBO VUxMKTsKKwllbG9nKExPRywgIlRhYmxlc3luYyB3b3JrZXI6IEV4ZWN1dGluZyBxdWVyeSB0byBn ZXQgdGhlIGluaXRpYWwgc3luYyBkYXRhOlxuJXMiLCBjbWQuZGF0YSk7CiAJcGZyZWUoY21kLmRh dGEpOwogCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09QWV9PVVQpCiAJCWVyZXBvcnQo RVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRl eCBkZDM4ZWVmOTMwMy4uY2JiMWEwZTdmZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA3Myw2ICsyMDczLDczIEBAIHNldF9zY2hlbWFfc2Vu dF9pbl9zdHJlYW1lZF90eG4oUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5LCBUcmFuc2FjdGlvbklk IHhpZCkKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KIAorLyoKKyAqIHB1Ymxp Y2F0aW9uX2hhc19wdWJsaXNoYWJsZV9wYXJ0aXRpb25zCisgKgorICogQ2hlY2tzIGlmIHRoZSBw dWJsaWNhdGlvbiBoYXMgYW55IGVmZmVjdGl2ZSBkYXRhIGluIGEgcGFydGl0aW9uIHRyZWUuCisg KiBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIGxlYWYgaXMgTk9UIGV4Y2x1ZGVkLgorICov CitzdGF0aWMgYm9vbAorcHVibGljYXRpb25faGFzX3B1Ymxpc2hhYmxlX3BhcnRpdGlvbnMoT2lk IHJvb3RfcmVsaWQsIE9pZCBwdWJpZCkKK3sKKwlMaXN0CSAgICphbGxfbGVhdmVzID0gTklMOwor CUxpc3QJICAgKmV4Y2VwdF90YWJsZXNfaW5fcHViID0gTklMOworCisJQXNzZXJ0KGdldF9yZWxf cmVsa2luZChyb290X3JlbGlkKSA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKworCWV4 Y2VwdF90YWJsZXNfaW5fcHViID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwK KwkJCQkJCQkJCQkJCSAgCQlQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCisJaWYgKGV4Y2VwdF90 YWJsZXNfaW5fcHViID09IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogR2V0IGFsbCBsZWFm IHJlbGF0aW9ucyBpbiB0aGUgaGllcmFyY2h5ICovCisJYWxsX2xlYXZlcyA9IEdldFB1YlBhcnRp dGlvbk9wdGlvblJlbGF0aW9ucyhOSUwsCisJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0xF QUYsCisJCQkJCQkJCQkJCQlyb290X3JlbGlkKTsKKworCS8qCisJICogVHJhdmVyc2UgbGVhdmVz LiBJZiB3ZSBmaW5kIGV2ZW4gT05FIGxlYWYgdGhhdCBpcyBub3QgZXhjbHVkZWQgYnkgdGhlCisJ ICogcHVibGljYXRpb24ncyBFWENFUFQgbGlzdCwgdGhlIHRyZWUgaXMgZWZmZWN0aXZlLgorCSAq LworCWZvcmVhY2hfb2lkKGN1cnJfcmVsaWQsIGFsbF9sZWF2ZXMpCisJeworCQlib29sCQlyZWxh dGlvbl9pbl9leGNlcHQgPSBmYWxzZTsKKwkJTGlzdAkgICAqYW5jZXN0b3JzOworCisJCS8qIENo ZWNrIGlmIHRoZSBsZWFmIGl0c2VsZiBpcyBhbiBleGNlcHRpb24gKi8KKwkJaWYgKGxpc3RfbWVt YmVyX29pZChleGNlcHRfdGFibGVzX2luX3B1YiwgY3Vycl9yZWxpZCkpCisJCQljb250aW51ZTsK KworCQkvKiBDaGVjayBpZiBhbnkgYW5jZXN0b3IgaXMgYW4gZXhjZXB0aW9uICovCisJCWFuY2Vz dG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKGN1cnJfcmVsaWQpOworCisJCWZvcmVhY2hf b2lkKGFuY2VzdG9yLCBhbmNlc3RvcnMpCisJCXsKKwkJCWlmIChsaXN0X21lbWJlcl9vaWQoZXhj ZXB0X3RhYmxlc19pbl9wdWIsIGFuY2VzdG9yKSkKKwkJCXsKKwkJCQlyZWxhdGlvbl9pbl9leGNl cHQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJbGlzdF9mcmVlKGFuY2VzdG9y cyk7CisKKwkJLyoKKwkJICogSWYgdGhpcyBsZWFmIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIEVYQ0VQ VCBjbGF1c2UsIHRoZSBwdWJsaWNhdGlvbgorCQkgKiBlZmZlY3RpdmVseSBpbmNsdWRlcyBkYXRh IGZyb20gdGhpcyBwYXJ0aXRpb24gdHJlZS4KKwkJICovCisJCWlmICghcmVsYXRpb25faW5fZXhj ZXB0KQorCQl7CisJCQlsaXN0X2ZyZWUoYWxsX2xlYXZlcyk7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJ fQorCX0KKworCWxpc3RfZnJlZShhbGxfbGVhdmVzKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8q CiAgKiBGaW5kIG9yIGNyZWF0ZSBlbnRyeSBpbiB0aGUgcmVsYXRpb24gc2NoZW1hIGNhY2hlLgog ICoKQEAgLTIxMzQsNiArMjIwMSw5IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEg KmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQlib29sCQlhbV9wYXJ0aXRpb24gPSBnZXRfcmVs X3JlbGlzcGFydGl0aW9uKHJlbGlkKTsKIAkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2lu ZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CisJCWJvb2wJCXJv b3RfcHVibGlzaGVkX3ZpYV9hbGx0YWJsZXMgPSBmYWxzZTsKKwkJT2lkCQkJcm9vdF9hbmNlc3Rv ciA9IEludmFsaWRPaWQ7CisJCUxpc3QJICAgKmFuY2VzdG9ycyA9IE5JTDsKIAogCQlHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgJnB1YmlkcywgTlVMTCk7CiAKQEAgLTIyMTQsNiArMjI4 NCwzMyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiBy ZWxhdGlvbikKIAkJZW50cnktPmVzdGF0ZSA9IE5VTEw7CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0 YXRlLCAwLCBzaXplb2YoZW50cnktPmV4cHJzdGF0ZSkpOwogCisJCS8qCisJCSAqIEZvciBwYXJ0 aXRpb25zLCBwcmUtZGV0ZXJtaW5lIGlmIHRoZSB0b3AtbW9zdCBhbmNlc3RvciBpcyBjb3ZlcmVk CisJCSAqIGJ5IGFueSAnRk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uIHRoYXQgdXNlcworCQkg KiAncHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QnIGFuZCBhbiAnRVhDRVBUJyBjbGF1c2UuCisJ CSAqCisJCSAqIFRoaXMgcHJlLWNhbGN1bGF0aW9uIGlzIHZpdGFsIGZvciByZXNvbHZpbmcgb3Zl cmxhcCBjb25mbGljdHM6IGlmIGEKKwkJICogcGFydGl0aW9uIGlzIGV4Y2x1ZGVkIGdsb2JhbGx5 IHZpYSBhbiBFWENFUFQgY2xhdXNlIGJ1dCBpbmNsdWRlZAorCQkgKiBleHBsaWNpdGx5IGVsc2V3 aGVyZSAodGFibGUvc2NoZW1hIGxldmVsKSwgaXQgbXVzdCBzdGlsbCBiZSByb3V0ZWQKKwkJICog dmlhIHRoZSByb290IGlkZW50aXR5IGlmIHRoYXQgcm9vdCBpcyBwdWJsaXNoZWQuCisJCSAqLwor CQlpZiAoYW1fcGFydGl0aW9uKQorCQl7CisJCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2Fu Y2VzdG9ycyhyZWxpZCk7CisJCQlyb290X2FuY2VzdG9yID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7 CisKKwkJCWZvcmVhY2hfcHRyKFB1YmxpY2F0aW9uLCBwdWJpbmZvLCBkYXRhLT5wdWJsaWNhdGlv bnMpCisJCQl7CisJCQkJaWYgKHB1YmluZm8tPmFsbHRhYmxlcyAmJiBwdWJpbmZvLT5wdWJ2aWFy b290ICYmCisJCQkJCXB1YmxpY2F0aW9uX2hhc19wdWJsaXNoYWJsZV9wYXJ0aXRpb25zKHJvb3Rf YW5jZXN0b3IsCisJCQkJCQkJCQkJCQkJCSAgIHB1YmluZm8tPm9pZCkpCisJCQkJeworCQkJCQly b290X3B1Ymxpc2hlZF92aWFfYWxsdGFibGVzID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQor CQkJfQorCQl9CisKIAkJLyoKIAkJICogQnVpbGQgcHVibGljYXRpb24gY2FjaGUuIFdlIGNhbid0 IHVzZSBvbmUgcHJvdmlkZWQgYnkgcmVsY2FjaGUgYXMKIAkJICogcmVsY2FjaGUgY29uc2lkZXJz IGFsbCBwdWJsaWNhdGlvbnMgdGhhdCB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgaW4sCkBAIC0yMjM2 LDI4ICsyMzMzLDQyIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQkJLyoKIAkJCSAqIElmIHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxF UyBwdWJsaWNhdGlvbiwgcGljayB0aGUgcGFydGl0aW9uCiAJCQkgKiByb290IGFuZCBzZXQgdGhl IGFuY2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LgorCQkJICoKKwkJCSAqIElmIHRoaXMgaXMgYSBG T1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBhbmQgaXQgaGFzIGFuIEVYQ0VQVAorCQkJICogVEFC TEUgbGlzdDoKKwkJCSAqCisJCQkgKiBJZiB0aGUgcmVsYXRpb24gaXMgYSBwYXJ0aXRpb24sIGNo ZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQKKwkJCSAqIHJlbGF0aW9uIG9yIGFueSBvZiB0aGUgYW5j ZXN0b3JzIGlzIGluY2x1ZGVkIGluIHRoZSBFWENFUFQKKwkJCSAqIFRBQkxFIGxpc3QuIElmIHNv LCBkbyBub3QgcHVibGlzaCB0aGUgY2hhbmdlLgorCQkJICoKKwkJCSAqICJEbyBub3QgcHVibGlz aCB0aGUgY2hhbmdlIiBpcyBhY2hpZXZlZCBieSBrZWVwaW5nIHRoZSB2YXJpYWJsZQorCQkJICog InB1Ymxpc2giIHNldCB0byBmYWxzZS4gQW5kIGV2ZW50dWFsbHksIGVudHJ5LT5wdWJhY3Rpb25z IHdpbGwKKwkJCSAqIHJlbWFpbiBhbGwgZmFsc2UgZm9yIHRoaXMgcHVibGljYXRpb24uCiAJCQkg Ki8KIAkJCWlmIChwdWItPmFsbHRhYmxlcykKIAkJCXsKIAkJCQlMaXN0CSAgICpleGNlcHRwdWJp ZHMgPSBOSUw7CiAKLQkJCQlpZiAoYW1fcGFydGl0aW9uICYmIHB1Yi0+cHVidmlhcm9vdCkKKwkJ CQlpZiAoYW1fcGFydGl0aW9uKQogCQkJCXsKLQkJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0 X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCQkJCQlmb3JlYWNoX29pZChhbmNlc3Rvciwg YW5jZXN0b3JzKQorCQkJCQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIE5VTEws ICZleGNlcHRwdWJpZHMpOwogCi0JCQkJCXB1Yl9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMp OwotCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCWlm IChwdWItPnB1YnZpYXJvb3QpCisJCQkJCXsKKwkJCQkJCXB1Yl9yZWxpZCA9IHJvb3RfYW5jZXN0 b3I7CisJCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJ CX0KIAkJCQl9CiAKLQkJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhwdWJfcmVsaWQsIE5VTEws ICZleGNlcHRwdWJpZHMpOworCQkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkLCBOVUxM LCAmZXhjZXB0cHViaWRzKTsKIAogCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1Ymlk cywgcHViLT5vaWQpKQogCQkJCQlwdWJsaXNoID0gdHJ1ZTsKIAogCQkJCWxpc3RfZnJlZShleGNl cHRwdWJpZHMpOwogCQkJfQotCi0JCQlpZiAoIXB1Ymxpc2gpCisJCQllbHNlIGlmICghcHVibGlz aCkKIAkJCXsKIAkJCQlib29sCQlhbmNlc3Rvcl9wdWJsaXNoZWQgPSBmYWxzZTsKIApAQCAtMjI3 MSwxMiArMjM4MiwxMCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBS ZWxhdGlvbiByZWxhdGlvbikKIAkJCQl7CiAJCQkJCU9pZAkJCWFuY2VzdG9yOwogCQkJCQlpbnQJ CQlsZXZlbDsKLQkJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3Rv cnMocmVsaWQpOwogCiAJCQkJCWFuY2VzdG9yID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNh dGlvbihwdWItPm9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIGFuY2VzdG9ycywKIAkJCQkJCQkJCQkJ CQkJCSAgICZsZXZlbCk7Ci0KIAkJCQkJaWYgKGFuY2VzdG9yICE9IEludmFsaWRPaWQpCiAJCQkJ CXsKIAkJCQkJCWFuY2VzdG9yX3B1Ymxpc2hlZCA9IHRydWU7CkBAIC0yMjkxLDcgKzI0MDAsMjUg QEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRp b24pCiAJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChwdWJpZHMsIHB1Yi0+b2lkKSB8fAogCQkJCQls aXN0X21lbWJlcl9vaWQoc2NoZW1hUHViaWRzLCBwdWItPm9pZCkgfHwKIAkJCQkJYW5jZXN0b3Jf cHVibGlzaGVkKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogSWYgdGhlIHJvb3QgYW5jZXN0b3Ig aXMgZWZmZWN0aXZlbHkgcHVibGlzaGVkIGJ5IGFuIEFMTAorCQkJCQkgKiBUQUJMRVMgcHVibGlj YXRpb24gd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJICogdGhlbiBjaGFu Z2VzIGZvciBpdHMgcGFydGl0aW9ucyBtdXN0IGJlIHB1Ymxpc2hlZCB1c2luZworCQkJCQkgKiB0 aGUgcm9vdCBpZGVudGl0eS4KKwkJCQkJICoKKwkJCQkJICogVGhpcyBhcHBsaWVzIGV2ZW4gaWYg b3RoZXIgcHVibGljYXRpb25zIGRvIG5vdCBzcGVjaWZ5CisJCQkJCSAqIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290LCBwcm92aWRlZCB0aGUgcm9vdCBpcyBub3QKKwkJCQkJICogZXhjbHVkZWQg ZnJvbSB0aGF0IEFMTCBUQUJMRVMgcHVibGljYXRpb24uCisJCQkJCSAqLworCQkJCQlpZiAocm9v dF9wdWJsaXNoZWRfdmlhX2FsbHRhYmxlcykKKwkJCQkJeworCQkJCQkJcHViX3JlbGlkID0gcm9v dF9hbmNlc3RvcjsKKwkJCQkJCWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3Jz KTsKKwkJCQkJfQorCiAJCQkJCXB1Ymxpc2ggPSB0cnVlOworCQkJCX0KIAkJCX0KIAogCQkJLyoK QEAgLTIzMzksNiArMjQ2NiwxNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpk YXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQkJQXNzZXJ0KHB1Ymxpc2hfYXNfcmVsaWQgPT0g cHViX3JlbGlkKTsKIAkJCQl9CiAKKwkJCQkvKgorCQkJCSAqIFBhcnRpdGlvbnMgd2hvc2UgdG9w LW1vc3QgYW5jZXN0b3IgaXMgYmVpbmcgcHVibGlzaGVkIHZpYQorCQkJCSAqIGFuICdBTEwgVEFC TEVTJyBwdWJsaWNhdGlvbiBuZWVkIG5vdCBiZSBpbmRpdmlkdWFsbHkKKwkJCQkgKiBwdWJsaXNo ZWQgdmlhIGFueSBvdGhlciBwdWJsaWNhdGlvbi4gUmVwZWF0ZWQgb2NjdXJyZW5jZXMKKwkJCQkg KiBvZiBhIHBhcnRpdGlvbiB0YWtlIHRoZSBsZWFzdCByZXN0cmljdGVkIGRlZmluaXRpb24sIHdo aWNoCisJCQkJICogdGhlICdBTEwgVEFCTEVTJyBwdWJsaWNhdGlvbiBhbHdheXMgcHJvdmlkZXMu IEkuZS4sIGFsbAorCQkJCSAqIGNvbHVtbnMgYW5kIGFsbCByb3dzLgorCQkJCSAqLworCQkJCWlm IChyb290X3B1Ymxpc2hlZF92aWFfYWxsdGFibGVzKQorCQkJCQljb250aW51ZTsKKwogCQkJCS8q IFRyYWNrIHB1YmxpY2F0aW9ucyBmb3IgdGhpcyBhbmNlc3Rvci4gKi8KIAkJCQlyZWxfcHVibGlj YXRpb25zID0gbGFwcGVuZChyZWxfcHVibGljYXRpb25zLCBwdWIpOwogCQkJfQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggZGFjNDA5OTJjYmMuLjBiOTUxYTNkNmVhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTEyMzk4LDYgKzEyMzk4LDEzIEBACiAgIHByb25hbWUgPT4gJ3BnX3Jl bGF0aW9uX2lzX3B1Ymxpc2hhYmxlJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBl ID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKICAgcHJvc3JjID0+ICdwZ19y ZWxhdGlvbl9pc19wdWJsaXNoYWJsZScgfSwKK3sgb2lkID0+ICc5MDAyJywgZGVzY3IgPT4gJ3Jl dHVybiBwYXJ0aXRpb24gdGFibGVzIGVsaWdpYmxlIGZvciB0YWJsZXN5bmMgd2hlbiBwdWJsaWNh dGlvbiB1c2VzIEVYQ0VQVCBhbmQgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlJywK KyAgcHJvbmFtZSA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX2VmZmVjdGl2ZV90YWJsZXMnLCAgcHJv cm93cyA9PiAnMTAwMCcsCisgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywK KyAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCBfdGV4dCcsCisg IHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLF90ZXh0LHRleHQsdGV4dH0nLCBwcm9hcmdtb2RlcyA9 PiAne2ksaSxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tyb290X3JlbGlkLHB1Yl9uYW1lcyxu c3BuYW1lLHJlbG5hbWV9JywKKyAgcHJvc3JjID0+ICdwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0 aXZlX3RhYmxlcycgfSwKIAogIyBybHMKIHsgb2lkID0+ICczMjk4JywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaAppbmRleCA4ZDY5NTI3NjgzNy4uMjQzMDhhZDQ5NTAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE5MCw2ICsxOTAsNyBAQCBleHRlcm4gT2lk CUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0 b3JzLAogCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwp OwogZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CitleHRlcm4g Ym9vbCBpc19yZWxpZF9leGNlcHRlZChPaWQgcmVsaWQsIE9pZCBwdWJpZCk7CiBleHRlcm4gYm9v bCBwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdF90YWJsZShPaWQgcHViaWQpOwogZXh0ZXJuIGJv b2wgY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxp ZCwKIAkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQsIEJpdG1hcHNldCAqKmNvbHMpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCAzM2ZiN2Y1NTJiNC4u MWY5ZWNlMDU2YjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CkBAIC0yMzQsNiArMjM0LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvCiAJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOwogfSBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbzsKIAordHlwZWRlZiBzdHJ1Y3QgUXVhbGlmaWVkUmVsYXRpb25OYW1lCit7CisJ Y2hhcgkgICAqbnNwbmFtZTsKKwljaGFyCSAgICpyZWxuYW1lOworfSBRdWFsaWZpZWRSZWxhdGlv bk5hbWU7CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFu ZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5 Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNh dGlvbi5vdXQKaW5kZXggMWU1ODE5YzZkZTIuLjU1ZGZiZTlkNWU5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMzM1LDEwICszMzUsMTcgQEAgRXhjZXB0 IHRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcm9vdCIKIAogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl9wYXJ0MSk7Ci1F UlJPUjogIHBhcnRpdGlvbiAidGVzdHB1Yl9wYXJ0MSIgY2Fubm90IGJlIGV4Y2x1ZGVkIHVzaW5n IEVYQ0VQVCBUQUJMRQorXGRScCsgdGVzdHB1Yjk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViOQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1 YmxpYy50ZXN0cHViX3BhcnQxIgorCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBU QUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRlc3RwdWJfcGFydDI7Ci1EUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWI4OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViOCwgdGVzdHB1Yjk7 CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVF TkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19w dWJfc2VxMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA0ZGUwMTc2YmMy NS4uODA5MTNkNTYyYmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTE1 OCwxMCArMTU4LDExIEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3BhcnQyIFBBUlRJVElPTiBPRiB0 ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyCiBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Jvb3QpOwog XGRScCsgdGVzdHB1Yjg7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3BhcnQxKTsKK1xkUnArIHRlc3RwdWI5OwogCiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3RwdWJf cGFydDEsIHRlc3RwdWJfcGFydDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OworRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViOCwgdGVzdHB1Yjk7CiAKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRp b25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRf dGFibGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0 X3RhYmxlLnBsCmluZGV4IDM2MWNlMWFjOTk2Li4yOGY5ZTU5ZGU5ZCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBs CkBAIC0xNzgsNiArMTc4LDU0IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIlNFTEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2Uo J3Rlc3Rfc2xvdCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCiApOwogCisjIEV4Y2x1ZGluZyBv bmUgb2YgdGhlIHBhcnRpdGlvbnMgKHBhcnQyKSBzaG91bGQgbm90IGFmZmVjdCByZXBsaWNhdGlv biBvZiB0aGUKKyMgb3RoZXIgcGFydGl0aW9ucyB0aGF0IGRvbid0IGludGVyc2VjdCBpdC4gU28s IGluIHRoaXMgY2FzZSwgYWxsIG9mIHBhcnQxCisjIHNob3VsZCBzdGlsbCBiZSByZXBsaWNhdGVk LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJVFJVTkNB VEUgc2NoMS50MTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMyksICgxMDMpLCAoMTUz KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAoc2NoMS5wYXJ0MikgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0 cnVlKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCVRSVU5DQVRFIHNjaDEudDE7CisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7 CispKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2Rl X3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rf YWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7CisKKyMgVmVy aWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0aGUgcGFydGl0aW9uIHBhcnQyIGlzIG5vdCBwdWJs aXNoZWQgd2hlbiBpdAorIyBpcyBpbiB0aGUgRVhDRVBUIGNsYXVzZQorJHJlc3VsdCA9ICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9IDAg RlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxM LCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3RhcF9w dWJfcGFydCcpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1 Yl9wYXJ0Jyk7CisKKyMgQ2hlY2sgdGhhdCB0YWJsZSBkYXRhIDEwMyBhbmQgMTUzIHdoaWNoIGlz IHByZXNlbnQgaW4gc2NoMS5wYXJ0MiBzaG91bGQKKyMgbm90IGJlIHJlcGxpY2F0ZWQuCiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBG Uk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFxKDMpLCAnY2hlY2sgcm93cyBvbiByb290IHRh YmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNr IHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDInKTsKKworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9u IHRhYmxlIHNjaDEucGFydDJfMScpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMiIpOworaXMo JHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8yJyk7CisKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04g dGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CisKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlz IHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucwogIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjY1LDEyICszMTMsNTIgQEAgbGlrZSgK IAkkc3RkZXJyLAogCXFyL0VSUk9SOiAgY2Fubm90IGNvbWJpbmUgcHVibGljYXRpb25zIHRoYXQg ZGVmaW5lIEVYQ0VQVCBUQUJMRSBjbGF1c2VzLioKIC4qREVUQUlMOi4qVGhlIGZvbGxvd2luZyBw dWJsaWNhdGlvbnMgZGVmaW5lIEVYQ0VQVCBUQUJMRSBjbGF1c2VzOiAidGFwX3B1YjEiLCAidGFw X3B1YjIiLi8sCi0JJ3N1YnNjcmlwdGlvbiB3aXRoIG11bHRpcGxlIEVYQ0VQVCBUQUJMRSBwdWJs aWNhdGlvbicpOworCSdzdWJzY3JpcHRpb24gd2l0aCBtdWx0aXBsZSBFWENFUFQgVEFCTEUgcHVi bGljYXRpb24nKTsJCiAKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn RFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CiAK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCBt dWx0aS1wdWJsaWNhdGlvbiBzdWJzY3JpcHRpb24gd2hlcmUgYSB0YWJsZSBsaXN0ZWQgaW4gdGhl CisjIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGlzIGluY2x1ZGVkIGJ5IGFub3Ro ZXIgcHVibGljYXRpb24KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVRS VU5DQVRFIFRBQkxFIHNjaDEudDE7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDEg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQyXzEpIFdJVEggKHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJf cGFydDIgRk9SIFRBQkxFIHNjaDEucGFydDJfMSBXSEVSRSAoYSA+IDExMCkgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVF UyAoMTEpLCAoMTExKSwgKDE2MSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcSgKKwlUUlVOQ0FURSBUQUJMRSBzY2gxLnQxLCBzY2gxLnBhcnQxLCBz Y2gxLnBhcnQyLCBzY2gxLnBhcnQyXzEsIHNjaDEucGFydDJfMjsKKwlDUkVBVEUgU1VCU0NSSVBU SU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FU SU9OIHRhcF9wdWJfcGFydDEsIHRhcF9wdWJfcGFydDI7CispKTsKKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFy dCcpOworCisjIFZlcmlmeSB0aGF0IHJvd3MgZm9yIHNjaDEucGFydDJfMSBhcmUgcmVwbGljYXRl ZCBiZWNhdXNlIHRoZSB0YWJsZSwgYWx0aG91Z2gKKyMgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xh dXNlIG9mIHRhcF9wdWJfcGFydDEsIGlzIGluY2x1ZGVkIGJ5IHRhcF9wdWJfcGFydDIuCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg KiBGUk9NIHNjaDEudDEgT1JERVIgQlkgMSIpOworaXMoICRyZXN1bHQsIHFxKDExCisxMTEKKzE2 MSksICdpbml0aWFsIHJvd3MgcmVwbGljYXRlZCB0byByb290IHRhYmxlJyk7CisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFM VUVTICgxMiksICgxMTIpLCAoMTYyKTsiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIE9SREVSIEJZIDEi KTsKK2lzKCAkcmVzdWx0LCBxcSgxMQorMTIKKzExMQorMTEyCisxNjEKKzE2MiksICdzdWJzZXF1 ZW50IHJvd3MgcmVwbGljYXRlZCB0byByb290IHRhYmxlJyk7CisKICRub2RlX3B1Ymxpc2hlci0+ c3RvcCgnZmFzdCcpOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggMjQxOTQ1NzM0ZWMuLjljNTc2ZTNjMjY3IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMjQyMSw2ICsyNDIxLDcgQEAgUVROb2RlCiBRVUVSWVRZUEUKIFF1YWxDb3N0CiBRdWFs SXRlbQorUXVhbGlmaWVkUmVsYXRpb25OYW1lCiBRdWVyeQogUXVlcnlDb21wbGV0aW9uCiBRdWVy eURlc2MKLS0gCjIuNDMuMAoK --000000000000b7e8f5064b3d589e--