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 1wSvs9-000CgE-0B for pgsql-hackers@arkaria.postgresql.org; Fri, 29 May 2026 11:59:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSvs7-002Qnt-0M for pgsql-hackers@arkaria.postgresql.org; Fri, 29 May 2026 11:59:27 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSvs6-002Qnl-0V for pgsql-hackers@lists.postgresql.org; Fri, 29 May 2026 11:59:27 +0000 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSvs4-000000007BB-0FZ9 for pgsql-hackers@lists.postgresql.org; Fri, 29 May 2026 11:59:25 +0000 Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-7e6128bd9b3so3809665a34.1 for ; Fri, 29 May 2026 04:59:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780055964; cv=none; d=google.com; s=arc-20240605; b=X+I7louwBa8X4LXfQQADS1JZ++XQUyhHV3QHGKmM0U3i+wr/zLNCpwpPypPvFCh31y WdyigV+3lsLKE9CMEgqtXQemhA3GNihwU8I5hbT17km5U7QhrXwZ/+jfLbQMKmu1yCtg s1IR86AVLUH0nzMX0tzNyJ2FVk9kKA9OMOaY/LtpMoCF/uKDGJMjNndJ8eGHTjH11i1x 2lnc5JscK1jzU9sH1QB3lW/J9ABkRtEG5CTIydMSQggyODZ2QqwJRVbiGBiWQXBMz3R9 9VpdRWAAxnY6j22qT5z9MzRsw826YPPrgqE+mVW6CBAuNnFAl1yfgzPEfZqm7e/3v1i3 IcUA== 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=oayb1a46yfMXfH2//t82PxCBL10M5sfL9Amikpnuvp0=; fh=jA1y0o48KsEr1ncbKeaqgkONBUmAh+4Dc8UAqTSPpFs=; b=fIxbVaDQ3oC63a5iLH9CsL8d/rDOKfgIR36+sN1KqGtX1QZJnprBb2KVbmAPbdujoB XkSg7+Db9QPiI6Pio64rhtQ7OZ7f+qXWL+GYgNzWCBJdtfpbNFH/HPIbchB15nWd5xkT U8gyQEjB4hunOfx+RMr27t3L6CwKdmjh9CQqvVz6yc3ba4hI6I9d2VFW3Lbr72/ZtBr2 3UISVqhetUerxBlrMWQgbIezHUZ++ZyJ8xZ6tCWIYTjKkinBLeZNf+IiFs+fTHKQwSD+ fTCO0IX6gU5MsmgxgB3tJ3N0QMQnKx4bQ9sTbXEf7jjrr4gc7hzm6l6k1EB3u2U+XZUS Ns2Q==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780055964; x=1780660764; 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=oayb1a46yfMXfH2//t82PxCBL10M5sfL9Amikpnuvp0=; b=HMWYfynZKl0BIo3JN8SBgRJwMJOth4Zu+Kab6SlFayyGbuwOlQTe5fLKiulUWytSLU aNFe+DZiD6tsFiogXSm6O+Xc047cHZBBG/LPJM2yPrHsZECoMYFTkOYNWjxLK7jyU9ZS fDXjFWVWzEn3/+uw3bjbXx7iz0vKGD2WLlart5skj+GFD1jdbycOiY14I5G9DJXLb0YQ MYTFMBfM5rh/O7SmO6Y2XqcjginYzWkrApGvidPIZ2CdIrvaTseTS7zd3irSRBeLhOrA MCvmM7+L2hbs7dHCoPxu4aNB4ReBCdTO0J1WcXYA6F8hBrB4rlnFkhuvwtvB6ANk7MR7 nYpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780055964; x=1780660764; 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=oayb1a46yfMXfH2//t82PxCBL10M5sfL9Amikpnuvp0=; b=RI18iV8faohyESNAeGTL0PMvwbsf16XHSh2p9f+2p563yMxFavPFMuUxexnShyM1tb uHXDAV81NGxGiHdDiR1cYYgdb5jTR+yo46HAOuOo79reOqmfg0kN3D6MybzqyTljQCrj xoqXqxIpiyAIGOyc8E6N/GPfcvBbsN8wO4HH0/Yb8oiE8AwdRBzOOxXxhMT0JZGy+mUU qh10DuN3P1BwcUoAE/kmtrEwWNGligUPIEAFx2Miacw5lKs8zMQLlRfuDfb+mRcMRZOK TasrtgEUAzv0EBFdasPO1LiUOjhfJWjpmFoKIxrCob48msMfVR+uEspoC2SJk0QF7/VF uvyw== X-Gm-Message-State: AOJu0Yyu+qe1y5z0ttAW1/95DpttjXaXVPLhDSCfAk3XnmPSVvSWkk3F R19pafqW0KftWifgeliimxrXfXlGQ5Iw+Df5yPfnZSrbBsM++5gnTx+5i1Re6CodqvPQk/rsLiC YrD2/hOlaUsmT9fn+NlNHl5Aiaiy30SSpDw== X-Gm-Gg: Acq92OFoOPBTZdOvYoA6G5V1InQK92deY2iJtJOQCbNhvyZ7yMpyDWJ7Co+puWDDzDg D8tweUGxuhOWX7HMDgkVW0lmFxvE/bHuI6LffELwK8Be+gwTUzRkt6b0Huo610pZqVjoVNw8ZsF G/VjjIsZ7d01n4D4z8fg4nNDZBNE5nIfBTYJ4DJnL+RZjOMK8VrjugA8f5Rxo7TjVXzD5G9vz6k PsickuPMSv2i8XOYAdOeqrcDq6zBO5n9+d1YxoWtA7SgXrL7+UIEsPCCo9F/15OwBYWr0xNK/Hj haMNxCaJ+p+ZMALqfoVp X-Received: by 2002:a05:6820:a0d:b0:69e:14a:f306 with SMTP id 006d021491bc7-69e0404a466mr1318169eaf.46.1780055963833; Fri, 29 May 2026 04:59:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Fri, 29 May 2026 17:29:11 +0530 X-Gm-Features: AVHnY4KyymIM9YWWzKTKIYTNeLKiUh3kRfn9__a2P7-49nPOWx3KUU-mOk-RLTI Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: Zsolt Parragi Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000067b6290652f393d2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000067b6290652f393d2 Content-Type: text/plain; charset="UTF-8" Hi Zsolt, Thanks for reviewing the patch. On Thu, 28 May 2026 at 03:22, Zsolt Parragi wrote: > > Hello! > > + if (footers[0] == NULL) > + footers[0] = pg_strdup(tmpbuf.data); > + else if (footers[1] == NULL) > + footers[1] = pg_strdup(tmpbuf.data); > + else > + footers[2] = pg_strdup(tmpbuf.data); > + resetPQExpBuffer(&tmpbuf); > > Shouldn't the matching free calls also updated, this now leaks footers[2]? > Yes, correct. Made the change for the same. > + "\n AND NOT EXISTS (\n" > + " SELECT 1\n" > + " FROM pg_catalog.pg_publication_rel pr\n" > + " WHERE pr.prpubid = p.oid AND\n" > + " pr.prrelid = '%s')" > > Isn't a pr.prexcept check missing from this? It is included in other queries. > pg_publication_rel has an entry for table/sequence if we specifically include/exclude it in a publication. So, we can say, pg_publication_rel contains an entry for a Table/Sequence for a ALL TABLES/ ALL SEQUENCE publication, only if it is specified in the EXCEPT clause. So, the above query will give the expected results even if we donot use the ' pr.prexcept' flag. For the case: _("Get publications that publish this table")) Here as well we use a similar query without prexcept: "WHERE p.puballtables AND pg_catalog.pg_relation_is_publishable('%s')\n" " AND NOT EXISTS (\n" " SELECT 1\n" " FROM pg_catalog.pg_publication_rel pr\n" " WHERE pr.prpubid = p.oid AND\n" " (pr.prrelid = '%s' OR pr.prrelid = pg_catalog.pg_partition_root('%s')))\n" "ORDER BY 1;", > - /* EXCEPT clause is not supported with ALTER PUBLICATION */ > - Assert(exceptseqs == NIL); > - > > Would it be worth it to keep a more restricted assert, saying that > EXCEPT clause is only supported for ALTER PUBLICATION ... SET? > > Added the Assert in 0002 patch. I have addressed the comments and attached the v8 patch. Thanks, Shlok Kyal --00000000000067b6290652f393d2 Content-Type: application/octet-stream; name="v8-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Disposition: attachment; filename="v8-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpqv916x0 RnJvbSBjYTZkOGM5NTE3MjVlNTA0ZmRkYTVmYjkxZjk4NzhhMjhkZTgxNzY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY4 IDEvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQ1JFQVRFIFBVQkxJQ0FU SU9OCgpFeHRlbmQgQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFNFUVVFTkNFUyB0byBz dXBwb3J0IHRoZQpFWENFUFQgc3ludGF4LiBUaGlzIGFsbG93cyBvbmUgb3IgbW9yZSBzZXF1ZW5j ZXMgdG8gYmUgZXhjbHVkZWQuIFRoZQpwdWJsaXNoZXIgd2lsbCBub3Qgc2VuZCB0aGUgZGF0YSBv ZiBleGNsdWRlZCBzZXF1ZW5jZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpFeGFtcGxlOgpDUkVBVEUg UFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHMxLCBz Mik7Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgIHwgICA2ICstCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICB8ICAzNyArKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNjggKysrKysrKyst LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMDkgKysr KysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgICB8IDExMSArKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICB8ICA1NiArKysrKysrKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgICAgICAgICAgfCAgMjIgKysrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAg ICAgICAgICAgICAgICAgIHwgIDc0ICsrKysrKysrKysrKystLQogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTIgKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgICAgfCAgMTEgKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dCB8ICA1OSArKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCAgICAgIHwgIDI4ICsrKysrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3 X2V4Y2VwdC5wbCAgICAgfCAgNzUgKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMiArLQogMTcgZmlsZXMgY2hhbmdlZCwgNTM0IGlu c2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEz OTE3Li40M2EzNTY2ZGRhMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTcwOTksNyArNzA5OSw3IEBAIFND UkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNl YWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+PC9saW5r Pi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCiAgICAgICA8L3BhcmE+CiAgICAgICA8 cGFyYT4KLSAgICAgICBSZWZlcmVuY2UgdG8gdGFibGUKKyAgICAgICBSZWZlcmVuY2UgdG8gdGFi bGUgb3Igc2VxdWVuY2UKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAt NzEwOCw4ICs3MTA4LDggQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlv biBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDxzdHJ1Y3Rm aWVsZD5wcmV4Y2VwdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBUcnVlIGlmIHRoZSB0YWJsZSBpcyBleGNsdWRlZCBm cm9tIHRoZSBwdWJsaWNhdGlvbi4gU2VlCi0gICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0 ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQ8L2xp dGVyYWw+PC9saW5rPi4KKyAgICAgICBUcnVlIGlmIHRoZSB0YWJsZSBvciBzZXF1ZW5jZSBpcyBl eGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gU2VlCisgICAgICAgPGxpbmsgbGlua2VuZD0i c3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0Ij48bGl0ZXJhbD5FWENFUFQ8 L2xpdGVyYWw+PC9saW5rPi4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApA QCAtNzExOCw3ICs3MTE4LDcgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJh dGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDxzdHJ1 Y3RmaWVsZD5wcnF1YWw8L3N0cnVjdGZpZWxkPiA8dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+CiAg ICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT5FeHByZXNzaW9uIHRyZWUgKGluIDxmdW5jdGlvbj5u b2RlVG9TdHJpbmcoKTwvZnVuY3Rpb24+Ci0gICAgICByZXByZXNlbnRhdGlvbikgZm9yIHRoZSBy ZWxhdGlvbidzIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLiBOdWxsCisgICAgICBy ZXByZXNlbnRhdGlvbikgZm9yIHRoZSB0YWJsZSdzIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29u ZGl0aW9uLiBOdWxsCiAgICAgICBpZiB0aGVyZSBpcyBubyBwdWJsaWNhdGlvbiBxdWFsaWZ5aW5n IGNvbmRpdGlvbi48L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDllNzg2ODQ4N2RlLi5lYjBiNjY0OTFkMyAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTksNyArMTE5LDExIEBACiAgICA8 eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4gV2hlbiBhIHB1 YmxpY2F0aW9uIGlzCiAgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xp dGVyYWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCiAgICBiZSBleHBsaWNpdGx5IGV4 Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCi0gICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQ VDwvbGl0ZXJhbD48L2xpbms+CisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRp b24tcGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+Cisg ICBjbGF1c2UuIFNpbWlsYXJseSwgd2hlbiBhIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgd2l0aAor ICAgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LCBhIHNlcXVlbmNlIG9yIHNl dCBvZiBzZXF1ZW5jZXMgY2FuIGJlCisgICBleHBsaWNpdGx5IGV4Y2x1ZGVkIGZyb20gcHVibGlj YXRpb24gdXNpbmcgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24t cGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+CiAgICBj bGF1c2UuCiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKaW5kZXggZjgyZDY0MGU2Y2EuLmRmNzM2ZTc0ZDJmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMzLDcgKzMzLDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KIDxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgQUxMIFRBQkxFUyBb IEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCi0gICAgQUxMIFNFUVVFTkNFUworICAgIEFM TCBTRVFVRU5DRVMgWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhj ZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogCiA8cGhyYXNl PmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3Jl cGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtNDYsNiArNDYsMTAgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8 L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8cGhyYXNl PmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVj dDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQog PC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xODksMTUgKzE5MywxOCBAQCBD UkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPgogICAgICA8cGFyYT4KICAgICAgIE9ubHkgcGVyc2lzdGVudCBzZXF1ZW5jZXMg YXJlIGluY2x1ZGVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGVtcG9yYXJ5CiAgICAgICBzZXF1ZW5j ZXMgYW5kIHVubG9nZ2VkIHNlcXVlbmNlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRp b24uCisgICAgICBTZXF1ZW5jZXMgbGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+IGNsYXVzZSBhcmUgZXhjbHVkZWQgZnJvbQorICAgICAgdGhlIHB1YmxpY2F0aW9uLgogICAg ICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCi0gICA8dmFy bGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFi bGUiPgorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1m b3ItZXhjZXB0Ij4KICAgICA8dGVybT48bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+PC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMg YSBsaXN0IG9mIHRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgVGhpcyBjbGF1 c2Ugc3BlY2lmaWVzIHRoZSB0YWJsZXMgb3Igc2VxdWVuY2VzIHRvIGJlIGV4Y2x1ZGVkIGZyb20g YW4KKyAgICAgIDxsaXRlcmFsPkFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkFMTCBT RVFVRU5DRVM8L2xpdGVyYWw+CiAgICAgICBwdWJsaWNhdGlvbi4KICAgICAgPC9wYXJhPgogICAg ICA8cGFyYT4KQEAgLTIxNyw5ICsyMjQsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgPC9wYXJhPgog ICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGNhbiBiZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRp b24gaW5jbHVkZXMgbXVsdGlwbGUgcHVibGljYXRpb25zLgotICAgICAgSW4gc3VjaCBhIGNhc2Us IGEgdGFibGUgb3IgcGFydGl0aW9uIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9u Ci0gICAgICBidXQgZXhjbHVkZWQgKGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSkgYnkgdGhlIDxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgICAgIGNsYXVzZSBvZiBhbm90aGVyIGlzIGNvbnNp ZGVyZWQgaW5jbHVkZWQgZm9yIHJlcGxpY2F0aW9uLgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEg dGFibGUsIHBhcnRpdGlvbiBvciBzZXF1ZW5jZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9uZQorICAg ICAgcHVibGljYXRpb24gYnV0IGV4Y2x1ZGVkIChleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkpIGJ5 IHRoZQorICAgICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2Ugb2YgYW5vdGhlciBp cyBjb25zaWRlcmVkIGluY2x1ZGVkIGZvcgorICAgICAgcmVwbGljYXRpb24uCiAgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC01NDcsMTEgKzU1NSwy MCBAQCBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bQogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBD cmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZvciBzeW5j aHJvbml6YXRpb24sIGFuZAotICAgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQgPHN0 cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAotICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVu dHM8L3N0cnVjdG5hbWU+OgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMg YWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+ c2VxMTwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3RuYW1lPnNlcTI8L3N0cnVjdG5hbWU+OgorPHBy b2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXNfZXhjZXB0IEZP UiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1s aXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0 aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb24gZXhjZXB0Cisg ICA8c3RydWN0bmFtZT5zZXExPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+c2VxMjwvc3Ry dWN0bmFtZT4sIGFuZCBhbGwKKyAgIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxz dHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8 L3N0cnVjdG5hbWU+OgogPHByb2dyYW1saXN0aW5nPgotQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9z ZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cyk7CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Nl cXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ug c2VxMSwgc2VxMiksIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMp OwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWM0NTdkOWFjYTguLjVmZDJjMjc5NWFiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC00OSwyMCArNDksMjggQEAgdHlwZWRl ZiBzdHJ1Y3QKIH0gcHVibGlzaGVkX3JlbDsKIAogLyoKLSAqIENoZWNrIGlmIHJlbGF0aW9uIGNh biBiZSBpbiBnaXZlbiBwdWJsaWNhdGlvbiBhbmQgdGhyb3dzIGFwcHJvcHJpYXRlCi0gKiBlcnJv ciBpZiBub3QuCisgKiBDaGVjayBpZiB0aGUgdGFyZ2V0IHJlbGF0aW9uIGlzIGFsbG93ZWQgdG8g YmUgc3BlY2lmaWVkIGluIHRoZSBnaXZlbgorICogcHVibGljYXRpb24gYW5kIHRocm93IGFuIGVy cm9yIGlmIG5vdC4KKyAqCisgKiAncHVicmVsa2luZCcgaXMgdGhlIHJlbGtpbmQgYWNjZXB0ZWQg YnkgdGhlIHB1YmxpY2F0aW9uIGNsYXVzZSwKKyAqIHdoaWxlICd0YXJnZXRyZWxraW5kJyBpcyB0 aGUgcmVsa2luZCBvZiB0aGUgcmVsYXRpb24gYmVpbmcgYWRkZWQuCisgKiBFcnJvciBpZiB0aGV5 IGFyZSBub3QgY29tcGF0aWJsZS4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX3B1YmxpY2F0aW9u X2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKK2NoZWNrX3B1YmxpY2F0aW9u X2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSwgY2hhciBwdWJyZWxraW5kKQog ewogCVJlbGF0aW9uCXRhcmdldHJlbCA9IHByaS0+cmVsYXRpb247CisJY2hhcgkJdGFyZ2V0cmVs a2luZCA9IFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kOwogCWNvbnN0IGNoYXIg KnJlbG5hbWU7CiAJY29uc3QgY2hhciAqZXJyb3Jtc2c7CiAKIAlpZiAocHJpLT5leGNlcHQpCiAJ ewogCQlyZWxuYW1lID0gUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUodGFyZ2V0cmVs KTsKLQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uIFwi JXNcIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSIpOworCQlpZiAocHVicmVsa2lu ZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5v dCBzcGVjaWZ5IFwiJXNcIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xh dXNlIik7CisJCWVsc2UKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lm eSBcIiVzXCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoVEFCTEUpIGNsYXVzZSIpOwogCX0K IAllbHNlCiAJewpAQCAtNzcsMTMgKzg1LDIzIEBAIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIAkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxu YW1lKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZv ciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuIikpKTsKIAotCS8qIE11c3QgYmUgYSByZWd1bGFyIG9y IHBhcnRpdGlvbmVkIHRhYmxlICovCi0JaWYgKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5y ZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKLQkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJl bCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkvKgorCSAqIE11c3Qg YmUgYSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlIHdoZW4gc3BlY2lmaWVkIGluIEZPUiBU QUJMRSBvcgorCSAqIEVYQ0VQVCB0YWJsZSBsaXN0CisJICovCisJaWYgKHB1YnJlbGtpbmQgPT0g UkVMS0lORF9SRUxBVElPTiAmJiB0YXJnZXRyZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYK KwkJdGFyZ2V0cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9u b3Rfc3VwcG9ydGVkKHRhcmdldHJlbGtpbmQpKSk7CisKKwkvKiBNdXN0IGJlIGEgc2VxdWVuY2Ug aWYgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0ICovCisJaWYgKHB1YnJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSAmJiB0YXJnZXRyZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0Up CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCiAJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCi0JCQkJIGVycmRldGFp bF9yZWxraW5kX25vdF9zdXBwb3J0ZWQoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtp bmQpKSk7CisJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQodGFyZ2V0cmVsa2lu ZCkpKTsKIAogCS8qIENhbid0IGJlIHN5c3RlbSB0YWJsZSAqLwogCWlmIChJc0NhdGFsb2dSZWxh dGlvbih0YXJnZXRyZWwpKQpAQCAtOTcsMTEgKzExNSwxNSBAQCBjaGVja19wdWJsaWNhdGlvbl9h ZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1z ZyhlcnJvcm1zZywgcmVsbmFtZSksCisJCQkJIHRhcmdldHJlbGtpbmQgPT0gUkVMS0lORF9TRVFV RU5DRSA/CisJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgdGVtcG9yYXJ5IHNlcXVlbmNlcy4iKSA6CiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRp b24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4iKSkpOwogCWVsc2UgaWYg KHRhcmdldHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxP R0dFRCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgdGFy Z2V0cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFID8KKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCBzZXF1ZW5jZXMuIikgOgogCQkJ CSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2Vk IHRhYmxlcy4iKSkpOwogfQogCkBAIC01MjEsNyArNTQzLDggQEAgYXR0bnVtc3RvaW50MnZlY3Rv cihCaXRtYXBzZXQgKmF0dHJzKQogICovCiBPYmplY3RBZGRyZXNzCiBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKLQkJCQkJCSBib29s IGlmX25vdF9leGlzdHMsIEFsdGVyUHVibGljYXRpb25TdG10ICphbHRlcl9zdG10KQorCQkJCQkJ IGJvb2wgaWZfbm90X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFsdGVyX3N0bXQsCisJ CQkJCQkgY2hhciBwdWJyZWxraW5kKQogewogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVw OwpAQCAtNTU5LDcgKzU4Miw3IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQs IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo dGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAotCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihwcmkpOworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwcmksIHB1YnJl bGtpbmQpOwogCiAJLyogVmFsaWRhdGUgYW5kIHRyYW5zbGF0ZSBjb2x1bW4gbmFtZXMgaW50byBh IEJpdG1hcHNldCBvZiBhdHRudW1zLiAqLwogCWF0dG51bXMgPSBwdWJfY29sbGlzdF92YWxpZGF0 ZShwcmktPnJlbGF0aW9uLCBwcmktPmNvbHVtbnMpOwpAQCAtOTc5LDE1ICsxMDAyLDE0IEBAIEdl dEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQpCiB9CiAKIC8qCi0gKiBHZXRzIGxpc3Qgb2YgdGFibGUgb2lkcyB0aGF0 IHdlcmUgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCi0gKiBwdWJsaWNhdGlv bi4KLSAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIEFMTCBUQUJMRVMgcHVibGlj YXRpb25zLgorICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgdGhhdCB3ZXJlIHNwZWNpZmll ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgYQorICogJ0ZPUiBBTEwgVEFCTEVTJyBvciBhICdG T1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgotR2V0RXhjbHVkZWRQ dWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9w dCkKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQpCiB7Ci0JQXNzZXJ0KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+ YWxsdGFibGVzKTsKKwlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMgfHwK KwkJICAgR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGxzZXF1ZW5jZXMpOwogCiAJcmV0dXJuIGdl dF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKIH0KQEAg LTEwMzgsOCArMTA2MCw5IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcm9v dCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8gRk9SIEFMTCBT RVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgogICoKLSAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMgbWVudGlvbmVkCi0g KiBpbiB0aGUgRVhDRVBUIGNsYXVzZS4KKyAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0 aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMKKyAqIG1lbnRpb25lZCBpbiB0 aGUgRVhDRVBUIGNsYXVzZS4gRm9yIGEgRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24sCisg KiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgbWVudGlvbmVkIGluIHRoZSBFWENFUFQgY2xhdXNlLgog ICovCiBMaXN0ICoKIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCkBAIC0xMDUzLDExICsxMDc2LDEwIEBAIEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJv b3QpCiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9v dCkpOwogCi0JLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIG9ubHkgdG8gcmVsYXRpb25zLCBu b3Qgc2VxdWVuY2VzICovCi0JaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKLQkJZXhj ZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZpYXJvb3Qg PwotCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJICBQ VUJMSUNBVElPTl9QQVJUX0xFQUYpOworCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyB0byB0 YWJsZXMgYW5kIHNlcXVlbmNlcyAqLworCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CiAKIAlj bGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDQ0MGFkYjM1NmFk Li5lOTc1NzhkZGQ3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAg LTYxLDExICs2MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCByZl9jb250ZXh0CiAJT2lkCQkJcGFyZW50 aWQ7CQkvKiByZWxpZCBvZiB0aGUgcGFyZW50IHJlbGF0aW9uICovCiB9IHJmX2NvbnRleHQ7CiAK LXN0YXRpYyBMaXN0ICpPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcyk7Ci1zdGF0aWMgdm9pZCBD bG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKTsKK3N0YXRpYyBMaXN0ICpPcGVuUmVsYXRpb25MaXN0 KExpc3QgKnRhYmxlcyk7CitzdGF0aWMgdm9pZCBDbG9zZVJlbGF0aW9uTGlzdChMaXN0ICpyZWxz KTsKIHN0YXRpYyB2b2lkIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpOwotc3RhdGlj IHZvaWQgUHVibGljYXRpb25BZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlm X25vdF9leGlzdHMsCi0JCQkJCQkJCSBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CitzdGF0 aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJv b2wgaWZfbm90X2V4aXN0cywKKwkJCQkJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBj aGFyIHB1YnJlbGtpbmQpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBw dWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0 aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0 cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CkBAIC0xNzcsMTEgKzE3 NywxMiBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAog LyoKICAqIENvbnZlcnQgdGhlIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgbGlzdCBpbnRvIHNjaGVt YSBvaWQgbGlzdCBhbmQKLSAqIFB1YmxpY2F0aW9uVGFibGUgbGlzdC4KKyAqIFB1YmxpY2F0aW9u UmVsYXRpb24gbGlzdC4KICAqLwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9P aWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAg TGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRyZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAg IExpc3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0dGJscywgTGlzdCAqKmV4Y2VwdHNlcXMsCisJCQkJ CQkgICBMaXN0ICoqc2NoZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9u T2JqU3BlYyAqcHVib2JqOwpAQCAtMTk5LDEyICsyMDAsMTYgQEAgT2JqZWN0c0luUHVibGljYXRp b25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXN3 aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VY Q0VQVF9UQUJMRToKLQkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCSpl eGNlcHRyZWxzID0gbGFwcGVuZCgqZXhjZXB0cmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJ cHVib2JqLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqZXhjZXB0dGJscyA9IGxh cHBlbmQoKmV4Y2VwdHRibHMsIHB1Ym9iai0+cHVicmVsYXRpb24pOworCQkJCWJyZWFrOworCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfU0VRVUVOQ0U6CisJCQkJcHVib2JqLT5wdWJyZWxh dGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqZXhjZXB0c2VxcyA9IGxhcHBlbmQoKmV4Y2VwdHNl cXMsIHB1Ym9iai0+cHVicmVsYXRpb24pOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElP Tk9CSl9UQUJMRToKLQkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKLQkJCQkq cmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCXB1Ym9iai0+cHVi cmVsYXRpb24tPmV4Y2VwdCA9IGZhbHNlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVi b2JqLT5wdWJyZWxhdGlvbik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9TQ0hFTUE6CiAJCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmot Pm5hbWUsIGZhbHNlKTsKQEAgLTg0OSw3ICs4NTQsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAljaGFyCQlwdWJs aXNoX2dlbmVyYXRlZF9jb2x1bW5zOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJTGlzdAkgICAq cmVsYXRpb25zID0gTklMOwotCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0 CSAgICpleGNlcHR0YmxzID0gTklMOworCUxpc3QJICAgKmV4Y2VwdHNlcXMgPSBOSUw7CiAJTGlz dAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxl Z2Ugb24gZGF0YWJhc2UgKi8KQEAgLTkzNiwxOCArOTQyLDI3IEBAIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJLyog QXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCiAJT2JqZWN0c0luUHVi bGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJ CQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCSAgICZleGNl cHR0YmxzLCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7CisKKwkvKiBQcm9jZXNzIEVYQ0VQ VCBzZXF1ZW5jZSBsaXN0ICovCisJaWYgKHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzICYmIGV4Y2Vw dHNlcXMgIT0gTklMKQorCXsKKwkJTGlzdAkgICAqcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QoZXhj ZXB0c2Vxcyk7CisKKwkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVl LCBOVUxMLCBSRUxLSU5EX1NFUVVFTkNFKTsKKwkJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CisJ fQogCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQogCXsKIAkJLyogUHJvY2VzcyBFWENFUFQg dGFibGUgbGlzdCAqLwotCQlpZiAoZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJaWYgKGV4Y2Vw dHRibHMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRh YmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOwotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lk LCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJcmVscyA9 IE9wZW5SZWxhdGlvbkxpc3QoZXhjZXB0dGJscyk7CisJCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9u cyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwsIFJFTEtJTkRfUkVMQVRJT04pOworCQkJQ2xvc2VS ZWxhdGlvbkxpc3QocmVscyk7CiAJCX0KIAogCQkvKgpAQCAtOTY5LDcgKzk4NCw3IEBAIENyZWF0 ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpz dG10KQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChy ZWxhdGlvbnMpOworCQkJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QocmVsYXRpb25zKTsKIAkJCVRy YW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJ CQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTk3Nyw4ICs5OTIsOCBAQCBD cmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3Rt dCAqc3RtdCkKIAkJCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCiAJCQkJCQkJCQkgICBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1 Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7Ci0JCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwkJCVB1 YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCwgUkVMS0lORF9S RUxBVElPTik7CisJCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCiAJCWlmIChzY2hl bWFpZGxpc3QgIT0gTklMKQpAQCAtMTI1NSw3ICsxMjcwLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRh YmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAlpZiAoIXRh YmxlcyAmJiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCi0JcmVs cyA9IE9wZW5UYWJsZUxpc3QodGFibGVzKTsKKwlyZWxzID0gT3BlblJlbGF0aW9uTGlzdCh0YWJs ZXMpOwogCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKQEAgLTEyNjYs NyArMTI4MSw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQt PnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAogCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2 aWFyb290KTsKIAotCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0 bXQpOworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQs IFJFTEtJTkRfUkVMQVRJT04pOwogCX0KIAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJv cE9iamVjdHMpCiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwpA QCAtMTI4OSw4ICsxMzA0LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCSAqLwogCQkJaWYgKHB1YmZvcm0tPnB1 YmFsbHRhYmxlcykKIAkJCXsKLQkJCQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9u VGFibGVzKHB1YmlkLAotCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJ CQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAkJCX0KIAkJfQogCQllbHNlCkBA IC0xMzYzLDggKzEzNzgsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCS8qCiAJCQkJICogVmFsaWRhdGUgdGhl IGNvbHVtbiBsaXN0LiAgSWYgdGhlIGNvbHVtbiBsaXN0IG9yIFdIRVJFCiAJCQkJICogY2xhdXNl IGNoYW5nZXMsIHRoZW4gdGhlIHZhbGlkYXRpb24gZG9uZSBoZXJlIHdpbGwgYmUKLQkJCQkgKiBk dXBsaWNhdGVkIGluc2lkZSBQdWJsaWNhdGlvbkFkZFRhYmxlcygpLiAgVGhlIHZhbGlkYXRpb24K LQkJCQkgKiBpcyBjaGVhcCBlbm91Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1sZXNzLgorCQkJCSAq IGR1cGxpY2F0ZWQgaW5zaWRlIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUKKwkJCQkg KiB2YWxpZGF0aW9uIGlzIGNoZWFwIGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCiAJ CQkJICovCiAJCQkJbmV3Y29sdW1ucyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+ cmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgIG5ld3B1YnJlbC0+Y29sdW1ucyk7CkBAIC0xNDEwLDEy ICsxNDI1LDEyIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUg ZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGlu ZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCiAJCSAqLwotCQlQdWJsaWNhdGlvbkFk ZFRhYmxlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAotCQlDbG9z ZVRhYmxlTGlzdChkZWxyZWxzKTsKKwkJQ2xvc2VSZWxhdGlvbkxpc3QoZGVscmVscyk7CiAJfQog Ci0JQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiB9CiAK IC8qCkBAIC0xNjUxLDcgKzE2NjYsNyBAQCBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIFJlbGF0aW9uIHJlbCwKICAqIEFsdGVyIHRoZSBleGlzdGlu ZyBwdWJsaWNhdGlvbi4KICAqCiAgKiBUaGlzIGlzIGRpc3BhdGNoZXIgZnVuY3Rpb24gZm9yIEFs dGVyUHVibGljYXRpb25PcHRpb25zLAotICogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMgYW5kIEFs dGVyUHVibGljYXRpb25UYWJsZXMuCisgKiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyBhbmQgQWx0 ZXJQdWJsaWNhdGlvblJlbGF0aW9ucy4KICAqLwogdm9pZAogQWx0ZXJQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQpAQCAtMTY4MywxMiAr MTY5OCwxNiBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklM OwotCQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJCUxpc3QJICAgKmV4Y2VwdHRi bHMgPSBOSUw7CisJCUxpc3QJICAgKmV4Y2VwdHNlcXMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVt YWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0 c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25z LAotCQkJCQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJ ICAgJmV4Y2VwdHRibHMsICZleGNlcHRzZXFzLCAmc2NoZW1haWRsaXN0KTsKKworCQkvKiBFWENF UFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBBTFRFUiBQVUJMSUNBVElPTiAqLworCQlB c3NlcnQoZXhjZXB0c2VxcyA9PSBOSUwpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10 LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzMwLDcgQEAg QWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQo cmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChy ZWxhdGlvbnMsIGV4Y2VwdHRibHMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1 cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxp c3QgIT0gTklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFp ZGxpc3QpOwpAQCAtMTgzMCwxMiArMTg0OSwxMiBAQCBSZW1vdmVQdWJsaWNhdGlvblNjaGVtYUJ5 SWQoT2lkIHBzb2lkKQogfQogCiAvKgotICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEg UHVibGljYXRpb25UYWJsZSBsaXN0LgotICogVGhlIHJldHVybmVkIHRhYmxlcyBhcmUgbG9ja2Vk IGluIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyIHRvCi0gKiBhZGQgdGhl bSB0byBhIHB1YmxpY2F0aW9uLgorICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVi bGljYXRpb25SZWxhdGlvbiBsaXN0LgorICogVGhlIHJldHVybmVkIHJlbGF0aW9ucyBhcmUgbG9j a2VkIGluIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyCisgKiB0byBhZGQg dGhlbSB0byBhIHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgTGlzdCAqCi1PcGVuVGFibGVMaXN0 KExpc3QgKnRhYmxlcykKK09wZW5SZWxhdGlvbkxpc3QoTGlzdCAqdGFibGVzKQogewogCUxpc3QJ ICAgKnJlbGlkcyA9IE5JTDsKIAlMaXN0CSAgICpyZWxzID0gTklMOwpAQCAtMTg0OCw3ICsxODY3 LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJICovCiAJZm9yZWFjaChsYywgdGFi bGVzKQogCXsKLQkJUHVibGljYXRpb25UYWJsZSAqdCA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9u VGFibGUsIGxjKTsKKwkJUHVibGljYXRpb25SZWxhdGlvbiAqdCA9IGxmaXJzdF9ub2RlKFB1Ymxp Y2F0aW9uUmVsYXRpb24sIGxjKTsKIAkJYm9vbAkJcmVjdXJzZSA9IHQtPnJlbGF0aW9uLT5pbmg7 CiAJCVJlbGF0aW9uCXJlbDsKIAkJT2lkCQkJbXlyZWxpZDsKQEAgLTE5ODcsNyArMjAwNiw3IEBA IE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBpbiB0 aGUgbGlzdC4KICAqLwogc3RhdGljIHZvaWQKLUNsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCitD bG9zZVJlbGF0aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBAIC0y MDMyLDExICsyMDUxLDE1IEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpCiB9CiAK IC8qCi0gKiBBZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCisgKiBBZGQgbGlz dGVkIHJlbGF0aW9ucyB0byB0aGUgcHVibGljYXRpb24uCisgKgorICogJ3B1YnJlbGtpbmQnIGlz IHRoZSByZWxraW5kIGFjY2VwdGVkIGJ5IHRoZSBwdWJsaWNhdGlvbiBjbGF1c2UuCisgKiBUaGUg cmVsa2luZCBvZiBlYWNoIHJlbGF0aW9uIGluICdyZWxzJyBpcyBjaGVja2VkIGZvciBjb21wYXRp YmlsaXR5CisgKiBhZ2FpbnN0IGl0LgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25BZGRU YWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCSBB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKK1B1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBw dWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIApA QCAtMjA0NiwxMiArMjA2OSwxMiBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExp c3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJUmVsYXRpb24JcmVsID0gcHViX3JlbC0+ cmVsYXRpb247CiAJCU9iamVjdEFkZHJlc3Mgb2JqOwogCi0JCS8qIE11c3QgYmUgb3duZXIgb2Yg dGhlIHRhYmxlIG9yIHN1cGVydXNlci4gKi8KKwkJLyogTXVzdCBiZSBvd25lciBvZiB0aGUgcmVs YXRpb24gb3Igc3VwZXJ1c2VyLiAqLwogCQlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9u UmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBHZXRVc2VySWQoKSkpCiAJCQlhY2xj aGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29ianR5cGUocmVsLT5y ZF9yZWwtPnJlbGtpbmQpLAogCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7 CiAKLQkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBwdWJfcmVsLCBpZl9u b3RfZXhpc3RzLCBzdG10KTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1Ymlk LCBwdWJfcmVsLCBpZl9ub3RfZXhpc3RzLCBzdG10LCBwdWJyZWxraW5kKTsKIAkJaWYgKHN0bXQp CiAJCXsKIAkJCUV2ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKG9iaiwgSW52YWxpZE9i amVjdEFkZHJlc3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uYzdhNDk5YWI5NmQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQpAQCAtNDU3LDcgKzQ1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ CQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxh dGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3Qg cHViX29ial9saXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAotCQkJCXB1Yl9leGNlcHRfb2JqX2xp c3Qgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF90YmxfbGlzdCBvcHRfcHVi X2V4Y2VwdF90YmxfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF9zZXFfbGlzdCBvcHRfcHViX2V4Y2Vw dF9zZXFfY2xhdXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBl IDxub2RlPglyZXR1cm5pbmdfb3B0aW9uCkBAIC01OTcsNyArNTk4LDggQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJv bGVzcGVjPiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGlj YXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKLSV0eXBlIDxwdWJsaWNhdGlvbm9i amVjdHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworJXR5cGUgPHB1YmxpY2F0aW9ub2Jq ZWN0c3BlYz4gUHVibGljYXRpb25FeGNlcHRUYmxTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9i amVjdHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNl cnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTExMzI3LDEwICsxMTMyOSwx MCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFC TEU7Ci0JCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJ CQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1u cyA9ICQzOwotCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5w dWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVi cmVsYXRpb24tPnJlbGF0aW9uID0gJDI7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9 ICQzOworCQkJCQkkJC0+cHVicmVsYXRpb24tPndoZXJlQ2xhdXNlID0gJDQ7CiAJCQkJfQogCQkJ fCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQKIAkJCQl7CkBAIC0xMTM1MSw3ICsxMTM1Myw3IEBA IFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9C Sl9DT05USU5VQVRJT047CiAJCQkJCS8qCiAJCQkJCSAqIElmIGVpdGhlciBhIHJvdyBmaWx0ZXIg b3IgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKLQkJCQkJICogYSBQdWJsaWNhdGlv blRhYmxlIG9iamVjdC4KKwkJCQkJICogYSBQdWJsaWNhdGlvblJlbGF0aW9uIG9iamVjdC4KIAkJ CQkJICovCiAJCQkJCWlmICgkMiB8fCAkMykKIAkJCQkJewpAQCAtMTEzNjEsMTAgKzExMzYzLDEw IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJCSAqIGVycm9yIHdpbGwgYmUgdGhyb3duIGxh dGVyIHZpYQogCQkJCQkJICogcHJlcHJvY2Vzc19wdWJvYmpfbGlzdCgpLgogCQkJCQkJICovCi0J CQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJCSQk LT5wdWJ0YWJsZS0+cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXIoTlVMTCwgJDEsIEAxKTsKLQkJCQkJ CSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwotCQkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNs YXVzZSA9ICQzOworCQkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25S ZWxhdGlvbik7CisJCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gbWFrZVJhbmdlVmFy KE5VTEwsICQxLCBAMSk7CisJCQkJCQkkJC0+cHVicmVsYXRpb24tPmNvbHVtbnMgPSAkMjsKKwkJ CQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkMzsKIAkJCQkJfQogCQkJCQllbHNl CiAJCQkJCXsKQEAgLTExMzc2LDEwICsxMTM3OCwxMCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJ CQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5w dWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOwotCQkJCQkkJC0+cHVidGFi bGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxh dGlvbiA9IG1ha2VSYW5nZVZhckZyb21RdWFsaWZpZWROYW1lKCQxLCAkMiwgQDEsIHl5c2Nhbm5l cik7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwotCQkJCQkkJC0+cHVidGFibGUt PndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gbWFrZVJh bmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVyKTsKKwkJCQkJJCQt PnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVD bGF1c2UgPSAkNDsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCQkJLyogZ3JhbW1h ciBsaWtlIHRhYmxlbmFtZSAqICwgT05MWSB0YWJsZW5hbWUsIE9OTFkgKCB0YWJsZW5hbWUgKSAq LwpAQCAtMTEzODcsMTAgKzExMzg5LDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQl7CiAJ CQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5 cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0JCQkJCSQkLT5wdWJ0YWJsZSA9IG1h a2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0g JDE7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwotCQkJCQkkJC0+cHVidGFibGUt PndoZXJlQ2xhdXNlID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gJDE7CisJ CQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9ICQyOworCQkJCQkkJC0+cHVicmVsYXRpb24t PndoZXJlQ2xhdXNlID0gJDM7CiAJCQkJfQogCQkJfCBDVVJSRU5UX1NDSEVNQQogCQkJCXsKQEAg LTExNDA2LDIzICsxMTQwOCwyOSBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwog CQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCi1vcHRfcHViX2V4Y2VwdF9jbGF1 c2U6Ci0JCQlFWENFUFQgJygnIFRBQkxFIHB1Yl9leGNlcHRfb2JqX2xpc3QgJyknCXsgJCQgPSAk NDsgfQorb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZToKKwkJCUVYQ0VQVCAnKCcgVEFCTEUgcHVi X2V4Y2VwdF90YmxfbGlzdCAnKScJeyAkJCA9ICQ0OyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJ CXsgJCQgPSBOSUw7IH0KKwkJOworCitvcHRfcHViX2V4Y2VwdF9zZXFfY2xhdXNlOgorCQkJRVhD RVBUICcoJyBTRVFVRU5DRSBwdWJfZXhjZXB0X3NlcV9saXN0ICcpJwl7ICQkID0gJDQ7IH0KIAkJ CXwgLypFTVBUWSovCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQogCQk7CiAKIFB1YmxpY2F0aW9uQWxs T2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQorCQkJCUFMTCBU QUJMRVMgb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZQogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uQWxsT2JqU3BlYyk7CiAJCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OX0FMTF9UQUJMRVM7Ci0JCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQzOworCQkJCQkJ JCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsKIAkJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJ CQl9Ci0JCQkJfCBBTEwgU0VRVUVOQ0VTCisJCQkJfCBBTEwgU0VRVUVOQ0VTIG9wdF9wdWJfZXhj ZXB0X3NlcV9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbkFs bE9ialNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTl9BTExfU0VRVUVO Q0VTOworCQkJCQkJJCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsKIAkJCQkJCSQkLT5sb2NhdGlv biA9IEAxOwogCQkJCQl9CiAJCQkJCTsKQEAgLTExNDMzLDIxICsxMTQ0MSw0MSBAQCBwdWJfYWxs X29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVu ZCgkMSwgJDMpOyB9CiAJOwogCi1QdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWM6CitQdWJsaWNhdGlv bkV4Y2VwdFRibFNwZWM6CiAJCQkgcmVsYXRpb25fZXhwcgogCQkJCXsKIAkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FU SU9OT0JKX0VYQ0VQVF9UQUJMRTsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGlj YXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKLQkJCQkJJCQt PnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+cHVicmVsYXRpb24gPSBtYWtlTm9k ZShQdWJsaWNhdGlvblJlbGF0aW9uKTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5leGNlcHQgPSB0 cnVlOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gJDE7CiAJCQkJCSQkLT5sb2Nh dGlvbiA9IEAxOwogCQkJCX0KIAk7CiAKLXB1Yl9leGNlcHRfb2JqX2xpc3Q6IFB1YmxpY2F0aW9u RXhjZXB0T2JqU3BlYworUHVibGljYXRpb25FeGNlcHRTZXFTcGVjOgorCQkJIHJlbGF0aW9uX2V4 cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJ JCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENFUFRfU0VRVUVOQ0U7CisJCQkJCSQk LT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+ cHVicmVsYXRpb24tPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRp b24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHViX2V4Y2Vw dF90YmxfbGlzdDogUHVibGljYXRpb25FeGNlcHRUYmxTcGVjCiAJCQkJCXsgJCQgPSBsaXN0X21h a2UxKCQxKTsgfQotCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBvcHRfdGFibGUgUHVibGlj YXRpb25FeGNlcHRPYmpTcGVjCisJCQl8IHB1Yl9leGNlcHRfdGJsX2xpc3QgJywnIG9wdF90YWJs ZSBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQ0KTsg fQorCTsKKworcHViX2V4Y2VwdF9zZXFfbGlzdDogUHVibGljYXRpb25FeGNlcHRTZXFTcGVjCisJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X3NlcV9saXN0ICcs JyBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQorCQkJfCBwdWJfZXhjZXB0X3NlcV9saXN0ICcsJyBTRVFVRU5DRSBQdWJsaWNhdGlvbkV4Y2Vw dFNlcVNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQ0KTsgfQogCTsKIApAQCAtMjA3NjUs NyArMjA3OTMsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9v YmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KG9iai0+bG9jYXRpb24pKTsKIAogCQkJKmFsbF90YWJsZXMgPSB0cnVlOwotCQkJKnB1Ym9iamVj dHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfdGFibGVzKTsKKwkJCSpw dWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3JlbGF0aW9u cyk7CiAJCX0KIAkJZWxzZSBpZiAob2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9T RVFVRU5DRVMpCiAJCXsKQEAgLTIwNzc3LDYgKzIwODA1LDcgQEAgcHJlcHJvY2Vzc19wdWJfYWxs X29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywK IAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihvYmotPmxvY2F0aW9uKSk7CiAKIAkJCSphbGxfc2Vx dWVuY2VzID0gdHJ1ZTsKKwkJCSpwdWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMs IG9iai0+ZXhjZXB0X3JlbGF0aW9ucyk7CiAJCX0KIAl9CiB9CkBAIC0yMDgxMiw4ICsyMDg0MSw4 IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FU SU9OT0JKX1RBQkxFKQogCQl7Ci0JCQkvKiByZWxhdGlvbiBuYW1lIG9yIHB1YnRhYmxlIG11c3Qg YmUgc2V0IGZvciB0aGlzIHR5cGUgb2Ygb2JqZWN0ICovCi0JCQlpZiAoIXB1Ym9iai0+bmFtZSAm JiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVicmVsYXRpb24g bXVzdCBiZSBzZXQgZm9yIHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KKwkJCWlmICghcHVib2JqLT5u YW1lICYmICFwdWJvYmotPnB1YnJlbGF0aW9uKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJCWVycm1zZygiaW52YWxpZCB0YWJs ZSBuYW1lIiksCkBAIC0yMDgyMSwxMiArMjA4NTAsMTIgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlz dChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJCQlp ZiAocHVib2JqLT5uYW1lKQogCQkJewotCQkJCS8qIGNvbnZlcnQgaXQgdG8gUHVibGljYXRpb25U YWJsZSAqLwotCQkJCVB1YmxpY2F0aW9uVGFibGUgKnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGlj YXRpb25UYWJsZSk7CisJCQkJLyogY29udmVydCBpdCB0byBQdWJsaWNhdGlvblJlbGF0aW9uICov CisJCQkJUHVibGljYXRpb25SZWxhdGlvbiAqcHVicmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNh dGlvblJlbGF0aW9uKTsKIAotCQkJCXB1YnRhYmxlLT5yZWxhdGlvbiA9CisJCQkJcHVicmVsYXRp b24tPnJlbGF0aW9uID0KIAkJCQkJbWFrZVJhbmdlVmFyKE5VTEwsIHB1Ym9iai0+bmFtZSwgcHVi b2JqLT5sb2NhdGlvbik7Ci0JCQkJcHVib2JqLT5wdWJ0YWJsZSA9IHB1YnRhYmxlOworCQkJCXB1 Ym9iai0+cHVicmVsYXRpb24gPSBwdWJyZWxhdGlvbjsKIAkJCQlwdWJvYmotPm5hbWUgPSBOVUxM OwogCQkJfQogCQl9CkBAIC0yMDgzNCwxNCArMjA4NjMsMTQgQEAgcHJlcHJvY2Vzc19wdWJvYmpf bGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJ CSBwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hF TUEpCiAJCXsKIAkJCS8qIFdIRVJFIGNsYXVzZSBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBv YmplY3QgKi8KLQkJCWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPndo ZXJlQ2xhdXNlKQorCQkJaWYgKHB1Ym9iai0+cHVicmVsYXRpb24gJiYgcHVib2JqLT5wdWJyZWxh dGlvbi0+d2hlcmVDbGF1c2UpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJXSEVSRSBjbGF1c2Ugbm90IGFsbG93 ZWQgZm9yIHNjaGVtYSIpLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRp b24pKTsKIAogCQkJLyogQ29sdW1uIGxpc3QgaXMgbm90IGFsbG93ZWQgb24gYSBzY2hlbWEgb2Jq ZWN0ICovCi0JCQlpZiAocHVib2JqLT5wdWJ0YWJsZSAmJiBwdWJvYmotPnB1YnRhYmxlLT5jb2x1 bW5zKQorCQkJaWYgKHB1Ym9iai0+cHVicmVsYXRpb24gJiYgcHVib2JqLT5wdWJyZWxhdGlvbi0+ Y29sdW1ucykKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCiAJCQkJCQllcnJtc2coImNvbHVtbiBzcGVjaWZpY2F0aW9uIG5vdCBhbGxvd2Vk IGZvciBzY2hlbWEiKSwKQEAgLTIwODQ5LDExICsyMDg3OCwxMSBAQCBwcmVwcm9jZXNzX3B1Ym9i al9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAK IAkJCS8qCiAJCQkgKiBXZSBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgZGlmZmVyZW50IHR5 cGUgb2Ygc2NoZW1hIG9iamVjdHMKLQkJCSAqIGJhc2VkIG9uIHdoZXRoZXIgbmFtZSBhbmQgcHVi dGFibGUgaXMgc2V0LgorCQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJyZWxhdGlv biBpcyBzZXQuCiAJCQkgKi8KIAkJCWlmIChwdWJvYmotPm5hbWUpCiAJCQkJcHVib2JqLT5wdWJv Ymp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQTsKLQkJCWVsc2UgaWYgKCFw dWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCisJCQllbHNlIGlmICghcHVib2JqLT5u YW1lICYmICFwdWJvYmotPnB1YnJlbGF0aW9uKQogCQkJCXB1Ym9iai0+cHVib2JqdHlwZSA9IFBV QkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOwogCQkJZWxzZQogCQkJCWVyZXBvcnQo RVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCBkNTZkY2M3MDFjZS4uZWUyMzMxZjYzNDUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNDYxNywxOCArNDYxNywyMiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAkJewogCQkJTlVMTCwgTlVMTAogCQl9OworCQlwdWJpbmZvW2ldLmV4Y2VwdF9zZXF1ZW5j ZXMgPSAoU2ltcGxlUHRyTGlzdCkKKwkJeworCQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8qIERl Y2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVj dCgmKHB1YmluZm9baV0uZG9iaiksIGZvdXQpOwogCiAJCS8qCi0JCSAqIEdldCB0aGUgbGlzdCBv ZiB0YWJsZXMgZm9yIHB1YmxpY2F0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVAotCQkgKiBU QUJMRSBjbGF1c2UuCisJCSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgYW5kIHNlcXVlbmNlcyBm b3IgcHVibGljYXRpb25zIHNwZWNpZmllZCBpbgorCQkgKiB0aGUgRVhDRVBUIGNsYXVzZS4KIAkJ ICoKLQkJICogQWx0aG91Z2ggaW5kaXZpZHVhbCB0YWJsZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0 IGNvdWxkIGJlIHN0b3JlZCBpbgotCQkgKiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNh dGlvblRhYmxlIGNhbm5vdCBiZSB1c2VkIHRvIGVtaXQKLQkJICogdGhlbSwgYmVjYXVzZSB0aGVy ZSBpcyBubyBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQUREIGNvbW1hbmQgdG8gYWRkCi0JCSAqIGlu ZGl2aWR1YWwgdGFibGUgZW50cmllcyB0byB0aGUgRVhDRVBUIGxpc3QuCisJCSAqIEFsdGhvdWdo IGluZGl2aWR1YWwgdGFibGUvc2VxdWVuY2UgZW50cmllcyBpbiBFWENFUFQgbGlzdCBjb3VsZCBi ZQorCQkgKiBzdG9yZWQgaW4gUHVibGljYXRpb25SZWxJbmZvLCBkdW1wUHVibGljYXRpb25UYWJs ZSBjYW5ub3QgYmUgdXNlZAorCQkgKiB0byBlbWl0IHRoZW0sIGJlY2F1c2UgdGhlcmUgaXMgbm8g QUxURVIgUFVCTElDQVRJT04gLi4uIEFERCBjb21tYW5kCisJCSAqIHRvIGFkZCBpbmRpdmlkdWFs IHRhYmxlIGVudHJpZXMgdG8gdGhlIEVYQ0VQVCBsaXN0LgogCQkgKgogCQkgKiBUaGVyZWZvcmUs IHRoZSBhcHByb2FjaCBpcyB0byBkdW1wIHRoZSBjb21wbGV0ZSBFWENFUFQgbGlzdCBpbiBhCiAJ CSAqIHNpbmdsZSBDUkVBVEUgUFVCTElDQVRJT04gc3RhdGVtZW50LiBQdWJsaWNhdGlvbkluZm8g aXMgdXNlZCB0bwpAQCAtNDY0Miw5ICs0NjQ2LDEwIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZl ICpmb3V0KQogCiAJCQlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LAotCQkJCQkJCSAgIlNFTEVDVCBwcnJlbGlkXG4iCi0JCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbFxuIgotCQkJCQkJCSAgIldIRVJFIHBycHViaWQg PSAldSBBTkQgcHJleGNlcHQiLAorCQkJCQkJCSAgIlNFTEVDVCBwci5wcnJlbGlkLCBwYy5yZWxr aW5kXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxu IgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwci5wcnJlbGlkID0g cGMub2lkXG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICV1IEFORCBwci5wcmV4Y2Vw dCIsCiAJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsKIAogCQkJcmVzX3RibHMg PSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CkBA IC00NjU0LDE0ICs0NjU5LDIxIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJ Zm9yIChpbnQgaiA9IDA7IGogPCBudGJsczsgaisrKQogCQkJewogCQkJCU9pZAkJCXBycmVsaWQ7 CisJCQkJY2hhcgkJcmVsa2luZDsKIAkJCQlUYWJsZUluZm8gICp0YmluZm87CiAKIAkJCQlwcnJl bGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzX3RibHMsIGosIDApKTsKKwkJCQlyZWxraW5kID0g KlBRZ2V0dmFsdWUocmVzX3RibHMsIGosIDEpOwogCiAJCQkJdGJpbmZvID0gZmluZFRhYmxlQnlP aWQocHJyZWxpZCk7CiAKIAkJCQlpZiAodGJpbmZvICE9IE5VTEwpCi0JCQkJCXNpbXBsZV9wdHJf bGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCQl7CisJ CQkJCWlmIChyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQkJCQlzaW1wbGVfcHRyX2xp c3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4Y2VwdF9zZXF1ZW5jZXMsIHRiaW5mbyk7CisJCQkJCWVs c2UKKwkJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxl cywgdGJpbmZvKTsKKwkJCQl9CiAJCQl9CiAKIAkJCVBRY2xlYXIocmVzX3RibHMpOwpAQCAtNDcy MSwxMiArNDczMywzMCBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVi bGljYXRpb25JbmZvICpwdWJpbmZvKQogCQl9CiAJCWlmIChuX2V4Y2VwdCA+IDApCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlckNoYXIocXVlcnksICcpJyk7CisJfQorCWlmIChwdWJpbmZvLT5wdWJhbGxz ZXF1ZW5jZXMpCisJeworCQlpbnQJCQluX2V4Y2VwdCA9IDA7CiAKLQkJaWYgKHB1YmluZm8tPnB1 YmFsbHNlcXVlbmNlcykKKwkJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKIAkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBBTEwgU0VRVUVOQ0VTIik7CisJCWVsc2UKKwkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CisKKwkJLyogSW5j bHVkZSBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF9zZXF1ZW5j ZXMuICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRf c2VxdWVuY2VzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJCQlUYWJsZUlu Zm8gICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKworCQkJaWYgKCsrbl9leGNl cHQgPT0gMSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBFWENFUFQgKCIpOwor CQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKwkJCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiU0VRVUVOQ0UgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJsZSh0 YmluZm8pKTsKKwkJfQorCQlpZiAobl9leGNlcHQgPiAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJD aGFyKHF1ZXJ5LCAnKScpOwogCX0KLQllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMp Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CiAK IAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChwdWJsaXNoID0gJyIpOwogCWlm IChwdWJpbmZvLT5wdWJpbnNlcnQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3MjZkOGIxMi4uOGU4Njlm ZTc5MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc5LDYgKzY3OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9Q dWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBw dWJnZW5jb2xzX3R5cGU7CiAJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOworCVNpbXBsZVB0 ckxpc3QgZXhjZXB0X3NlcXVlbmNlczsKIH0gUHVibGljYXRpb25JbmZvOwogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZWU5ZmRhNTBlNC4uNGIyYzg4ZTIzYTIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjQyLDYgKzMyNDIsMjYgQEAgbXkgJXRlc3RzID0gKAog CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAog CisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gOTIs CisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpOycs CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBGT1IgQUxM IFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxKSBX SVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJ CS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0s CisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTInID0+IHsKKwkJY3JlYXRlX29yZGVy ID0+IDkyLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSwgQUxMIFNF UVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTIgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIChUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSwgQUxMIFNFUVVF TkNFUyBFWENFUFQgKFNFUVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxKSBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwK KwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUw LAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKQEAgLTQwNDIsNiAr NDA2Miw4IEBAIG15ICV0ZXN0cyA9ICgKIAl9LAogCiAJJ0NSRUFURSBTRVFVRU5DRSB0ZXN0X3Rh YmxlX2NvbDFfc2VxJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MCwKKwkJY3JlYXRlX3NxbCA9 PiAnQ1JFQVRFIFNFUVVFTkNFIHRlc3RfdGFibGVfY29sMV9zZXEnLAogCQlyZWdleHAgPT4gcXIv XgogCQkJXFFDUkVBVEUgU0VRVUVOQ0UgZHVtcF90ZXN0LnRlc3RfdGFibGVfY29sMV9zZXFcRQog CQkJXG5ccytcUUFTIGludGVnZXJcRQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBlMTQ0OTY1NGY5Ni4uZTNlNzE4NmUw MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWls cyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCXsKIAkJUEdyZXN1bHQgICAqcmVzdWx0ID0gTlVM TDsKIAkJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQkJY2hhcgkgICAqZm9vdGVy c1szXSA9IHtOVUxMLCBOVUxMLCBOVUxMfTsKKwkJY2hhcgkgICAqZm9vdGVyc1s0XSA9IHtOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMg Ki9cbiIsIF8oIkdldCBzZXF1ZW5jZSBpbmZvcm1hdGlvbiIpKTsKIAkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTAwMDAwKQpAQCAtMTg4MiwxMSArMTg4MiwxNiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl7CiAJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsCiAJCQkJCQkJICBfKCJHZXQgcHVibGljYXRpb25zIGNvbnRhaW5p bmcgdGhpcyBzZXF1ZW5jZSIpKTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1Qg cHVibmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcCIKKwkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsICJTRUxFQ1QgcC5wdWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbiBwIgogCQkJCQkJCSAgIlxuV0hFUkUgcC5wdWJhbGxzZXF1ZW5jZXMiCiAJCQkJCQkJICAi XG4gQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJykiCisJCQkJ CQkJICAiXG4gQU5EIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCSAgIiAgICAgU0VMRUNUIDFcbiIK KwkJCQkJCQkgICIgICAgIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIK KwkJCQkJCQkgICIgICAgIFdIRVJFIHByLnBycHViaWQgPSBwLm9pZCBBTkRcbiIKKwkJCQkJCQkg ICIgICAgIHByLnBycmVsaWQgPSAnJXMnKSIKIAkJCQkJCQkgICJcbk9SREVSIEJZIDEiLAotCQkJ CQkJCSAgb2lkKTsKKwkJCQkJCQkgIG9pZCwgb2lkKTsKIAogCQkJcmVzdWx0ID0gUFNRTGV4ZWMo YnVmLmRhdGEpOwogCQkJaWYgKHJlc3VsdCkKQEAgLTE5MTIsNiArMTkxNyw0MiBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJfQogCQl9CiAKKwkJ LyogUHJpbnQgcHVibGljYXRpb25zIHdoZXJlIHRoZSBzZXF1ZW5jZSBpcyBpbiB0aGUgRVhDRVBU IGNsYXVzZSAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHAucHVibmFtZVxuIgorCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIK KwkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJ CQkJCQkgICJPUkRFUiBCWSAxOyIsIG9pZCk7CisKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5k YXRhKTsKKwkJCWlmIChyZXN1bHQpCisJCQl7CisJCQkJaW50CQkJdHVwbGVzID0gUFFudHVwbGVz KHJlc3VsdCk7CisKKwkJCQlpZiAodHVwbGVzID4gMCkKKwkJCQl7CisJCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZ0bXBidWYsIF8oIkV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25zOiIpKTsKKworCQkJ CQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCQkJZm9yIChpID0g MDsgaSA8IHR1cGxlczsgaSsrKQorCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJnRtcGJ1ZiwgIlxu ICAgIFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQkJaWYgKGZvb3Rl cnNbMF0gPT0gTlVMTCkKKwkJCQkJCWZvb3RlcnNbMF0gPSBwZ19zdHJkdXAodG1wYnVmLmRhdGEp OworCQkJCQllbHNlIGlmIChmb290ZXJzWzFdID09IE5VTEwpCisJCQkJCQlmb290ZXJzWzFdID0g cGdfc3RyZHVwKHRtcGJ1Zi5kYXRhKTsKKwkJCQkJZWxzZQorCQkJCQkJZm9vdGVyc1syXSA9IHBn X3N0cmR1cCh0bXBidWYuZGF0YSk7CisJCQkJCXJlc2V0UFFFeHBCdWZmZXIoJnRtcGJ1Zik7CisJ CQkJfQorCisJCQkJUFFjbGVhcihyZXN1bHQpOworCQkJfQorCQl9CisKIAkJaWYgKHRhYmxlaW5m by5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkKIAkJCXByaW50ZlBR RXhwQnVmZmVyKCZ0aXRsZSwgXygiVW5sb2dnZWQgc2VxdWVuY2UgXCIlcy4lc1wiIiksCiAJCQkJ CQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOwpAQCAtMTkyOCw2ICsxOTY5LDcgQEAgZGVz Y3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAogCQlmcmVlKGZv b3RlcnNbMF0pOwogCQlmcmVlKGZvb3RlcnNbMV0pOworCQlmcmVlKGZvb3RlcnNbMl0pOwogCiAJ CXJldHZhbCA9IHRydWU7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwkJLyogbm90IGFuIGVycm9yLCBq dXN0IHJldHVybiBlYXJseSAqLwpAQCAtNjk1MCw2ICs2OTkyLDcgQEAgZGVzY3JpYmVQdWJsaWNh dGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJY2hhcgkgICAqcHViaWQgPSBQUWdldHZhbHVl KHJlcywgaSwgMCk7CiAJCWNoYXIJICAgKnB1Ym5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMSk7 CiAJCWJvb2wJCXB1YmFsbHRhYmxlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0 IikgPT0gMDsKKwkJYm9vbAkJcHViYWxsc2VxdWVuY2VzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCA0KSwgInQiKSA9PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5wb3B0LnRv cHQ7CiAKIAkJaW5pdFBRRXhwQnVmZmVyKCZ0aXRsZSk7CkBAIC02OTg2LDcgKzcwMjksNyBAQCBk ZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJcHJpbnRUYWJsZUFk ZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7CiAJCXBy aW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMTEpLCBmYWxzZSwgZmFs c2UpOwogCi0JCWlmICghcHViYWxsdGFibGVzKQorCQlpZiAoIXB1YmFsbHRhYmxlcyAmJiAhcHVi YWxsc2VxdWVuY2VzKQogCQl7CiAJCQkvKiBHZXQgdGhlIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmll ZCBwdWJsaWNhdGlvbiAqLwogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4i LApAQCAtNzA0MCw3ICs3MDgzLDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAq cGF0dGVybikKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQl9CiAJCX0KLQkJZWxzZQorCQlp ZiAocHViYWxsdGFibGVzKQogCQl7CiAJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCiAJ CQl7CkBAIC03MDUyLDEzICs3MDk1LDMyIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNo YXIgKnBhdHRlcm4pCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCiAJ CQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g Yy5yZWxuYW1lc3BhY2VcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVS RSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiV0hFUkUg cHIucHJwdWJpZCA9ICclcycgQU5EIHByLnByZXhjZXB0IEFORCBjLnJlbGtpbmQgSU4gKCdyJywn cCcpXG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CiAJCQkJaWYgKCFhZGRGb290 ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAogCQkJCQkJCQkJ CQkJdHJ1ZSwgJmNvbnQpKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQorCQlp ZiAocHViYWxsc2VxdWVuY2VzKQorCQl7CisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDAp CisJCQl7CisJCQkJLyogR2V0IHNlcXVlbmNlcyBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgdGhp cyBwdWJsaWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xu IiwKKwkJCQkJCQkJICBfKCJHZXQgc2VxdWVuY2VzIGV4Y2x1ZGVkIGJ5IHRoaXMgcHVibGljYXRp b24iKSk7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNUIG4u bnNwbmFtZSB8fCAnLicgfHwgYy5yZWxuYW1lXG4iCisJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVz cGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiIKKwkJCQkJCQkJICAiICAgICBKT0lO IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxu IgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHQgQU5E IGMucmVsa2luZCA9ICdTJ1xuIgorCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJ CWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiRXhjZXB0IHNlcXVlbmNl czoiKSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJZ290byBlcnJvcl9yZXR1cm47 CisJCQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2Us IHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVwKCZjb250KTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwppbmRleCBkZTU0N2E4Y2IzNy4uMTJkMjc2Y2JiNjUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKQEAgLTM3NjEsNiArMzc2MSwxOCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zf dGFibGVzKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0 Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIiki KTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIikpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCAoIFNF UVVFTkNFIiwgIldJVEggKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIikpCisJ CUNPTVBMRVRFX1dJVEgoIiggU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVY Q0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNF UVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIpKQorCQlDT01QTEVURV9XSVRIX1ND SEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFV RU5DRVMiLCAiRVhDRVBUIiwgIigiLCAiU0VRVUVOQ0UiLCBNYXRjaEFueU4pICYmIGVuZHNfd2l0 aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3Jf bGlzdF9vZl9zZXF1ZW5jZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigi LCAiU0VRVUVOQ0UiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJ Q09NUExFVEVfV0lUSCgiKSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIpKQogCQlDT01QTEVURV9XSVRIKCJJTiBT Q0hFTUEiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcs JykpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggODliNGJiMTRmNjIuLjQ5 YzI5YTg3NjMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xNzcsOCAr MTc3LDggQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogCiBleHRlcm4gTGlzdCAq R2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCiAJCQkJCQkJCQkJCSBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwotZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMoT2lkIHB1YmlkLAotCQkJCQkJCQkJCSAgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwogZXh0 ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxr aW5kLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1h cyhPaWQgcHViaWQpOwpAQCAtMjAwLDcgKzIwMCw4IEBAIGV4dGVybiBib29sIGNoZWNrX2FuZF9m ZXRjaF9jb2x1bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJ TWVtb3J5Q29udGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzKTsKIGV4dGVybiBPYmplY3RBZGRy ZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5m byAqcHJpLAogCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJCQkJCQkJICBB bHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCk7CisJCQkJCQkJCQkJCSAgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKmFsdGVyX3N0bXQsCisJCQkJCQkJCQkJCSAgY2hhciBwdWJyZWxraW5kKTsK IGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3ZhbGlkYXRlKFJlbGF0aW9uIHRhcmdldHJl bCwgTGlzdCAqY29sdW1ucyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRf c2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLAogCQkJCQkJCQkJCQlib29sIGlmX25vdF9l eGlzdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkxMzc3YTZjZGUzLi4yMDRhZWE2MTBj YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDQ2NSwxNCArNDQ2NSwxNCBAQCB0eXBlZGVm IHN0cnVjdCBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQKIAlib29sCQltaXNzaW5nX29rOwkJLyog Zm9yIERST1AgLSBza2lwIGVycm9yIGlmIG1pc3Npbmc/ICovCiB9IEFsdGVyVFNDb25maWd1cmF0 aW9uU3RtdDsKIAotdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQordHlwZWRlZiBzdHJ1 Y3QgUHVibGljYXRpb25SZWxhdGlvbgogewogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIgICAq cmVsYXRpb247CQkvKiBwdWJsaWNhdGlvbiByZWxhdGlvbiAqLwogCU5vZGUJICAgKndoZXJlQ2xh dXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9m IGNvbHVtbnMgaW4gYSBwdWJsaWNhdGlvbiB0YWJsZSAqLwogCWJvb2wJCWV4Y2VwdDsJCQkvKiBU cnVlIGlmIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwotfSBQdWJsaWNhdGlvblRhYmxl OworfSBQdWJsaWNhdGlvblJlbGF0aW9uOwogCiAvKgogICogUHVibGljYXRpb24gb2JqZWN0IHR5 cGUKQEAgLTQ0ODEsNiArNDQ4MSw3IEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNU eXBlCiB7CiAJUFVCTElDQVRJT05PQkpfVEFCTEUsCQkvKiBBIHRhYmxlICovCiAJUFVCTElDQVRJ T05PQkpfRVhDRVBUX1RBQkxFLAkvKiBBIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJ UFVCTElDQVRJT05PQkpfRVhDRVBUX1NFUVVFTkNFLCAvKiBBIHNlcXVlbmNlIGluIHRoZSBFWENF UFQgY2xhdXNlICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxsIHRh YmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJ LyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9w YXRoICovCkBAIC00NDkyLDcgKzQ0OTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbk9i alNwZWMKIAlOb2RlVGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHVib2JqdHlw ZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwogCWNoYXIJICAgKm5hbWU7 Ci0JUHVibGljYXRpb25UYWJsZSAqcHVidGFibGU7CisJUHVibGljYXRpb25SZWxhdGlvbiAqcHVi cmVsYXRpb247CiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKQEAgLTQ1MDksNyArNDUxMCw5 IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5 cGU7CiAJUHVibGljYXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBw dWJsaWNhdGlvbiBvYmplY3QgKi8KLQlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMg c3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJTGlzdAkgICAqZXhjZXB0X3JlbGF0 aW9uczsJLyogZGVwZW5kaW5nIG9uIHRoZSAncHVib2JqdHlwZScsIHRoaXMgaXMKKwkJCQkJCQkJ CSAqIGEgbGlzdCBvZiBlaXRoZXIgdGFibGVzIG9yIHNlcXVlbmNlcworCQkJCQkJCQkJICogc3Bl Y2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNw ZWM7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjll NTRiMjE0YTAuLjE1YzMwZmZlZWZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dApAQCAtNDU4LDcgKzQ1OCw3IEBAIEV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25z OgogTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDEgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKIAogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGVz dHB1Yl9wYXJ0MSk7Ci1FUlJPUjogIGNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uICJwdWJsaWMudGVz dHB1Yl9wYXJ0MSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UKK0VSUk9SOiAgY2Fu bm90IHNwZWNpZnkgInB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUgcHVibGljYXRpb24gRVhD RVBUIChUQUJMRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9y dGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuCiBDUkVBVEUgVEFCTEUgdGFiX21haW4gKGEg aW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiAtLSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMg bm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcnMgaW4gYQpAQCAtNDcz LDYgKzQ3Myw3IEBAIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAtLS0gVGVzdHMgZm9yIHB1 YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3Nl cTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKK0NSRUFURSBT RVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEyOwogLS0gRk9SIEFMTCBTRVFVRU5DRVMKIFNFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1 Yl9mb3JhbGxzZXF1ZW5jZXMxIEZPUiBBTEwgU0VRVUVOQ0VTOwpAQCAtNTM0LDEwICs1MzUsNjQg QEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2VxdWVuY2VzIEZST00gcGdf cHVibGljYXRpb24gV0hFUkUgcHVibmFtZQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgc3RvcmVkICAgICAgICAgICAgfCBmICAgICAgICB8IAogKDEgcm93KQogCi1E Uk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7 CistLSBUZXN0IEFMTCBTRVFVRU5DRVMgd2l0aCBFWENFUFQgY2xhdXNlCitTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y YWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nf cHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEsIFNFUVVFTkNFIHJlZ3Jlc3NfcHVi X3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gcmVncmVz c19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorRXhjZXB0IHNlcXVl bmNlczoKKyAgICAicHViX3Rlc3QucmVncmVzc19wdWJfc2VxMSIKKyAgICAicHVibGljLnJlZ3Jl c3NfcHViX3NlcTAiCisgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEyIgorCistLSBDaGVjayB0 aGF0IHRoZSBzZXF1ZW5jZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJl IGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK1xkKyByZWdyZXNzX3B1Yl9z ZXEwCisgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1YmxpYy5yZWdyZXNzX3B1Yl9z ZXEwIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJ bmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdp bnQgfCAgICAgMSB8ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwg bm8gICAgICB8ICAgICAxCitJbmNsdWRlZCBpbiBwdWJsaWNhdGlvbnM6CisgICAgInJlZ3Jlc3Nf cHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIgorICAgICJyZWdyZXNzX3B1Yl9mb3JhbGxz ZXF1ZW5jZXMxIgorICAgICJyZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyIgorRXhjbHVkZWQg ZnJvbSBwdWJsaWNhdGlvbnM6CisgICAgInJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMiCisK K1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlz IHNwZWNpZmllZCBpbiBFWENFUFQgdGFibGUgbGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdy ZXNzX3B1Yl9zZXEwKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3B1 Yl9zZXEwIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlCitERVRBSUw6 ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBzZXF1ZW5jZXMuCistLSBmYWls IC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAorQ1JF QVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJf c2VxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy50YWJfc2VxIiBpbiB0aGUgcHVi bGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCitERVRBSUw6ICBUaGlzIG9wZXJhdGlv biBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCistLSBUZXN0IGNvbWJpbmF0aW9uIG9mIEFM TCBTRVFVRU5DRVMgYW5kIEFMTCBUQUJMRVMgd2l0aCBFWENFUFQgY2xhdXNlCitTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUg dGVzdHB1Yl90YmwxKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3NfcHVi X3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAg fCAKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCitFeGNlcHQgc2Vx dWVuY2VzOgorICAgICJwdWJsaWMucmVncmVzc19wdWJfc2VxMCIKKworUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKK0RST1AgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3QucmVn cmVzc19wdWJfc2VxMSwgcmVncmVzc19wdWJfc2VxMjsKIERST1AgUFVCTElDQVRJT04gcmVncmVz c19wdWJfZm9yYWxsc2VxdWVuY2VzMTsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y YWxsc2VxdWVuY2VzMjsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVu Y2VzMzsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0 YWJsZXM7CitEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxs dGFibGVzMTsKK0RST1AgVEFCTEUgdGFiX3NlcTsKIC0tIGZhaWwgLSBTcGVjaWZ5aW5nIEFMTCBU QUJMRVMgbW9yZSB0aGFuIG9uY2UKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3Jf YWxsc2VxdWVuY2VzX2FsbHRhYmxlcyBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUywgQUxM IFRBQkxFUzsKIEVSUk9SOiAgaW52YWxpZCBwdWJsaWNhdGlvbiBvYmplY3QgbGlzdApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDA0MWUxNGE0ZGU2Li5kNDcyNTUzYzdjZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMjIzLDYgKzIyMyw3IEBAIERS T1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRo IFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VR VUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNz X3B1Yl9zZXEyOwogCiAtLSBGT1IgQUxMIFNFUVVFTkNFUwogU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOwpAQCAtMjUzLDEwICsyNTQsMzUgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBGUk9N IHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAncmVncmVzc19wdWJfZm9yX2FsbHNlcXVl bmNlc19hbGx0YWJsZXMnOwogXGRScCsgcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0 YWJsZXMKIAotRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdyZXNz X3B1Yl9zZXExOworLS0gVGVzdCBBTEwgU0VRVUVOQ0VTIHdpdGggRVhDRVBUIGNsYXVzZQorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExLCBTRVFVRU5DRSBy ZWdyZXNzX3B1Yl9zZXEyKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMKKy0t IENoZWNrIHRoYXQgdGhlIHNlcXVlbmNlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlv bnMgd2hlcmUgaXQgaXMgbGlzdGVkCistLSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorXGQrIHJlZ3Jl c3NfcHViX3NlcTAKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CisKKy0tIGZhaWwgLSBzZXF1 ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CitDUkVBVEUgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworCistLSBmYWlsIC0gdGFibGUgb2JqZWN0IGlz IHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAorQ1JFQVRFIFRBQkxFIHRhYl9zZXEo YSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQg Rk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsKKworLS0gVGVzdCBj b21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwgVEFCTEVTIHdpdGggRVhDRVBUIGNs YXVzZQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFV RU5DRSByZWdyZXNzX3B1Yl9zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5j ZXNfYWxsdGFibGVzMQorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworRFJPUCBTRVFVRU5D RSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExLCByZWdyZXNzX3B1 Yl9zZXEyOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwog RFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJM SUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzOwogRFJPUCBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxOworRFJPUCBUQUJMRSB0YWJf c2VxOwogCiAtLSBmYWlsIC0gU3BlY2lmeWluZyBBTEwgVEFCTEVTIG1vcmUgdGhhbiBvbmNlCiBD UkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMg Rk9SIEFMTCBTRVFVRU5DRVMsIEFMTCBUQUJMRVMsIEFMTCBUQUJMRVM7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbAppbmRleCA4YzU4ZDI4MmVlZS4uYzAzYzc3YmI0MWUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbApAQCAtMjgyLDYgKzI4Miw4MSBAQCAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRh cF9zdWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBV QkxJQ0FUSU9OIHRhcF9wdWIxJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOwogCisjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEVYQ0VQVCBjbGF1c2UgdGVzdCBjYXNlcyBm b3Igc2VxdWVuY2VzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSAoCisJQ1JF QVRFIFRBQkxFIHNlcV90ZXN0ICh2IEJJR0lOVCk7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcTE7CisJ Q1JFQVRFIFNFUVVFTkNFIHNlcTI7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2 YWwoJ3NlcTEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gc2Vx X3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcTInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7 CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0Ugc2VxMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcSgKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2Vx MjsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViMTsKKykpOworCisjIFdhaXQgZm9yIGluaXRpYWwg c3luYyB0byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0g MCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJyk7 IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNl ZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJl ciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgaW5pdGlhbCBkYXRhIG9uIHN1 YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcTEiKTsKK2lzKCRyZXN1 bHQsICcxfGYnLCAnc2VxdWVuY2VzIGluIEVYQ0VQVCBsaXN0IGlzIGV4Y2x1ZGVkJyk7CisKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcTIiKTsKK2lzKCRyZXN1bHQsICcxMDB8dCcs ICdpbml0aWFsIHRlc3QgZGF0YSByZXBsaWNhdGVkIGZvciBzZXEyJyk7CisKKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCB3aGVuIGEgc3Vic2Ny aXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucworIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNU IG5leHR2YWwoJ3NlcTEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElO VE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcTInKSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwgU0VRVUVOQ0VTIEVY Q0VQVCAoU0VRVUVOQ0Ugc2VxMik7CispKTsKKworIyBTdWJzY3JpYmUgdG8gbXVsdGlwbGUgcHVi bGljYXRpb25zIHdpdGggZGlmZmVyZW50IEVYQ0VQVCBzZXF1ZW5jZSBsaXN0Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMjsKKwlBTFRFUiBTVUJT Q1JJUFRJT04gdGFwX3N1YiBSRUZSRVNIIFNFUVVFTkNFUzsKKykpOworJHN5bmNlZF9xdWVyeSA9 CisgICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBz cnN1YnN0YXRlIE5PVCBJTiAoJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIHNlcTEg aXMgZXhjbHVkZWQgaW4gdGFwX3B1YjEgYnV0IGluY2x1ZGVkIGluIHRhcF9wdWIyLCBzbyBvdmVy YWxsIHRoZQorIyBzdWJzY3JpcHRpb24gdHJlYXRzIGl0IGFzIGluY2x1ZGVkLgorJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92 YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxMSIpOworaXMoJHJlc3VsdCwgJzIwMHx0JywKKwknY2hl Y2sgcmVwbGljYXRpb24gb2YgYSBzZXF1ZW5jZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBvbmUg cHVibGljYXRpb24gYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXInCispOworCisjIHNlcTIgaXMgZXhj bHVkZWQgaW4gdGFwX3B1YjIgYnV0IGluY2x1ZGVkIGluIHRhcF9wdWIxLCBzbyBvdmVyYWxsIHRo ZQorIyBzdWJzY3JpcHRpb24gdHJlYXRzIGl0IGFzIGluY2x1ZGVkLgorJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwg aXNfY2FsbGVkIEZST00gc2VxMiIpOworaXMoJHJlc3VsdCwgJzIwMHx0JywKKwknY2hlY2sgcmVw bGljYXRpb24gb2YgYSBzZXF1ZW5jZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBvbmUgcHVibGlj YXRpb24gYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXInCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9w dWIxJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJM SUNBVElPTiB0YXBfcHViMicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKIAog ZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhjZjQwYzg3MDQz Li5hMDRkN2RlM2NkYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI0NzMsOCArMjQ3 Myw4IEBAIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIFB1YmxpY2F0aW9uUGFydE9wdAogUHVibGlj YXRpb25SZWxJbmZvCiBQdWJsaWNhdGlvblJlbEtpbmQKK1B1YmxpY2F0aW9uUmVsYXRpb24KIFB1 YmxpY2F0aW9uU2NoZW1hSW5mbwotUHVibGljYXRpb25UYWJsZQogUHVibGlzaEdlbmNvbHNUeXBl CiBQdWxsRmlsdGVyCiBQdWxsRmlsdGVyT3BzCi0tIAoyLjM0LjEKCg== --00000000000067b6290652f393d2 Content-Type: application/octet-stream; name="v8-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Disposition: attachment; filename="v8-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpqv91771 RnJvbSBlYmJmMzEyODgwNmM1Mjg4OWJmYjMwMjE0MWUwMTcwMTUxM2EwNWRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTEgTWF5IDIwMjYgMTA6NTk6MjggKzA1MzAKU3ViamVjdDogW1BBVENIIHY4 IDIvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQUxURVIgUFVCTElDQVRJ T04KCkV4dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IGFuIEVYQ0VQVCBjbGF1c2Ug d2hlbiB1c2luZwpBTEwgU0VRVUVOQ0VTLCBhbGxvd2luZyBzcGVjaWZpYyBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSB0aGUKcHVibGljYXRpb24uCgpJZiB0aGUgRVhDRVBUIGNsYXVzZSBp cyBzcGVjaWZpZWQsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBmb3IgdGhlCnB1YmxpY2F0 aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHNlcXVlbmNlcy4gSWYgdGhlIEVYQ0VQ VApjbGF1c2UgaXMgb21pdHRlZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHNlcXVlbmNl cyBhcmUgY2xlYXJlZC4KCkV4YW1wbGU6CgogIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIEFM TCBTRVFVRU5DRVM7CgpUaGlzIGNsZWFycyBhbnkgZXhpc3Rpbmcgc2VxdWVuY2UgZXhjbHVzaW9u cyBmb3IgdGhlIHB1YmxpY2F0aW9uLgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEsIHMyKTsKClRoaXMgc2V0cyB0aGUgZXhjbHVz aW9uIGxpc3QgdG8gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZXMuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgfCAgNDEgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgMzEgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICB8IDI2MyArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDE2ICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgICAgICB8ICAgNSArCiA3IGZpbGVzIGNoYW5nZWQsIDIzNCBpbnNlcnRp b25zKCspLCAxNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlv bi5zZ21sCmluZGV4IGFhMzJiYjE2OWU5Li4xNWI5N2VmZDU2NiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzYsNyArMzYsNyBAQCBBTFRFUiBQVUJMSUNBVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1Ymxp Y2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAg ICBBTEwgVEFCTEVTIFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4 Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwgU0VR VUVOQ0VTCisgICAgQUxMIFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNh dGlvbl9kcm9wX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAt NTQsNiArNTQsMTAgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8 L3BocmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IGlz OjwvcGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3Jl ZnN5bm9wc2lzZGl2PgogCkBAIC03NSw3ICs3OSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxy CiAgICBUaGUgdGhpcmQgdmFyaWFudCBlaXRoZXIgbW9kaWZpZXMgdGhlIGluY2x1ZGVkIHRhYmxl cy9zY2hlbWFzCiAgICBvciBtYXJrcyB0aGUgcHVibGljYXRpb24gYXMgPGxpdGVyYWw+Rk9SIEFM TCBTRVFVRU5DRVM8L2xpdGVyYWw+IG9yCiAgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4sIG9wdGlvbmFsbHkgdXNpbmcKLSAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gdG8g ZXhjbHVkZSBzcGVjaWZpYyB0YWJsZXMuIFRoZQorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFs PiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBvciBzZXF1ZW5jZXMuIFRoZQogICAgPGxpdGVy YWw+U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4gdHJhbnNmb3JtIGFuIGVtcHR5 IHB1YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5D RVM8L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4pLCBpbnRvCkBAIC04NiwxMSArOTAs MTUgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHB1YmxpY2F0aW9uIGRlZmluZWQgZm9y IDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBJbiBhZGRpdGlvbiwKICAgIDxsaXRl cmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHRh YmxlcyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVz ZSBvZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24u IElmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGlzIHNwZWNpZmllZCB3aXRoIGEgbGlz dCBvZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBpcyByZXBsYWNlZAotICAg d2l0aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBp cyBvbWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIGNsZWFyZWQuIFRo ZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbgotICAgdXNlZCB3aXRoIGEgcHVi bGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKKyAg IDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJsaWNhdGlvbiBhbmQKKyAgIDxs aXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUg dGhlIHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4g cHVibGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIHNwZWNpZmll ZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2VxdWVuY2VzLAorICAgdGhlIGV4aXN0aW5nIGV4 Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB0YWJsZXMgb3IKKyAg IHNlcXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUg ZXhpc3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8 L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdpdGggYQorICAgcHVibGljYXRpb24gZGVmaW5l ZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKICAgIDxsaXRlcmFsPkZPUiBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3Nj aGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhl IGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAgICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUg cHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpAQCAtMjc3LDYgKzI4NSwyNSBAQCBBTFRFUiBQ VUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdXNl cnMsIGRlcGFydG1lbnRzKQogICAgdGFibGVzOgogPHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVC TElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFRBQkxFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+ PC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVwbGFjZSB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUg cHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVC TElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNF IHNlcTEsIHNlcTIpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBS ZXNldCB0aGUgcHVibGljYXRpb24gdG8gYmUgYSBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uIHdp dGggbm8gZXhjbHVkZWQKKyAgIHNlcXVlbmNlczoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBV QkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIEFMTCBTRVFVRU5DRVM7Cis8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJlcGxhY2UgdGhlIHRhYmxlIGFuZCBzZXF1ZW5j ZSBsaXN0IGluIHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2U6Cis8cHJvZ3JhbWxpc3Rp bmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVYQ0VQ VCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVF TkNFIHNlcTEsIHNlcTIpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWZkMmMyNzk1YWIuLjY4NjQ0MWZj YWI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC05NDYsNyArOTQ2LDcg QEAgR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAgKi8KIHN0YXRp YyBMaXN0ICoKIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQsCi0JCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCisJCQkJCQkg IGJvb2wgZXhjZXB0X2ZsYWcsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0CSAgICpyZXN1bHQ7 CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTk1NCw2ICs5NTQsOCBAQCBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog CVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydChwdWJyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcHVicmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsK KwogCS8qIEZpbmQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9u LiAqLwogCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwg QWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtOTczLDggKzk3NSwxNSBAQCBnZXRfcHVibGljYXRpb25f cmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogCQlw dWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwogCiAJCWlm IChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQotCQkJcmVzdWx0ID0gR2V0UHViUGFy dGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJCQkJ cHVicmVsLT5wcnJlbGlkKTsKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2lu ZChwdWJyZWwtPnBycmVsaWQpOworCisJCQlpZiAoKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9SRUxB VElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pIHx8CisJCQkJKHB1YnJlbGtpbmQg PT0gUkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpIHx8CisJCQkJKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiByZWxraW5kID09 IFJFTEtJTkRfU0VRVUVOQ0UpKQorCQkJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJl bGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVs aWQpOworCQl9CiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTk5OCw3ICsxMDA3 LDcgQEAgR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKIAlBc3NlcnQoIUdldFB1YmxpY2F0aW9uKHB1Ymlk KS0+YWxsdGFibGVzKTsKIAotCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1Ymlk LCBwdWJfcGFydG9wdCwgZmFsc2UpOworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25z KHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UsIFJFTEtJTkRfUkVMQVRJT04pOwogfQogCiAvKgpA QCAtMTAwNiwxMiArMTAxNSwxMyBAQCBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogICogJ0ZPUiBBTEwgVEFC TEVTJyBvciBhICdGT1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgot R2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCkKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1 YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCisJCQkJCQkJCWNoYXIgcHVicmVs a2luZCkKIHsKIAlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMgfHwKIAkJ ICAgR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGxzZXF1ZW5jZXMpOwogCi0JcmV0dXJuIGdldF9w dWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKKwlyZXR1cm4g Z2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUsIHB1YnJl bGtpbmQpOwogfQogCiAvKgpAQCAtMTA2NSw3ICsxMDc1LDcgQEAgR2V0QWxsVGFibGVzUHVibGlj YXRpb25zKHZvaWQpCiAgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgbWVudGlvbmVkIGluIHRoZSBF WENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcHVicmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQog ewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKQEAgLTEwNzQsMTkg KzEwODQsMjAgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJl bGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdAkg ICAqZXhjZXB0bGlzdCA9IE5JTDsKIAotCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFV RU5DRSAmJiBwdWJ2aWFyb290KSk7CisJQXNzZXJ0KCEocHVicmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAogCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyB0 byB0YWJsZXMgYW5kIHNlcXVlbmNlcyAqLwogCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJ CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJIHB1YnJlbGtp bmQpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNz U2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJQW51bV9wZ19jbGFzc19y ZWxraW5kLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFSRVEsCi0JCQkJQ2hhckdl dERhdHVtKHJlbGtpbmQpKTsKKwkJCQlDaGFyR2V0RGF0dW0ocHVicmVsa2luZCkpOwogCiAJc2Nh biA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGU5NzU3OGRkZDc1Li5iNTAxZDgxY2U3 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTY2LDcgKzY2LDcg QEAgc3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVscyk7CiBzdGF0aWMgdm9p ZCBMb2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0 aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3Rz LAogCQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCk7 Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxz LCBib29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wUmVsYXRpb25z KE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1 YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90 X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9v bCBtaXNzaW5nX29rKTsKQEAgLTEyNTEsMjYgKzEyNTEsMTMxIEBAIEludmFsaWRhdGVQdWJsaWNh dGlvblJlbHMoTGlzdCAqcmVsaWRzKQogfQogCiAvKgotICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0 by9mcm9tIHB1YmxpY2F0aW9uLgorICogUmVjcmVhdGUgbGlzdCBvZiB0YWJsZXMvc2VxdWVuY2Vz IHRvIGJlIGRyb3BwZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCisgKiBUbyByZWNyZWF0ZSB0aGUg cmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvciBleGlzdGluZworICog cmVsYXRpb25zIHRoYXQgZG8gbm90IG5lZWQgdG8gYmUgZHJvcHBlZC4KKyAqCisgKiAncmVscycg Y29udGFpbnMgdGhlIGdpdmVuIGxpc3Qgb2YgcmVsYXRpb25zLCBhbmQgJ29sZHJlbGlkcycgY29u dGFpbnMKKyAqIHRoZSBPSURzIG9mIGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRp b24gaWRlbnRpZmllZCBieSAncHViaWQnLgorICovCitzdGF0aWMgTGlzdCAqCitnZXRfZGVsZXRl X3JlbHMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBMaXN0ICpvbGRyZWxpZHMpCit7CisJTGlzdCAq ZGVscmVscyA9IE5JTDsKKworCWZvcmVhY2hfb2lkKG9sZHJlbGlkLCBvbGRyZWxpZHMpCisJewor CQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJUHVibGljYXRpb25SZWxJbmZvICpvbGRyZWw7CisJCWJv b2wJCWZvdW5kID0gZmFsc2U7CisJCUhlYXBUdXBsZQlyZnR1cGxlOworCQlOb2RlCSAgICpvbGRy ZWx3aGVyZWNsYXVzZSA9IE5VTEw7CisJCUJpdG1hcHNldCAgKm9sZGNvbHVtbnMgPSBOVUxMOwor CisJCS8qIGxvb2sgdXAgdGhlIGNhY2hlIGZvciB0aGUgb2xkIHJlbG1hcCAqLworCQlyZnR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0ob2xkcmVsaWQpLAorCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KworCQkvKgorCQkgKiBTZWUgaWYgdGhlIGV4aXN0aW5nIHJlbGF0aW9uIGN1cnJlbnRseSBoYXMg YSBXSEVSRSBjbGF1c2Ugb3IgYQorCQkgKiBjb2x1bW4gbGlzdC4gV2UgbmVlZCB0byBjb21wYXJl IHRob3NlIHRvby4KKwkJICovCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHJmdHVwbGUpKQorCQl7 CisJCQlib29sCQlpc251bGwgPSB0cnVlOworCQkJRGF0dW0JCXdoZXJlQ2xhdXNlRGF0dW07CisJ CQlEYXR1bQkJY29sdW1uTGlzdERhdHVtOworCisJCQkvKiBMb2FkIHRoZSBXSEVSRSBjbGF1c2Ug Zm9yIHRoaXMgdGFibGUuICovCisJCQl3aGVyZUNsYXVzZURhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAorCQkJCQkJCQkJCQkgICBBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9wcnF1YWwsCisJCQkJCQkJCQkJCSAgICZpc251bGwpOworCQkJaWYgKCFpc251 bGwpCisJCQkJb2xkcmVsd2hlcmVjbGF1c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0 cmluZyh3aGVyZUNsYXVzZURhdHVtKSk7CisKKwkJCS8qIFRyYW5zZm9ybSB0aGUgaW50MnZlY3Rv ciBjb2x1bW4gbGlzdCB0byBhIGJpdG1hcC4gKi8KKwkJCWNvbHVtbkxpc3REYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKKwkJCQkJCQkJCQkJICBBbnVt X3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJCQkgICZpc251bGwpOworCisJ CQlpZiAoIWlzbnVsbCkKKwkJCQlvbGRjb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0 KE5VTEwsIGNvbHVtbkxpc3REYXR1bSwgTlVMTCk7CisKKwkJCVJlbGVhc2VTeXNDYWNoZShyZnR1 cGxlKTsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIGlmIGFueSBvZiB0aGUgbmV3IHNldCBvZiBy ZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZSBleGlzdGluZworCQkgKiByZWxhdGlvbnMgaW4gdGhl IHB1YmxpY2F0aW9uLiBBZGRpdGlvbmFsbHksIGlmIHRoZSByZWxhdGlvbiBoYXMgYW4KKwkJICog YXNzb2NpYXRlZCBXSEVSRSBjbGF1c2UsIGNoZWNrIHRoZSBXSEVSRSBleHByZXNzaW9ucyBhbHNv IG1hdGNoLgorCQkgKiBTYW1lIGZvciB0aGUgY29sdW1uIGxpc3QuIERyb3AgdGhlIHJlc3QuCisJ CSAqLworCQlmb3JlYWNoKG5ld2xjLCByZWxzKQorCQl7CisJCQlQdWJsaWNhdGlvblJlbEluZm8g Km5ld3B1YnJlbDsKKwkJCU9pZAkJCW5ld3JlbGlkOworCQkJQml0bWFwc2V0ICAqbmV3Y29sdW1u cyA9IE5VTEw7CisKKwkJCW5ld3B1YnJlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0 KG5ld2xjKTsKKwkJCW5ld3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwtPnJlbGF0 aW9uKTsKKworCQkJLyoKKwkJCSAqIFZhbGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRoZSBj b2x1bW4gbGlzdCBvciBXSEVSRSBjbGF1c2UKKwkJCSAqIGNoYW5nZXMsIHRoZW4gdGhlIHZhbGlk YXRpb24gZG9uZSBoZXJlIHdpbGwgYmUgZHVwbGljYXRlZAorCQkJICogaW5zaWRlIFB1YmxpY2F0 aW9uQWRkUmVsYXRpb25zKCkuICBUaGUgdmFsaWRhdGlvbiBpcyBjaGVhcAorCQkJICogZW5vdWdo IHRoYXQgdGhhdCBzZWVtcyBoYXJtbGVzcy4KKwkJCSAqLworCQkJbmV3Y29sdW1ucyA9IHB1Yl9j b2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCisJCQkJCQkJCQkJCSAgbmV3cHVi cmVsLT5jb2x1bW5zKTsKKworCQkJZm91bmQgPSAobmV3cmVsaWQgPT0gb2xkcmVsaWQpICYmCisJ CQkJCWVxdWFsKG9sZHJlbHdoZXJlY2xhdXNlLCBuZXdwdWJyZWwtPndoZXJlQ2xhdXNlKSAmJgor CQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucyk7CisKKwkJCWlmKGZvdW5kKQor CQkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogQWRkIG5vbi1tYXRjaGluZyByZWxhdGlvbnMg dG8gdGhlIGRyb3AgbGlzdC4gVGhlIHJlbGF0aW9uIHdpbGwgYmUKKwkJICogZHJvcHBlZCBpcnJl c3BlY3RpdmUgb2YgdGhlIGNvbHVtbiBsaXN0IGFuZCBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlp ZiAoIWZvdW5kKQorCQl7CisJCQlvbGRyZWwgPSBwYWxsb2MwX29iamVjdCAoUHVibGljYXRpb25S ZWxJbmZvKTsKKwkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAorCQkJ CQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCWRlbHJlbHMgPSBsYXBwZW5k KGRlbHJlbHMsIG9sZHJlbCk7CisJCX0KKwl9CisKKwlyZXR1cm4gZGVscmVsczsKK30KKworLyoK KyAqIEFkZCBvciByZW1vdmUgdGFibGUgb3Igc2VxdWVuY2UgdG8vZnJvbSBwdWJsaWNhdGlvbi4K ICAqLwogc3RhdGljIHZvaWQKLUFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgIExpc3QgKnRhYmxlcywgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCi0JCQkJCSAgIGJvb2wgcHVibGlzaF9zY2hlbWEpCitBbHRlclB1 YmxpY2F0aW9uUmVsYXRpb25zKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUg dHVwLAorCQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNlcXVlbmNlcywgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcsCisJCQkJCQkgIGJvb2wgcHVibGlzaF9zY2hlbWEpCiB7CiAJTGlzdAkgICAq cmVscyA9IE5JTDsKKwlMaXN0CSAgICpzZXFzID0gTklMOwogCUZvcm1fcGdfcHVibGljYXRpb24g cHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAlPaWQJCQlw dWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCS8qCiAJICogTm90aGluZyB0byBkbyBpZiBubyBvYmpl Y3RzLCBleGNlcHQgaW4gU0VUOiBmb3IgdGhhdCBpdCBpcyBxdWl0ZQotCSAqIHBvc3NpYmxlIHRo YXQgdXNlciBoYXMgbm90IHNwZWNpZmllZCBhbnkgdGFibGVzIGluIHdoaWNoIGNhc2Ugd2UgbmVl ZAotCSAqIHRvIHJlbW92ZSBhbGwgdGhlIGV4aXN0aW5nIHRhYmxlcy4KKwkgKiBwb3NzaWJsZSB0 aGF0IHVzZXIgaGFzIG5vdCBzcGVjaWZpZWQgYW55IHRhYmxlcyBvciBzZXF1ZW5jZXMgaW4gd2hp Y2gKKwkgKiBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCB0aGUgZXhpc3RpbmcgdGFibGVzIGFu ZCBzZXF1ZW5jZXMuCiAJICovCi0JaWYgKCF0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQX1Nl dE9iamVjdHMpCisJaWYgKCF0YWJsZXMgJiYgIXNlcXVlbmNlcyAmJiBzdG10LT5hY3Rpb24gIT0g QVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCiAJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QodGFi bGVzKTsKKwlzZXFzID0gT3BlblJlbGF0aW9uTGlzdChzZXF1ZW5jZXMpOwogCiAJaWYgKHN0bXQt PmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKQEAgLTEyODQsMjkgKzEzODksMzMgQEAgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxl IHR1cCwKIAkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10 LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX0Ry b3BPYmplY3RzKQotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlKTsK KwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxzZQkJ CQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7CiAJCUxpc3QJICAgKm9sZHJlbGlkcyA9IE5JTDsK KwkJTGlzdAkgICAqb2xkc2VxaWRzID0gTklMOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwot CQlMaXN0Q2VsbCAgICpvbGRsYzsKIAogCQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgfHwgc3Rt dC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJCXsKIAkJCS8qCi0JCQkgKiBJbiBGT1IgQUxMIFRBQkxF UyBtb2RlLCByZWxhdGlvbnMgYXJlIHRyYWNrZWQgYXMgZXhjbHVzaW9ucwotCQkJICogKEVYQ0VQ VCBjbGF1c2UpLiBGZXRjaCB0aGUgY3VycmVudCBleGNsdWRlZCByZWxhdGlvbnMgc28gdGhleQot CQkJICogY2FuIGJlIHJlY29uY2lsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIEVYQ0VQVCBsaXN0Lgor CQkJICogSW4gRk9SIEFMTCBUQUJMRVMvIFNFUVVFTkNFUyBtb2RlLCByZWxhdGlvbnMgYXJlIHRy YWNrZWQgYXMKKwkJCSAqIGV4Y2x1c2lvbnMgKEVYQ0VQVCBjbGF1c2UpLiBGZXRjaCB0aGUgY3Vy cmVudCBleGNsdWRlZAorCQkJICogcmVsYXRpb25zIHNvIHRoZXkgY2FuIGJlIHJlY29uY2lsZWQg d2l0aCB0aGUgc3BlY2lmaWVkIEVYQ0VQVAorCQkJICogbGlzdC4KIAkJCSAqCiAJCQkgKiBUaGlz IGFwcGxpZXMgb25seSBpZiB0aGUgZXhpc3RpbmcgcHVibGljYXRpb24gaXMgYWxyZWFkeQotCQkJ ICogZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUzsgb3RoZXJ3aXNlLCB0aGVyZSBhcmUgbm8gZXhj bHVzaW9uCi0JCQkgKiBlbnRyaWVzIHRvIHByb2Nlc3MuCisJCQkgKiBkZWZpbmVkIGFzIEZPUiBB TEwgVEFCTEVTLyBGT1IgQUxMIFNFUVVFTkNFUzsgb3RoZXJ3aXNlLCB0aGVyZQorCQkJICogYXJl IG5vIGV4Y2x1c2lvbiBlbnRyaWVzIHRvIHByb2Nlc3MuCiAJCQkgKi8KIAkJCWlmIChwdWJmb3Jt LT5wdWJhbGx0YWJsZXMpCi0JCQl7CiAJCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9P VCk7Ci0JCQl9CisJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QsCisJCQkJCQkJ CQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OKTsKKwkJCWlmIChwdWJmb3JtLT5wdWJhbGxzZXF1ZW5j ZXMpCisJCQkJb2xkc2VxaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJp ZCwKKwkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwKKwkJCQkJCQkJCQkJCQkJ CVJFTEtJTkRfU0VRVUVOQ0UpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTMxOSwxMTggKzE0Mjgs MjUgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg SGVhcFR1cGxlIHR1cCwKIAkJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCQl9CiAK LQkJLyoKLQkJICogVG8gcmVjcmVhdGUgdGhlIHJlbGF0aW9uIGxpc3QgZm9yIHRoZSBwdWJsaWNh dGlvbiwgbG9vayBmb3IKLQkJICogZXhpc3RpbmcgcmVsYXRpb25zIHRoYXQgZG8gbm90IG5lZWQg dG8gYmUgZHJvcHBlZC4KLQkJICovCi0JCWZvcmVhY2gob2xkbGMsIG9sZHJlbGlkcykKLQkJewot CQkJT2lkCQkJb2xkcmVsaWQgPSBsZmlyc3Rfb2lkKG9sZGxjKTsKLQkJCUxpc3RDZWxsICAgKm5l d2xjOwotCQkJUHVibGljYXRpb25SZWxJbmZvICpvbGRyZWw7Ci0JCQlib29sCQlmb3VuZCA9IGZh bHNlOwotCQkJSGVhcFR1cGxlCXJmdHVwbGU7Ci0JCQlOb2RlCSAgICpvbGRyZWx3aGVyZWNsYXVz ZSA9IE5VTEw7Ci0JCQlCaXRtYXBzZXQgICpvbGRjb2x1bW5zID0gTlVMTDsKLQotCQkJLyogbG9v ayB1cCB0aGUgY2FjaGUgZm9yIHRoZSBvbGQgcmVsbWFwICovCi0JCQlyZnR1cGxlID0gU2VhcmNo U3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAotCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVt KG9sZHJlbGlkKSwKLQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOwotCi0JCQkv KgotCQkJICogU2VlIGlmIHRoZSBleGlzdGluZyByZWxhdGlvbiBjdXJyZW50bHkgaGFzIGEgV0hF UkUgY2xhdXNlIG9yIGEKLQkJCSAqIGNvbHVtbiBsaXN0LiBXZSBuZWVkIHRvIGNvbXBhcmUgdGhv c2UgdG9vLgotCQkJICovCi0JCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChyZnR1cGxlKSkKLQkJCXsK LQkJCQlib29sCQlpc251bGwgPSB0cnVlOwotCQkJCURhdHVtCQl3aGVyZUNsYXVzZURhdHVtOwot CQkJCURhdHVtCQljb2x1bW5MaXN0RGF0dW07Ci0KLQkJCQkvKiBMb2FkIHRoZSBXSEVSRSBjbGF1 c2UgZm9yIHRoaXMgdGFibGUuICovCi0JCQkJd2hlcmVDbGF1c2VEYXR1bSA9IFN5c0NhY2hlR2V0 QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKLQkJCQkJCQkJCQkJCSAgIEFudW1fcGdf cHVibGljYXRpb25fcmVsX3BycXVhbCwKLQkJCQkJCQkJCQkJCSAgICZpc251bGwpOwotCQkJCWlm ICghaXNudWxsKQotCQkJCQlvbGRyZWx3aGVyZWNsYXVzZSA9IHN0cmluZ1RvTm9kZShUZXh0RGF0 dW1HZXRDU3RyaW5nKHdoZXJlQ2xhdXNlRGF0dW0pKTsKLQotCQkJCS8qIFRyYW5zZm9ybSB0aGUg aW50MnZlY3RvciBjb2x1bW4gbGlzdCB0byBhIGJpdG1hcC4gKi8KLQkJCQljb2x1bW5MaXN0RGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCi0JCQkJCQkJ CQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCi0JCQkJCQkJCQkJCQkgICZp c251bGwpOwotCi0JCQkJaWYgKCFpc251bGwpCi0JCQkJCW9sZGNvbHVtbnMgPSBwdWJfY29sbGlz dF90b19iaXRtYXBzZXQoTlVMTCwgY29sdW1uTGlzdERhdHVtLCBOVUxMKTsKLQotCQkJCVJlbGVh c2VTeXNDYWNoZShyZnR1cGxlKTsKLQkJCX0KLQotCQkJZm9yZWFjaChuZXdsYywgcmVscykKLQkJ CXsKLQkJCQlQdWJsaWNhdGlvblJlbEluZm8gKm5ld3B1YnJlbDsKLQkJCQlPaWQJCQluZXdyZWxp ZDsKLQkJCQlCaXRtYXBzZXQgICpuZXdjb2x1bW5zID0gTlVMTDsKLQotCQkJCW5ld3B1YnJlbCA9 IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0KG5ld2xjKTsKLQkJCQluZXdyZWxpZCA9IFJl bGF0aW9uR2V0UmVsaWQobmV3cHVicmVsLT5yZWxhdGlvbik7Ci0KLQkJCQkvKgotCQkJCSAqIFZh bGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRoZSBjb2x1bW4gbGlzdCBvciBXSEVSRQotCQkJ CSAqIGNsYXVzZSBjaGFuZ2VzLCB0aGVuIHRoZSB2YWxpZGF0aW9uIGRvbmUgaGVyZSB3aWxsIGJl Ci0JCQkJICogZHVwbGljYXRlZCBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRo ZQotCQkJCSAqIHZhbGlkYXRpb24gaXMgY2hlYXAgZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJt bGVzcy4KLQkJCQkgKi8KLQkJCQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3 cHVicmVsLT5yZWxhdGlvbiwKLQkJCQkJCQkJCQkJCSAgbmV3cHVicmVsLT5jb2x1bW5zKTsKLQot CQkJCS8qCi0JCQkJICogQ2hlY2sgaWYgYW55IG9mIHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBt YXRjaGVzIHdpdGggdGhlCi0JCQkJICogZXhpc3RpbmcgcmVsYXRpb25zIGluIHRoZSBwdWJsaWNh dGlvbi4gQWRkaXRpb25hbGx5LCBpZiB0aGUKLQkJCQkgKiByZWxhdGlvbiBoYXMgYW4gYXNzb2Np YXRlZCBXSEVSRSBjbGF1c2UsIGNoZWNrIHRoZSBXSEVSRQotCQkJCSAqIGV4cHJlc3Npb25zIGFs c28gbWF0Y2guIFNhbWUgZm9yIHRoZSBjb2x1bW4gbGlzdC4gRHJvcCB0aGUKLQkJCQkgKiByZXN0 LgotCQkJCSAqLwotCQkJCWlmIChuZXdyZWxpZCA9PSBvbGRyZWxpZCkKLQkJCQl7Ci0JCQkJCWlm IChlcXVhbChvbGRyZWx3aGVyZWNsYXVzZSwgbmV3cHVicmVsLT53aGVyZUNsYXVzZSkgJiYKLQkJ CQkJCWJtc19lcXVhbChvbGRjb2x1bW5zLCBuZXdjb2x1bW5zKSkKLQkJCQkJewotCQkJCQkJZm91 bmQgPSB0cnVlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCS8qCi0J CQkgKiBBZGQgdGhlIG5vbi1tYXRjaGVkIHJlbGF0aW9ucyB0byBhIGxpc3Qgc28gdGhhdCB0aGV5 IGNhbiBiZQotCQkJICogZHJvcHBlZC4KLQkJCSAqLwotCQkJaWYgKCFmb3VuZCkKLQkJCXsKLQkJ CQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVsSW5mbyk7Ci0JCQkJb2xkcmVs LT53aGVyZUNsYXVzZSA9IE5VTEw7Ci0JCQkJb2xkcmVsLT5jb2x1bW5zID0gTklMOwotCQkJCW9s ZHJlbC0+ZXhjZXB0ID0gZmFsc2U7Ci0JCQkJb2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4o b2xkcmVsaWQsCi0JCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKLQkJCQlk ZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOwotCQkJfQotCQl9CisJCS8qIEdldCB0 YWJsZXMgYW5kIHNlcXVlbmNlcyB0byBiZSBkcm9wcGVkICovCisJCWRlbHJlbHMgPSBnZXRfZGVs ZXRlX3JlbHMocHViaWQsIHJlbHMsIG9sZHJlbGlkcyk7CisJCWRlbHJlbHMgPSBsaXN0X2NvbmNh dChkZWxyZWxzLCBnZXRfZGVsZXRlX3JlbHMocHViaWQsIHNlcXMsIG9sZHNlcWlkcykpOwogCiAJ CS8qIEFuZCBkcm9wIHRoZW0uICovCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgZGVs cmVscywgdHJ1ZSk7CisJCVB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhwdWJpZCwgZGVscmVscywg dHJ1ZSk7CiAKIAkJLyoKIAkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJl bmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZAogCQkgKiBza2lwIGV4aXN0aW5nIG9uZXMg d2hlbiBkb2luZyBjYXRhbG9nIHVwZGF0ZS4KIAkJICovCiAJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKKwkJUHVibGlj YXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHNlcXMsIHRydWUsIHN0bXQsIFJFTEtJTkRfU0VRVUVO Q0UpOwogCiAJCUNsb3NlUmVsYXRpb25MaXN0KGRlbHJlbHMpOwogCX0KIAogCUNsb3NlUmVsYXRp b25MaXN0KHJlbHMpOworCUNsb3NlUmVsYXRpb25MaXN0KHNlcXMpOwogfQogCiAvKgpAQCAtMTcw Niw4ICsxNzIyLDkgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10KQogCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10 LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCiAJCQkJCQkJCSAgICZleGNlcHR0Ymxz LCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7CiAKLQkJLyogRVhDRVBUIGNsYXVzZSBpcyBu b3Qgc3VwcG9ydGVkIHdpdGggQUxURVIgUFVCTElDQVRJT04gKi8KLQkJQXNzZXJ0KGV4Y2VwdHNl cXMgPT0gTklMKTsKKwkJLyogRVhDRVBUIGNsYXVzZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQUxU RVIgUFVCTElDQVRJT04gLi4uIFNFVCAqLworCQlBc3NlcnQoKGV4Y2VwdHRibHMgPT0gTklMICYm IGV4Y2VwdHNlcXMgPT0gTklMKSB8fAorCQkJICAgc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVj dHMpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2No ZW1haWRsaXN0KTsKIApAQCAtMTczMSw4ICsxNzQ4LDggQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQkJICAgc3Rt dC0+cHVibmFtZSkpOwogCiAJCXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJlbGF0aW9ucywgZXhj ZXB0dGJscyk7Ci0JCUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMs IHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwor CQlBbHRlclB1YmxpY2F0aW9uUmVsYXRpb25zKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBleGNlcHRz ZXFzLAorCQkJCQkJCQkgIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LCBzY2hlbWFpZGxpc3QgIT0gTklM KTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwog CQlBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3Moc3RtdCwgcmVsLCB0dXApOwogCX0KQEAgLTIwODcs MTAgKzIxMDQsMTAgQEAgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpy ZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiB9CiAKIC8qCi0gKiBSZW1vdmUgbGlzdGVkIHRhYmxl cyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAqIFJlbW92ZSBsaXN0ZWQgcmVsYXRpb25zIGZyb20g dGhlIHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25Ecm9wVGFibGVz KE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQorUHVibGljYXRpb25Ecm9w UmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQogewogCU9i amVjdEFkZHJlc3Mgb2JqOwogCUxpc3RDZWxsICAgKmxjOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmlu ZGV4IDEyZDI3NmNiYjY1Li5hYWYwM2UzYTk0YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MjM1MSw2ICsyMzUxLDIwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQi LCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYg IWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwi LCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlNFUVVFTkNF Iik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIikpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCAoIFNF UVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9X SVRIKCIoIFNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIikp CisJCUNPTVBMRVRFX1dJVEgoIlNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVY Q0VQVCIsICIoIiwgIlNFUVVFTkNFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQ VCIsICIoIiwgIlNFUVVFTkNFIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywn KSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVu Y2VzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiLCAiU0VRVUVOQ0UiLCBN YXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgi KSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBRER8RFJPUHxTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpKQogCQlDT01QTEVURV9X SVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBBTkQg bnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCmluZGV4IDQ5YzI5YTg3NjMwLi4yMWExNTI3YmNjNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaApAQCAtMTc4LDkgKzE3OCwxMSBAQCB0eXBlZGVmIGVudW0gUHVibGlj YXRpb25QYXJ0T3B0CiBleHRlcm4gTGlzdCAqR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9u cyhPaWQgcHViaWQsCiAJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQp OwogZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LAotCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKKwkJCQkJCQkJ CQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJIGNoYXIgcHVi cmVsa2luZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwot ZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpOworZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBwdWJyZWxraW5kLAorCQkJCQkJCQkJCWJvb2wgcHVi dmlhcm9vdCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCk7 CiBleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCk7CiBleHRl cm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAxNWMzMGZmZWVmYy4u MjZiMmY1N2ZkNGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CkBAIC01NjIsMTYgKzU2MiwzMiBAQCBJbmNsdWRlZCBpbiBwdWJsaWNhdGlvbnM6CiBFeGNsdWRl ZCBmcm9tIHB1YmxpY2F0aW9uczoKICAgICAicmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyIK IAorLS0gTW9kaWZ5IHRoZSBzZXF1ZW5jZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlCitBTFRF UiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgU0VRVUVO Q0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCk7CitcZFJwKyByZWdyZXNzX3B1 Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1u cyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgc2VxdWVuY2VzOgorICAgICJwdWJsaWMucmVncmVz c19wdWJfc2VxMCIKKwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIGZhaWwgLSBzZXF1 ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CiBDUkVBVEUgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVi bGljLnJlZ3Jlc3NfcHViX3NlcTAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBj bGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVl bmNlcy4KK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VU IEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3B1Yl9zZXEwKTsKK0VSUk9SOiAgY2Fu bm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIiBpbiB0aGUgcHVibGljYXRpb24g RVhDRVBUIChUQUJMRSkgY2xhdXNlCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3Vw cG9ydGVkIGZvciBzZXF1ZW5jZXMuCiAtLSBmYWlsIC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmll ZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOwog Q1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNp ZnkgInB1YmxpYy50YWJfc2VxIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkg Y2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJs ZXMuCitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBB TEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgdGFiX3NlcSk7CitFUlJPUjogIGNhbm5vdCBz cGVjaWZ5ICJwdWJsaWMudGFiX3NlcSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVO Q0UpIGNsYXVzZQorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Ig dGFibGVzLgogLS0gVGVzdCBjb21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwgVEFC TEVTIHdpdGggRVhDRVBUIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFi bGVzMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSksIEFMTCBTRVFV RU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbAppbmRleCBkNDcyNTUzYzdjZC4uOTk4YWUzZTRlNGYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI2MSwxNCArMjYxLDE5IEBAIENSRUFURSBQ VUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIEZPUiBBTEwgU0VRVUVOQ0VT IEVYQ0VQVCAoU0VRVUVOCiAtLSBDaGVjayB0aGF0IHRoZSBzZXF1ZW5jZSBkZXNjcmlwdGlvbiBz aG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJlIGl0IGlzIGxpc3RlZAogLS0gaW4gdGhlIEVYQ0VQ VCBjbGF1c2UKIFxkKyByZWdyZXNzX3B1Yl9zZXEwCistLSBNb2RpZnkgdGhlIHNlcXVlbmNlIGxp c3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zv cmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNz X3B1Yl9zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMKIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiAKIC0tIGZhaWwgLSBzZXF1ZW5jZSBvYmplY3QgaXMgc3BlY2lm aWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CiBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfcHVi X3NlcTApOworQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBT RVQgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOwogCiAtLSBmYWls IC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JF QVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJf c2VxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VU IEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsKIAogLS0gVGVzdCBjb21i aW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwgVEFCTEVTIHdpdGggRVhDRVBUIGNsYXVz ZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotLSAKMi4zNC4xCgo= --00000000000067b6290652f393d2--