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 1wRkq4-002ev3-1y for pgsql-hackers@arkaria.postgresql.org; Tue, 26 May 2026 06:00: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 1wRkq2-003IBm-20 for pgsql-hackers@arkaria.postgresql.org; Tue, 26 May 2026 06:00: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 1wRkq1-003IBe-2b for pgsql-hackers@lists.postgresql.org; Tue, 26 May 2026 06:00:27 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wRkq0-00000000oJJ-48Al for pgsql-hackers@lists.postgresql.org; Tue, 26 May 2026 06:00:25 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-439712b3416so3532751fac.2 for ; Mon, 25 May 2026 23:00:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779775224; cv=none; d=google.com; s=arc-20240605; b=CDAcx7LryeKIqS/rKtV0COS13UVXvsHga1hfjDatczA2wcy9HKFeevrw8+mQvzQjVc seJ6vdpwFnTf7LsN2elhnB7o5go06rNDqgc53FfEDtBCs7FSGTSc8XY55Hmu6Rz7yRor EG37s3+9l4EbKjYzdwhlOg5lc3zYxfd8MMgH5As8gk9p0I35a7psgiR2TYXKlCdSYTSR y24Uri10k7J523WcXXXyliY6bZ50COAuQg6mduDGX6O0O1MbaMT5sq7z5ahMDTOrtZXZ OCav6nFQbuim2G6FajgxsYlbg1HfUFvkgeVeTGixVneJJAyhl6JBv2a72vhpGKn6FbL7 dO5g== 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=LwqY/Dgj7b7K7fO4hAwB4xZ691FeyqNIJ7+u7QJvl+k=; fh=+jBItaAL0gkGzA/tHYe6V866mZmUf0hFSAVf7NU8aQg=; b=ATDm0x0BY3FG6HYzCG2DwN0kpSrc9LOEUb/xV35F1RQcPO7oM6J/7tIbHwRhOQccx1 c4KRX3NRQHnKDEAvxMkTC/rMwq0Fp/oqSQzqJohQZrwxlSNPiD6JEsHUFklwWkNblxTc me+de+5JREjfB24z6lOJGrCGUNfCMC312haFfkgTon3Efgt+t9gdDATCr7Qlxu6e5WKD mDm/Y8ecsx4mZKWWAtvmFZxk0i/suarI7Syst1eu3rQG4Rq50leEILrRS/g4iRQ7r8ch 3OwOvVLkWOtcdxCkv63p+etxlQLBdNZLhNGHTAL3fv7qki0mFBt849MsUkrqe3256Dsk dF3Q==; 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=1779775224; x=1780380024; 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=LwqY/Dgj7b7K7fO4hAwB4xZ691FeyqNIJ7+u7QJvl+k=; b=Oulr1aqXQ9mcGb6ZjaeyCFC1fPtmI2Hq+nkxOk6vc58cbIel+4bVd+II2tc5cB1FDT Wrz64tMYvWjknecBcnA6pqzvGsRdNYME7hQ9VTonlBa1d0b5cfo/Jr5QG8mYDhqvWe7f HJ5s/xuzsNMrq6a0vGpoeAf7A0FlA6I39kSqcgxZP7s7T2iEtpp4w9R4RuwKImQIXi+c 1hu2pVF7RGfCsr8ntF4KhPOjDnN9okPm0IQBiRruiW62Ro9U5+QpmCiLG7zsZFWRQPbs ajf2fyUE/vJ1hdZHMjDMaaGGAv+4hbUt8vxR1tGEPNhmdZUDWskgvo6K9s18b8SDcXW9 b/xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779775224; x=1780380024; 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=LwqY/Dgj7b7K7fO4hAwB4xZ691FeyqNIJ7+u7QJvl+k=; b=hfG9Cq+gm6LsjuR0TnJj7pPekpFwLE88NfXPt7sLyepzO6w9t/ncP03wN+YCWqbyQT 2jzZVFEK+iOxMMl4DWmX9yPmn1ESloTSV6eb+IowJq7pk0bNpQsT9dRBx0CTODS4ycsr sSZ1w0ia4rLdaKQnfkuwfYn3AmLjxAVrf+DvKVGOnac6b9LPyjV2UVTjfuud/+rdRTVS wk8CsBmeC3/BFPdRqyfOAILDf9yCJvXx3l1Cg3BIvgREGZIQ932mytLrmQRMCHTUsQC9 SqUlYxmNMkiLS3oYZZZfDlMDxe1LlZCplwAna0/m4/1Znyy88EXQtBXQWK+QmFzyhP5t c5sw== X-Forwarded-Encrypted: i=1; AFNElJ/a8NMcSGxlaqHrAEAQvy9T3Ip71506jBSO9N8EZR/0Ngq47kqd5Dyvz+59SFON7oyQq8otHgQgiCnHDfGo@lists.postgresql.org X-Gm-Message-State: AOJu0Yw4KQtwnuE8K5WNvhEG222E3rgNnmi33gHgmGRN1G8zUYXn8Eq+ FfXOlj+Ds5tcxEnYh8YuL4ncdUP2hn1cg/1Cd2iVIqfDQ7CxmCax7UZI+98L43iHT2NY0L015mx LhYROJr++G+CK3L8qdo/0HqdWrUOL9vU= X-Gm-Gg: Acq92OHhmxHPCIjx6SXoNIDfoT4lXgQkD9n6UsG+/RrUKEqJOR3snqGn17HSvd+/166 xLhKh7v0dOmceBdYZM/xaQF+FiyS2DlCKULVhQuUIZg13mLNbI8cJ4XsmvNb4TijB1vRAiZfVBC w0dtuZPfud0Q0jLwisN/ApjiFYWBMWdX7QhjZMcV4uCU3X9nQKcT2uEQhclWDOmFJlQym5ecka6 HuClzeStuOzR/enpvh9qpk+299JlM8rGvlYKfopxjgL0U41DIAB7j0FKmT2hqTJLgj6B2JKrtA2 suBTS+R4ci3vZFwSrA== X-Received: by 2002:a05:6870:3116:b0:43b:58a4:cc33 with SMTP id 586e51a60fabf-43b5ad8c71bmr9511517fac.22.1779775224055; Mon, 25 May 2026 23:00:24 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Tue, 26 May 2026 11:30:12 +0530 X-Gm-Features: AVHnY4JemkE33Wlli_2YfX2ripMtEQMCcRT4uhKwDdsYiLHvLW9RfUCuqdNF1Cg Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: Peter Smith Cc: shveta malik , vignesh C , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000002ae240652b2362e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000002ae240652b2362e Content-Type: text/plain; charset="UTF-8" On Mon, 25 May 2026 at 13:08, Peter Smith wrote: > > Hi Shlok - > > Here are some minor review comments for patch v5-0002. > > ====== > doc/src/sgml/catalogs.sgml > > 1. > > - True if the table is excluded from the publication. See > - EXCEPT. > + True if the table or the sequence is excluded from the publication. See > + EXCEPT. > > /or the sequence/or sequence/ > > ====== > src/backend/catalog/pg_publication.c > > check_publication_add_relation: > > 2. > * Check if relation can be in given publication and throws appropriate > * error if not. > > ~ > > Too terse. There are missing words. > > SUGGESTION > Check if the target relation is allowed to be specified in the given > publication and throw an error if not. > > ~~~ > > 3. > if (pri->except) > { > relname = RelationGetQualifiedRelationName(targetrel); > if (pubrelkind == RELKIND_SEQUENCE) > errormsg = gettext_noop("cannot specify \"%s\" in the publication > EXCEPT (SEQUENCE) clause"); > else > errormsg = gettext_noop("cannot specify \"%s\" in the publication > EXCEPT (TABLE) clause"); > } > else > { > relname = RelationGetRelationName(targetrel); > errormsg = gettext_noop("cannot add relation \"%s\" to publication"); > } > > ~ > > Wondering why sometimes the error `relname` is fully-qualified and > sometimes it is not. Isn't it better to always be qualified? > This change was made as part of thread [1]. And by reading the thread I understood that we made 'relname' fully-qualified for the EXCEPT case. For the non-EXCEPT case the patch is still in discussion. I think making `relname` fully-qualified for non-EXCEPT is not related to this patch and should be discussed in thread [1]. I have addressed the remaining comments in the v6 patches. I have also merged the patches 0001 and 0002. [1]: https://www.postgresql.org/message-id/CAA4eK1LvV6ex8n1UV_HZ%2Bs77y%2B5wOpbCns-0rF95Gu3EF0SPNA%40mail.gmail.com Thanks, Shlok Kyal --00000000000002ae240652b2362e Content-Type: application/octet-stream; name="v6-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Disposition: attachment; filename="v6-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpm84llo0 RnJvbSAxZDJmNmI3NTZlNWYwMmUzZWVlM2E5NzQxZjJhYzkwODQ0YjliZTFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY2 IDEvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQ1JFQVRFIFBVQkxJQ0FU SU9OCgpFeHRlbmQgQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFNFUVVFTkNFUyB0byBz dXBwb3J0IHRoZQpFWENFUFQgc3ludGF4LiBUaGlzIGFsbG93cyBvbmUgb3IgbW9yZSBzZXF1ZW5j ZXMgdG8gYmUgZXhjbHVkZWQuIFRoZQpwdWJsaXNoZXIgd2lsbCBub3Qgc2VuZCB0aGUgZGF0YSBv ZiBleGNsdWRlZCBzZXF1ZW5jZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpFeGFtcGxlOgpDUkVBVEUg UFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHMxLCBz Mik7Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgIHwgICA2ICstCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICB8ICAzNyArKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNjggKysrKysrKyst LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMDkgKysr KysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgICB8IDExMSArKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICB8ICA1NiArKysrKysrKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgICAgICAgICAgfCAgMjIgKysrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAg ICAgICAgICAgICAgICAgIHwgIDczICsrKysrKysrKysrKy0tCiBzcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxMiArKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaCAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggICAgICAgICAgICB8ICAxMSArKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0IHwgIDU5ICsrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsICAgICAgfCAgMjggKysrKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdf ZXhjZXB0LnBsICAgICB8ICA3NSArKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgIHwgICAyICstCiAxNyBmaWxlcyBjaGFuZ2VkLCA1MzMgaW5z ZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNGI0NzRjMTM5 MTcuLjQzYTM1NjZkZGEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzA5OSw3ICs3MDk5LDcgQEAgU0NS QU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJj YXRhbG9nLXBnLWNsYXNzIj48c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFtZT48L2xpbms+ LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIFJlZmVyZW5jZSB0byB0YWJsZQorICAgICAgIFJlZmVyZW5jZSB0byB0YWJs ZSBvciBzZXF1ZW5jZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC03 MTA4LDggKzcxMDgsOCBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9u IGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPHN0cnVjdGZp ZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KICAgICAgIDwvcGFy YT4KICAgICAgIDxwYXJhPgotICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1ZGVkIGZy b20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKLSAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl cHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0 ZXJhbD48L2xpbms+LgorICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIG9yIHNlcXVlbmNlIGlzIGV4 Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJz cWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L2xpbms+LgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBA IC03MTE4LDcgKzcxMTgsNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPHN0cnVj dGZpZWxkPnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVfdHJlZTwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPkV4cHJlc3Npb24gdHJlZSAoaW4gPGZ1bmN0aW9uPm5v ZGVUb1N0cmluZygpPC9mdW5jdGlvbj4KLSAgICAgIHJlcHJlc2VudGF0aW9uKSBmb3IgdGhlIHJl bGF0aW9uJ3MgcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uIE51bGwKKyAgICAgIHJl cHJlc2VudGF0aW9uKSBmb3IgdGhlIHRhYmxlJ3MgcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25k aXRpb24uIE51bGwKICAgICAgIGlmIHRoZXJlIGlzIG5vIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcg Y29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggOWU3ODY4NDg3ZGUuLmViMGI2NjQ5MWQzIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExOSw3ICsxMTksMTEgQEAKICAgIDx4 cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBXaGVuIGEgcHVi bGljYXRpb24gaXMKICAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4KICAgIGJlIGV4cGxpY2l0bHkgZXhj bHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKLSAgIDxsaW5rIGxpbmtlbmQ9InNxbC1j cmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPjwvbGluaz4KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv bi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4KKyAg IGNsYXVzZS4gU2ltaWxhcmx5LCB3aGVuIGEgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRoCisg ICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4sIGEgc2VxdWVuY2Ugb3Igc2V0 IG9mIHNlcXVlbmNlcyBjYW4gYmUKKyAgIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJsaWNh dGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1w YXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4KICAgIGNs YXVzZS4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dt bAppbmRleCBmODJkNjQwZTZjYS4uZGY3MzZlNzRkMmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbApAQCAtMzMsNyArMzMsNyBAQCBDUkVBVEUgUFVCTElDQVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogPHBocmFz ZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FsbF9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBBTEwgVEFCTEVTIFsg RVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwgU0VRVUVOQ0VTCisgICAgQUxM IFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNl cHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCiAKIDxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVw bGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCkBAIC00Niw2ICs0NiwxMCBAQCBDUkVBVEUgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29iamVjdDwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCisKKzxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBTRVFVRU5DRSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTE4OSwxNSArMTkzLDE4IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgT25seSBwZXJzaXN0ZW50IHNlcXVlbmNlcyBh cmUgaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLiBUZW1wb3JhcnkKICAgICAgIHNlcXVlbmNl cyBhbmQgdW5sb2dnZWQgc2VxdWVuY2VzIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlv bi4KKyAgICAgIFNlcXVlbmNlcyBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJh bD4gY2xhdXNlIGFyZSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUgcHVibGljYXRpb24uCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKLSAgIDx2YXJs aXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJs ZSI+CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZv ci1leGNlcHQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L3Rlcm0+CiAg ICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBh IGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBUaGlzIGNsYXVz ZSBzcGVjaWZpZXMgdGhlIHRhYmxlcyBvciBzZXF1ZW5jZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSBh bgorICAgICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+QUxMIFNF UVVFTkNFUzwvbGl0ZXJhbD4KICAgICAgIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAg IDxwYXJhPgpAQCAtMjE3LDkgKzIyNCwxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICA8L3BhcmE+CiAg ICAgIDxwYXJhPgogICAgICAgVGhlcmUgY2FuIGJlIGEgY2FzZSB3aGVyZSBhIHN1YnNjcmlwdGlv biBpbmNsdWRlcyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuCi0gICAgICBJbiBzdWNoIGEgY2FzZSwg YSB0YWJsZSBvciBwYXJ0aXRpb24gdGhhdCBpcyBpbmNsdWRlZCBpbiBvbmUgcHVibGljYXRpb24K LSAgICAgIGJ1dCBleGNsdWRlZCAoZXhwbGljaXRseSBvciBpbXBsaWNpdGx5KSBieSB0aGUgPGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPgotICAgICAgY2xhdXNlIG9mIGFub3RoZXIgaXMgY29uc2lk ZXJlZCBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uCisgICAgICBJbiBzdWNoIGEgY2FzZSwgYSB0 YWJsZSwgcGFydGl0aW9uIG9yIHNlcXVlbmNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lCisgICAg ICBwdWJsaWNhdGlvbiBidXQgZXhjbHVkZWQgKGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSkgYnkg dGhlCisgICAgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhbm90aGVyIGlz IGNvbnNpZGVyZWQgaW5jbHVkZWQgZm9yCisgICAgICByZXBsaWNhdGlvbi4KICAgICAgPC9wYXJh PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTU0NywxMSArNTU1LDIw IEBAIENSRUFURSBQVUJMSUNBVElPTiBhbGxfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBF WENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIENy ZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNo cm9uaXphdGlvbiwgYW5kCi0gICBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdCA8c3Ry dWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCi0gICA8c3RydWN0bmFtZT5kZXBhcnRtZW50 czwvc3RydWN0bmFtZT46CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBh bGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb24gZXhjZXB0CisgICA8c3RydWN0bmFtZT5z ZXExPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+c2VxMjwvc3RydWN0bmFtZT46Cis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc19leGNlcHQgRk9S IEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBzZXExLCBzZXEyKTsKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRo YXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiBleGNlcHQKKyAg IDxzdHJ1Y3RuYW1lPnNlcTE8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5zZXEyPC9zdHJ1 Y3RuYW1lPiwgYW5kIGFsbAorICAgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdAorICAgPHN0 cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwv c3RydWN0bmFtZT46CiA8cHJvZ3JhbWxpc3Rpbmc+Ci1DUkVBVEUgUFVCTElDQVRJT04gYWxsX3Nl cXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQ VCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKTsKK0NSRUFURSBQVUJMSUNBVElPTiBhbGxfc2Vx dWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBz ZXExLCBzZXEyKSwgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cyk7 CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHVibGljYXRpb24uYwppbmRleCA1YzQ1N2Q5YWNhOC4uNWZkMmMyNzk1YWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTQ5LDIwICs0OSwyOCBAQCB0eXBlZGVm IHN0cnVjdAogfSBwdWJsaXNoZWRfcmVsOwogCiAvKgotICogQ2hlY2sgaWYgcmVsYXRpb24gY2Fu IGJlIGluIGdpdmVuIHB1YmxpY2F0aW9uIGFuZCB0aHJvd3MgYXBwcm9wcmlhdGUKLSAqIGVycm9y IGlmIG5vdC4KKyAqIENoZWNrIGlmIHRoZSB0YXJnZXQgcmVsYXRpb24gaXMgYWxsb3dlZCB0byBi ZSBzcGVjaWZpZWQgaW4gdGhlIGdpdmVuCisgKiBwdWJsaWNhdGlvbiBhbmQgdGhyb3cgYW4gZXJy b3IgaWYgbm90LgorICoKKyAqICdwdWJyZWxraW5kJyBpcyB0aGUgcmVsa2luZCBhY2NlcHRlZCBi eSB0aGUgcHVibGljYXRpb24gY2xhdXNlLAorICogd2hpbGUgJ3RhcmdldHJlbGtpbmQnIGlzIHRo ZSByZWxraW5kIG9mIHRoZSByZWxhdGlvbiBiZWluZyBhZGRlZC4KKyAqIEVycm9yIGlmIHRoZXkg YXJlIG5vdCBjb21wYXRpYmxlLgogICovCiBzdGF0aWMgdm9pZAotY2hlY2tfcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQorY2hlY2tfcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLCBjaGFyIHB1YnJlbGtpbmQpCiB7 CiAJUmVsYXRpb24JdGFyZ2V0cmVsID0gcHJpLT5yZWxhdGlvbjsKKwljaGFyCQl0YXJnZXRyZWxr aW5kID0gUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQ7CiAJY29uc3QgY2hhciAq cmVsbmFtZTsKIAljb25zdCBjaGFyICplcnJvcm1zZzsKIAogCWlmIChwcmktPmV4Y2VwdCkKIAl7 CiAJCXJlbG5hbWUgPSBSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwp OwotCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IHNwZWNpZnkgcmVsYXRpb24gXCIl c1wiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlIik7CisJCWlmIChwdWJyZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90 IHNwZWNpZnkgXCIlc1wiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1 c2UiKTsKKwkJZWxzZQorCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5vdCBzcGVjaWZ5 IFwiJXNcIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlIik7CiAJfQog CWVsc2UKIAl7CkBAIC03NywxMyArODUsMjMgQEAgY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5h bWUpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IGluZGl2aWR1YWwgcGFydGl0aW9ucy4iKSkpOwogCi0JLyogTXVzdCBiZSBhIHJlZ3VsYXIgb3Ig cGFydGl0aW9uZWQgdGFibGUgKi8KLQlpZiAoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJl bGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgotCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVs KS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCS8qCisJICogTXVzdCBi ZSBhIHJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUgd2hlbiBzcGVjaWZpZWQgaW4gRk9SIFRB QkxFIG9yCisJICogRVhDRVBUIHRhYmxlIGxpc3QKKwkgKi8KKwlpZiAocHVicmVsa2luZCA9PSBS RUxLSU5EX1JFTEFUSU9OICYmIHRhcmdldHJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgor CQl0YXJnZXRyZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCisJCQkJIGVycmRldGFpbF9yZWxraW5kX25v dF9zdXBwb3J0ZWQodGFyZ2V0cmVsa2luZCkpKTsKKworCS8qIE11c3QgYmUgYSBzZXF1ZW5jZSBp ZiBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QgKi8KKwlpZiAocHVicmVsa2luZCA9 PSBSRUxLSU5EX1NFUVVFTkNFICYmIHRhcmdldHJlbGtpbmQgIT0gUkVMS0lORF9TRVFVRU5DRSkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKIAkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxuYW1lKSwKLQkJCQkgZXJyZGV0YWls X3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2lu ZCkpKTsKKwkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZCh0YXJnZXRyZWxraW5k KSkpOwogCiAJLyogQ2FuJ3QgYmUgc3lzdGVtIHRhYmxlICovCiAJaWYgKElzQ2F0YWxvZ1JlbGF0 aW9uKHRhcmdldHJlbCkpCkBAIC05NywxMSArMTE1LDE1IEBAIGNoZWNrX3B1YmxpY2F0aW9uX2Fk ZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNn KGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgdGFyZ2V0cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVF TkNFID8KKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZv ciB0ZW1wb3Jhcnkgc2VxdWVuY2VzLiIpIDoKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlv biBpcyBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhcnkgdGFibGVzLiIpKSk7CiAJZWxzZSBpZiAo dGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9H R0VEKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSB0YXJn ZXRyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgPworCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3Bl cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHNlcXVlbmNlcy4iKSA6CiAJCQkJ IGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdW5sb2dnZWQg dGFibGVzLiIpKSk7CiB9CiAKQEAgLTUyMSw3ICs1NDMsOCBAQCBhdHRudW1zdG9pbnQydmVjdG9y KEJpdG1hcHNldCAqYXR0cnMpCiAgKi8KIE9iamVjdEFkZHJlc3MKIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAotCQkJCQkJIGJvb2wg aWZfbm90X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFsdGVyX3N0bXQpCisJCQkJCQkg Ym9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCwKKwkJ CQkJCSBjaGFyIHB1YnJlbGtpbmQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7 CkBAIC01NTksNyArNTgyLDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwg UHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0 YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKHByaSk7CisJY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHByaSwgcHVicmVs a2luZCk7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEg Qml0bWFwc2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRl KHByaS0+cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC05NzksMTUgKzEwMDIsMTQgQEAgR2V0 SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCkKIH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQg d2VyZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKLSAqIHB1YmxpY2F0aW9u LgotICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbnMuCisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IHdlcmUgc3BlY2lmaWVk IGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCisgKiAnRk9SIEFMTCBUQUJMRVMnIG9yIGEgJ0ZP UiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbi4KICAqLwogTGlzdCAqCi1HZXRFeGNsdWRlZFB1 YmxpY2F0aW9uVGFibGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQorR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5h bGx0YWJsZXMpOworCUFzc2VydChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8fAor CQkgICBHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHNlcXVlbmNlcyk7CiAKIAlyZXR1cm4gZ2V0 X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUpOwogfQpAQCAt MTAzOCw4ICsxMDYwLDkgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiByb290 IHBhcnRpdGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBGT1IgQUxMIFNF UVVFTkNFUwogICogcHVibGljYXRpb24uCiAgKgotICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVi bGljYXRpb24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50aW9uZWQKLSAq IGluIHRoZSBFWENFUFQgY2xhdXNlLgorICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRp b24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcworICogbWVudGlvbmVkIGluIHRo ZSBFWENFUFQgY2xhdXNlLiBGb3IgYSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbiwKKyAq IGl0IGV4Y2x1ZGVzIHNlcXVlbmNlcyBtZW50aW9uZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UuCiAg Ki8KIExpc3QgKgogR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJl bGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKQEAgLTEwNTMsMTEgKzEwNzYsMTAgQEAgR2V0QWxsUHVi bGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9v dCkKIAogCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290 KSk7CiAKLQkvKiBFWENFUFQgZmlsdGVyaW5nIGFwcGxpZXMgb25seSB0byByZWxhdGlvbnMsIG5v dCBzZXF1ZW5jZXMgKi8KLQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQlleGNl cHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/ Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgIFBV QkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIHRvIHRh YmxlcyBhbmQgc2VxdWVuY2VzICovCisJZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRp b25SZWxhdGlvbnMocHViaWQsIHB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAogCWNs YXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggNDQwYWRiMzU2YWQu LmU5NzU3OGRkZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAt NjEsMTEgKzYxLDExIEBAIHR5cGVkZWYgc3RydWN0IHJmX2NvbnRleHQKIAlPaWQJCQlwYXJlbnRp ZDsJCS8qIHJlbGlkIG9mIHRoZSBwYXJlbnQgcmVsYXRpb24gKi8KIH0gcmZfY29udGV4dDsKIAot c3RhdGljIExpc3QgKk9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKTsKLXN0YXRpYyB2b2lkIENs b3NlVGFibGVMaXN0KExpc3QgKnJlbHMpOworc3RhdGljIExpc3QgKk9wZW5SZWxhdGlvbkxpc3Qo TGlzdCAqdGFibGVzKTsKK3N0YXRpYyB2b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMp Owogc3RhdGljIHZvaWQgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7Ci1zdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZf bm90X2V4aXN0cywKLQkJCQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKK3N0YXRp YyB2b2lkIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9v bCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNo YXIgcHVicmVsa2luZCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRp b25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3Rz LAogCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKQEAgLTE3NywxMSArMTc3 LDEyIEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAv KgogICogQ29udmVydCB0aGUgUHVibGljYXRpb25PYmpTcGVjVHlwZSBsaXN0IGludG8gc2NoZW1h IG9pZCBsaXN0IGFuZAotICogUHVibGljYXRpb25UYWJsZSBsaXN0LgorICogUHVibGljYXRpb25S ZWxhdGlvbiBsaXN0LgogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGljYXRpb25Ub09p ZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkgICBM aXN0ICoqcmVscywgTGlzdCAqKmV4Y2VwdHJlbHMsIExpc3QgKipzY2hlbWFzKQorCQkJCQkJICAg TGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHR0YmxzLCBMaXN0ICoqZXhjZXB0c2VxcywKKwkJCQkJ CSAgIExpc3QgKipzY2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRpb25P YmpTcGVjICpwdWJvYmo7CkBAIC0xOTksMTIgKzIwMCwxNiBAQCBPYmplY3RzSW5QdWJsaWNhdGlv blRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJc3dp dGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfRVhD RVBUX1RBQkxFOgotCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7Ci0JCQkJKmV4 Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlw dWJvYmotPnB1YnJlbGF0aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCSpleGNlcHR0YmxzID0gbGFw cGVuZCgqZXhjZXB0dGJscywgcHVib2JqLT5wdWJyZWxhdGlvbik7CisJCQkJYnJlYWs7CisJCQlj YXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9TRVFVRU5DRToKKwkJCQlwdWJvYmotPnB1YnJlbGF0 aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCSpleGNlcHRzZXFzID0gbGFwcGVuZCgqZXhjZXB0c2Vx cywgcHVib2JqLT5wdWJyZWxhdGlvbik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9O T0JKX1RBQkxFOgotCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwotCQkJCSpy ZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJcHVib2JqLT5wdWJy ZWxhdGlvbi0+ZXhjZXB0ID0gZmFsc2U7CisJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJv YmotPnB1YnJlbGF0aW9uKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFC TEVTX0lOX1NDSEVNQToKIAkJCQlzY2hlbWFpZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHB1Ym9iai0+ bmFtZSwgZmFsc2UpOwpAQCAtODQ5LDcgKzg1NCw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCWNoYXIJCXB1Ymxp c2hfZ2VuZXJhdGVkX2NvbHVtbnM7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlMaXN0CSAgICpy ZWxhdGlvbnMgPSBOSUw7Ci0JTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOworCUxpc3QJ ICAgKmV4Y2VwdHRibHMgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0c2VxcyA9IE5JTDsKIAlMaXN0 CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVn ZSBvbiBkYXRhYmFzZSAqLwpAQCAtOTM2LDE4ICs5NDIsMjcgQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAkvKiBB c3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJ CQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJICAgJmV4Y2Vw dHRibHMsICZleGNlcHRzZXFzLCAmc2NoZW1haWRsaXN0KTsKKworCS8qIFByb2Nlc3MgRVhDRVBU IHNlcXVlbmNlIGxpc3QgKi8KKwlpZiAoc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMgJiYgZXhjZXB0 c2VxcyAhPSBOSUwpCisJeworCQlMaXN0CSAgICpyZWxzID0gT3BlblJlbGF0aW9uTGlzdChleGNl cHRzZXFzKTsKKworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJvaWQsIHJlbHMsIHRydWUs IE5VTEwsIFJFTEtJTkRfU0VRVUVOQ0UpOworCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKKwl9 CiAKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJewogCQkvKiBQcm9jZXNzIEVYQ0VQVCB0 YWJsZSBsaXN0ICovCi0JCWlmIChleGNlcHRyZWxhdGlvbnMgIT0gTklMKQorCQlpZiAoZXhjZXB0 dGJscyAhPSBOSUwpCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFi bGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7Ci0JCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQs IHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJCQlyZWxzID0g T3BlblJlbGF0aW9uTGlzdChleGNlcHR0YmxzKTsKKwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25z KHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCwgUkVMS0lORF9SRUxBVElPTik7CisJCQlDbG9zZVJl bGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCiAJCS8qCkBAIC05NjksNyArOTg0LDcgQEAgQ3JlYXRl UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0 bXQpCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJl bGF0aW9ucyk7CisJCQlyZWxzID0gT3BlblJlbGF0aW9uTGlzdChyZWxhdGlvbnMpOwogCQkJVHJh bnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJ CQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAtOTc3LDggKzk5Miw4IEBAIENy ZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpzdG10KQogCQkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVi b2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVi bGljYXRpb25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMLCBSRUxLSU5EX1JF TEFUSU9OKTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogCQl9CiAKIAkJaWYgKHNjaGVt YWlkbGlzdCAhPSBOSUwpCkBAIC0xMjU1LDcgKzEyNzAsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFi bGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCWlmICghdGFi bGVzICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKLQlyZWxz ID0gT3BlblRhYmxlTGlzdCh0YWJsZXMpOworCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHRhYmxl cyk7CiAKIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewpAQCAtMTI2Niw3 ICsxMjgxLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+ cHVibmFtZSwgcmVscywgcHVibGlzaF9zY2hlbWEsCiAJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZp YXJvb3QpOwogCi0JCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3Rt dCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCwg UkVMS0lORF9SRUxBVElPTik7CiAJfQogCWVsc2UgaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9w T2JqZWN0cykKIAkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CkBA IC0xMjg5LDggKzEzMDQsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJICovCiAJCQlpZiAocHViZm9ybS0+cHVi YWxsdGFibGVzKQogCQkJewotCQkJCW9sZHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25U YWJsZXMocHViaWQsCi0JCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQkJ CW9sZHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJ CQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCQkJfQogCQl9CiAJCWVsc2UKQEAg LTEzNjMsOCArMTM3OCw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJLyoKIAkJCQkgKiBWYWxpZGF0ZSB0aGUg Y29sdW1uIGxpc3QuICBJZiB0aGUgY29sdW1uIGxpc3Qgb3IgV0hFUkUKIAkJCQkgKiBjbGF1c2Ug Y2hhbmdlcywgdGhlbiB0aGUgdmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBiZQotCQkJCSAqIGR1 cGxpY2F0ZWQgaW5zaWRlIFB1YmxpY2F0aW9uQWRkVGFibGVzKCkuICBUaGUgdmFsaWRhdGlvbgot CQkJCSAqIGlzIGNoZWFwIGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCisJCQkJICog ZHVwbGljYXRlZCBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRoZQorCQkJCSAq IHZhbGlkYXRpb24gaXMgY2hlYXAgZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJtbGVzcy4KIAkJ CQkgKi8KIAkJCQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3cHVicmVsLT5y ZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSAgbmV3cHVicmVsLT5jb2x1bW5zKTsKQEAgLTE0MTAsMTIg KzE0MjUsMTIgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIHRoZSBk aWZmZXJlbmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZAogCQkgKiBza2lwIGV4aXN0aW5n IG9uZXMgd2hlbiBkb2luZyBjYXRhbG9nIHVwZGF0ZS4KIAkJICovCi0JCVB1YmxpY2F0aW9uQWRk VGFibGVzKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRSZWxhdGlv bnMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQsIFJFTEtJTkRfUkVMQVRJT04pOwogCi0JCUNsb3Nl VGFibGVMaXN0KGRlbHJlbHMpOworCQlDbG9zZVJlbGF0aW9uTGlzdChkZWxyZWxzKTsKIAl9CiAK LQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIH0KIAog LyoKQEAgLTE2NTEsNyArMTY2Niw3IEBAIEFsdGVyUHVibGljYXRpb25BbGxGbGFncyhBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRpb24gcmVsLAogICogQWx0ZXIgdGhlIGV4aXN0aW5n IHB1YmxpY2F0aW9uLgogICoKICAqIFRoaXMgaXMgZGlzcGF0Y2hlciBmdW5jdGlvbiBmb3IgQWx0 ZXJQdWJsaWNhdGlvbk9wdGlvbnMsCi0gKiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyBhbmQgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcy4KKyAqIEFsdGVyUHVibGljYXRpb25TY2hlbWFzIGFuZCBBbHRl clB1YmxpY2F0aW9uUmVsYXRpb25zLgogICovCiB2b2lkCiBBbHRlclB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCkBAIC0xNjgzLDEyICsx Njk4LDE2IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAllbHNlCiAJewogCQlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7 Ci0JCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0dGJs cyA9IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0c2VxcyA9IE5JTDsKIAkJTGlzdAkgICAqc2NoZW1h aWRsaXN0ID0gTklMOwogCQlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCQlPYmplY3Rz SW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMs Ci0JCQkJCQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCQkg ICAmZXhjZXB0dGJscywgJmV4Y2VwdHNlcXMsICZzY2hlbWFpZGxpc3QpOworCisJCS8qIEVYQ0VQ VCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEFMVEVSIFBVQkxJQ0FUSU9OICovCisJCUFz c2VydChleGNlcHRzZXFzID09IE5JTCk7CiAKIAkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQs IHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCkBAIC0xNzExLDcgKzE3MzAsNyBAQCBB bHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwK IAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChy ZWxhdGlvbnMsIGV4Y2VwdHJlbGF0aW9ucyk7CisJCXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJl bGF0aW9ucywgZXhjZXB0dGJscyk7CiAJCUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVw LCByZWxhdGlvbnMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCSAgIHNjaGVtYWlkbGlz dCAhPSBOSUwpOwogCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlk bGlzdCk7CkBAIC0xODMwLDEyICsxODQ5LDEyIEBAIFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJ ZChPaWQgcHNvaWQpCiB9CiAKIC8qCi0gKiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQ dWJsaWNhdGlvblRhYmxlIGxpc3QuCi0gKiBUaGUgcmV0dXJuZWQgdGFibGVzIGFyZSBsb2NrZWQg aW4gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3JkZXIgdG8KLSAqIGFkZCB0aGVt IHRvIGEgcHVibGljYXRpb24uCisgKiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQdWJs aWNhdGlvblJlbGF0aW9uIGxpc3QuCisgKiBUaGUgcmV0dXJuZWQgcmVsYXRpb25zIGFyZSBsb2Nr ZWQgaW4gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3JkZXIKKyAqIHRvIGFkZCB0 aGVtIHRvIGEgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyBMaXN0ICoKLU9wZW5UYWJsZUxpc3Qo TGlzdCAqdGFibGVzKQorT3BlblJlbGF0aW9uTGlzdChMaXN0ICp0YWJsZXMpCiB7CiAJTGlzdAkg ICAqcmVsaWRzID0gTklMOwogCUxpc3QJICAgKnJlbHMgPSBOSUw7CkBAIC0xODQ4LDcgKzE4Njcs NyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkgKi8KIAlmb3JlYWNoKGxjLCB0YWJs ZXMpCiAJewotCQlQdWJsaWNhdGlvblRhYmxlICp0ID0gbGZpcnN0X25vZGUoUHVibGljYXRpb25U YWJsZSwgbGMpOworCQlQdWJsaWNhdGlvblJlbGF0aW9uICp0ID0gbGZpcnN0X25vZGUoUHVibGlj YXRpb25SZWxhdGlvbiwgbGMpOwogCQlib29sCQlyZWN1cnNlID0gdC0+cmVsYXRpb24tPmluaDsK IAkJUmVsYXRpb24JcmVsOwogCQlPaWQJCQlteXJlbGlkOwpAQCAtMTk4Nyw3ICsyMDA2LDcgQEAg T3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAgKiBDbG9zZSBhbGwgcmVsYXRpb25zIGluIHRo ZSBsaXN0LgogICovCiBzdGF0aWMgdm9pZAotQ2xvc2VUYWJsZUxpc3QoTGlzdCAqcmVscykKK0Ns b3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTIw MzIsMTEgKzIwNTEsMTUgQEAgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCkKIH0KIAog LyoKLSAqIEFkZCBsaXN0ZWQgdGFibGVzIHRvIHRoZSBwdWJsaWNhdGlvbi4KKyAqIEFkZCBsaXN0 ZWQgcmVsYXRpb25zIHRvIHRoZSBwdWJsaWNhdGlvbi4KKyAqCisgKiAncHVicmVsa2luZCcgaXMg dGhlIHJlbGtpbmQgYWNjZXB0ZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGNsYXVzZS4KKyAqIFRoZSBy ZWxraW5kIG9mIGVhY2ggcmVsYXRpb24gaW4gJ3JlbHMnIGlzIGNoZWNrZWQgZm9yIGNvbXBhdGli aWxpdHkKKyAqIGFnYWluc3QgaXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlvbkFkZFRh YmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJIEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10KQorUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCisJCQkJCQlBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwgY2hhciBwdWJyZWxraW5kKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBA IC0yMDQ2LDEyICsyMDY5LDEyIEBAIFB1YmxpY2F0aW9uQWRkVGFibGVzKE9pZCBwdWJpZCwgTGlz dCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQlSZWxhdGlvbglyZWwgPSBwdWJfcmVsLT5y ZWxhdGlvbjsKIAkJT2JqZWN0QWRkcmVzcyBvYmo7CiAKLQkJLyogTXVzdCBiZSBvd25lciBvZiB0 aGUgdGFibGUgb3Igc3VwZXJ1c2VyLiAqLworCQkvKiBNdXN0IGJlIG93bmVyIG9mIHRoZSByZWxh dGlvbiBvciBzdXBlcnVzZXIuICovCiAJCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25S ZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIEdldFVzZXJJZCgpKSkKIAkJCWFjbGNo ZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJk X3JlbC0+cmVsa2luZCksCiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsK IAotCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlmX25v dF9leGlzdHMsIHN0bXQpOworCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQs IHB1Yl9yZWwsIGlmX25vdF9leGlzdHMsIHN0bXQsIHB1YnJlbGtpbmQpOwogCQlpZiAoc3RtdCkK IAkJewogCQkJRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2Jq ZWN0QWRkcmVzcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGZmNGUxMzg4YzU1Li5jN2E0OTlhYjk2ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CkBAIC00NTcsNyArNDU3LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJ CQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJdmFjdXVtX3JlbGF0 aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlzdCBw dWJfb2JqX2xpc3QgcHViX2FsbF9vYmpfdHlwZV9saXN0Ci0JCQkJcHViX2V4Y2VwdF9vYmpfbGlz dCBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKKwkJCQlwdWJfZXhjZXB0X3RibF9saXN0IG9wdF9wdWJf ZXhjZXB0X3RibF9jbGF1c2UKKwkJCQlwdWJfZXhjZXB0X3NlcV9saXN0IG9wdF9wdWJfZXhjZXB0 X3NlcV9jbGF1c2UKIAogJXR5cGUgPHJldGNsYXVzZT4gcmV0dXJuaW5nX2NsYXVzZQogJXR5cGUg PG5vZGU+CXJldHVybmluZ19vcHRpb24KQEAgLTU5Nyw3ICs1OTgsOCBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CXZhcl92YWx1ZSB6b25lX3ZhbHVlCiAldHlwZSA8cm9s ZXNwZWM+IGF1dGhfaWRlbnQgUm9sZVNwZWMgb3B0X2dyYW50ZWRfYnkKICV0eXBlIDxwdWJsaWNh dGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uT2JqU3BlYwotJXR5cGUgPHB1YmxpY2F0aW9ub2Jq ZWN0c3BlYz4gUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKKyV0eXBlIDxwdWJsaWNhdGlvbm9iamVj dHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYwogJXR5cGUgPHB1YmxpY2F0aW9uYWxsb2Jq ZWN0c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBlIDxrZXl3b3JkPiB1bnJlc2Vy dmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAtMTEzMjcsMTAgKzExMzI5LDEw IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGlj YXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJM RTsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJ CSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5z ID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQtPnB1 YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJy ZWxhdGlvbi0+cmVsYXRpb24gPSAkMjsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0g JDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQl9CiAJCQl8 IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTExMzUxLDcgKzExMzUzLDcgQEAg UHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JK X0NPTlRJTlVBVElPTjsKIAkJCQkJLyoKIAkJCQkJICogSWYgZWl0aGVyIGEgcm93IGZpbHRlciBv ciBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQsIGNyZWF0ZQotCQkJCQkgKiBhIFB1YmxpY2F0aW9u VGFibGUgb2JqZWN0LgorCQkJCQkgKiBhIFB1YmxpY2F0aW9uUmVsYXRpb24gb2JqZWN0LgogCQkJ CQkgKi8KIAkJCQkJaWYgKCQyIHx8ICQzKQogCQkJCQl7CkBAIC0xMTM2MSwxMCArMTEzNjMsMTAg QEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkJICogZXJyb3Igd2lsbCBiZSB0aHJvd24gbGF0 ZXIgdmlhCiAJCQkJCQkgKiBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KCkuCiAJCQkJCQkgKi8KLQkJ CQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkJJCQt PnB1YnRhYmxlLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhcihOVUxMLCAkMSwgQDEpOwotCQkJCQkJ JCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xh dXNlID0gJDM7CisJCQkJCQkkJC0+cHVicmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNhdGlvblJl bGF0aW9uKTsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXIo TlVMTCwgJDEsIEAxKTsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9ICQyOworCQkJ CQkJJCQtPnB1YnJlbGF0aW9uLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJCQl9CiAJCQkJCWVsc2UK IAkJCQkJewpAQCAtMTEzNzYsMTAgKzExMzc4LDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJ CQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1 Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0JCQkJCSQkLT5wdWJ0YWJs ZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0 aW9uID0gbWFrZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVy KTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ d2hlcmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGlj YXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSBtYWtlUmFu Z2VWYXJGcm9tUXVhbGlmaWVkTmFtZSgkMSwgJDIsIEAxLCB5eXNjYW5uZXIpOworCQkJCQkkJC0+ cHVicmVsYXRpb24tPmNvbHVtbnMgPSAkMzsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT53aGVyZUNs YXVzZSA9ICQ0OwogCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQkvKiBncmFtbWFy IGxpa2UgdGFibGVuYW1lICogLCBPTkxZIHRhYmxlbmFtZSwgT05MWSAoIHRhYmxlbmFtZSApICov CkBAIC0xMTM4NywxMCArMTEzODksMTAgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCXsKIAkJ CQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlw ZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFr ZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAk MTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ d2hlcmVDbGF1c2UgPSAkMzsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGlj YXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSAkMTsKKwkJ CQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDI7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+ d2hlcmVDbGF1c2UgPSAkMzsKIAkJCQl9CiAJCQl8IENVUlJFTlRfU0NIRU1BCiAJCQkJewpAQCAt MTE0MDYsMjMgKzExNDA4LDI5IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVjCiAJ CQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKLW9wdF9wdWJfZXhjZXB0X2NsYXVz ZToKLQkJCUVYQ0VQVCAnKCcgVEFCTEUgcHViX2V4Y2VwdF9vYmpfbGlzdCAnKScJeyAkJCA9ICQ0 OyB9CitvcHRfcHViX2V4Y2VwdF90YmxfY2xhdXNlOgorCQkJRVhDRVBUICcoJyBUQUJMRSBwdWJf ZXhjZXB0X3RibF9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJ eyAkJCA9IE5JTDsgfQorCQk7CisKK29wdF9wdWJfZXhjZXB0X3NlcV9jbGF1c2U6CisJCQlFWENF UFQgJygnIFNFUVVFTkNFIHB1Yl9leGNlcHRfc2VxX2xpc3QgJyknCXsgJCQgPSAkNDsgfQogCQkJ fCAvKkVNUFRZKi8JCQkJCQkJCQl7ICQkID0gTklMOyB9CiAJCTsKIAogUHVibGljYXRpb25BbGxP YmpTcGVjOgotCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCisJCQkJQUxMIFRB QkxFUyBvcHRfcHViX2V4Y2VwdF90YmxfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5v ZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05fQUxMX1RBQkxFUzsKLQkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7CisJCQkJCQkk JC0+ZXhjZXB0X3JlbGF0aW9ucyA9ICQzOwogCQkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJ CX0KLQkJCQl8IEFMTCBTRVFVRU5DRVMKKwkJCQl8IEFMTCBTRVFVRU5DRVMgb3B0X3B1Yl9leGNl cHRfc2VxX2NsYXVzZQogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uQWxs T2JqU3BlYyk7CiAJCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5D RVM7CisJCQkJCQkkJC0+ZXhjZXB0X3JlbGF0aW9ucyA9ICQzOwogCQkJCQkJJCQtPmxvY2F0aW9u ID0gQDE7CiAJCQkJCX0KIAkJCQkJOwpAQCAtMTE0MzMsMjEgKzExNDQxLDQxIEBAIHB1Yl9hbGxf b2JqX3R5cGVfbGlzdDoJUHVibGljYXRpb25BbGxPYmpTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5k KCQxLCAkMyk7IH0KIAk7CiAKLVB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYzoKK1B1YmxpY2F0aW9u RXhjZXB0VGJsU3BlYzoKIAkJCSByZWxhdGlvbl9leHByCiAJCQkJewogCQkJCQkkJCA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJ T05PQkpfRVhDRVBUX1RBQkxFOwotCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNh dGlvblRhYmxlKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCQkkJC0+ cHVidGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPmV4Y2VwdCA9IHRy dWU7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSAkMTsKIAkJCQkJJCQtPmxvY2F0 aW9uID0gQDE7CiAJCQkJfQogCTsKIAotcHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25F eGNlcHRPYmpTcGVjCitQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWM6CisJCQkgcmVsYXRpb25fZXhw cgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9TRVFVRU5DRTsKKwkJCQkJJCQt PnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5w dWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5yZWxhdGlv biA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJOworCitwdWJfZXhjZXB0 X3RibF9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKIAkJCQkJeyAkJCA9IGxpc3RfbWFr ZTEoJDEpOyB9Ci0JCQl8IHB1Yl9leGNlcHRfb2JqX2xpc3QgJywnIG9wdF90YWJsZSBQdWJsaWNh dGlvbkV4Y2VwdE9ialNwZWMKKwkJCXwgcHViX2V4Y2VwdF90YmxfbGlzdCAnLCcgb3B0X3RhYmxl IFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDQpOyB9 CisJOworCitwdWJfZXhjZXB0X3NlcV9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKKwkJ CQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9leGNlcHRfc2VxX2xpc3QgJywn IFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CisJCQl8IHB1Yl9leGNlcHRfc2VxX2xpc3QgJywnIFNFUVVFTkNFIFB1YmxpY2F0aW9uRXhjZXB0 U2VxU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDQpOyB9CiAJOwogCkBAIC0yMDc2NSw3 ICsyMDc5Myw3IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29i amVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o b2JqLT5sb2NhdGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7Ci0JCQkqcHVib2JqZWN0 cyA9IGxpc3RfY29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJKnB1 Ym9iamVjdHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfcmVsYXRpb25z KTsKIAkJfQogCQllbHNlIGlmIChvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05fQUxMX1NF UVVFTkNFUykKIAkJewpAQCAtMjA3NzcsNiArMjA4MDUsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxf b2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAog CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKG9iai0+bG9jYXRpb24pKTsKIAogCQkJKmFsbF9zZXF1 ZW5jZXMgPSB0cnVlOworCQkJKnB1Ym9iamVjdHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywg b2JqLT5leGNlcHRfcmVsYXRpb25zKTsKIAkJfQogCX0KIH0KQEAgLTIwODEyLDggKzIwODQxLDgg QEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQogCiAJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJ T05PQkpfVEFCTEUpCiAJCXsKLQkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBi ZSBzZXQgZm9yIHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KLQkJCWlmICghcHVib2JqLT5uYW1lICYm ICFwdWJvYmotPnB1YnRhYmxlKQorCQkJLyogcmVsYXRpb24gbmFtZSBvciBwdWJyZWxhdGlvbiBt dXN0IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLworCQkJaWYgKCFwdWJvYmotPm5h bWUgJiYgIXB1Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRhYmxl IG5hbWUiKSwKQEAgLTIwODIxLDEyICsyMDg1MCwxMiBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0 KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJCWlm IChwdWJvYmotPm5hbWUpCiAJCQl7Ci0JCQkJLyogY29udmVydCBpdCB0byBQdWJsaWNhdGlvblRh YmxlICovCi0JCQkJUHVibGljYXRpb25UYWJsZSAqcHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNh dGlvblRhYmxlKTsKKwkJCQkvKiBjb252ZXJ0IGl0IHRvIFB1YmxpY2F0aW9uUmVsYXRpb24gKi8K KwkJCQlQdWJsaWNhdGlvblJlbGF0aW9uICpwdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0 aW9uUmVsYXRpb24pOwogCi0JCQkJcHVidGFibGUtPnJlbGF0aW9uID0KKwkJCQlwdWJyZWxhdGlv bi0+cmVsYXRpb24gPQogCQkJCQltYWtlUmFuZ2VWYXIoTlVMTCwgcHVib2JqLT5uYW1lLCBwdWJv YmotPmxvY2F0aW9uKTsKLQkJCQlwdWJvYmotPnB1YnRhYmxlID0gcHVidGFibGU7CisJCQkJcHVi b2JqLT5wdWJyZWxhdGlvbiA9IHB1YnJlbGF0aW9uOwogCQkJCXB1Ym9iai0+bmFtZSA9IE5VTEw7 CiAJCQl9CiAJCX0KQEAgLTIwODM0LDE0ICsyMDg2MywxNCBAQCBwcmVwcm9jZXNzX3B1Ym9ial9s aXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJ IHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVN QSkKIAkJewogCQkJLyogV0hFUkUgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIGEgc2NoZW1hIG9i amVjdCAqLwotCQkJaWYgKHB1Ym9iai0+cHVidGFibGUgJiYgcHVib2JqLT5wdWJ0YWJsZS0+d2hl cmVDbGF1c2UpCisJCQlpZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0 aW9uLT53aGVyZUNsYXVzZSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dl ZCBmb3Igc2NoZW1hIiksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlv bikpOwogCiAJCQkvKiBDb2x1bW4gbGlzdCBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBvYmpl Y3QgKi8KLQkJCWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPmNvbHVt bnMpCisJCQlpZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0aW9uLT5j b2x1bW5zKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKIAkJCQkJCWVycm1zZygiY29sdW1uIHNwZWNpZmljYXRpb24gbm90IGFsbG93ZWQg Zm9yIHNjaGVtYSIpLApAQCAtMjA4NDksMTEgKzIwODc4LDExIEBAIHByZXByb2Nlc3NfcHVib2Jq X2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAog CQkJLyoKIAkJCSAqIFdlIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgdHlw ZSBvZiBzY2hlbWEgb2JqZWN0cwotCQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJ0 YWJsZSBpcyBzZXQuCisJCQkgKiBiYXNlZCBvbiB3aGV0aGVyIG5hbWUgYW5kIHB1YnJlbGF0aW9u IGlzIHNldC4KIAkJCSAqLwogCQkJaWYgKHB1Ym9iai0+bmFtZSkKIAkJCQlwdWJvYmotPnB1Ym9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwotCQkJZWxzZSBpZiAoIXB1 Ym9iai0+bmFtZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCWVsc2UgaWYgKCFwdWJvYmotPm5h bWUgJiYgIXB1Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gUFVC TElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChF UlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IGQ1NmRjYzcwMWNlLi5lZTIzMzFmNjM0NSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NjE3LDE4ICs0NjE3LDIyIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0 KQogCQl7CiAJCQlOVUxMLCBOVUxMCiAJCX07CisJCXB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNl cyA9IChTaW1wbGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyogRGVj aWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0 KCYocHViaW5mb1tpXS5kb2JqKSwgZm91dCk7CiAKIAkJLyoKLQkJICogR2V0IHRoZSBsaXN0IG9m IHRhYmxlcyBmb3IgcHVibGljYXRpb25zIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUCi0JCSAqIFRB QkxFIGNsYXVzZS4KKwkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBhbmQgc2VxdWVuY2VzIGZv ciBwdWJsaWNhdGlvbnMgc3BlY2lmaWVkIGluCisJCSAqIHRoZSBFWENFUFQgY2xhdXNlLgogCQkg KgotCQkgKiBBbHRob3VnaCBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMgaW4gRVhDRVBUIGxpc3Qg Y291bGQgYmUgc3RvcmVkIGluCi0JCSAqIFB1YmxpY2F0aW9uUmVsSW5mbywgZHVtcFB1YmxpY2F0 aW9uVGFibGUgY2Fubm90IGJlIHVzZWQgdG8gZW1pdAotCQkgKiB0aGVtLCBiZWNhdXNlIHRoZXJl IGlzIG5vIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBBREQgY29tbWFuZCB0byBhZGQKLQkJICogaW5k aXZpZHVhbCB0YWJsZSBlbnRyaWVzIHRvIHRoZSBFWENFUFQgbGlzdC4KKwkJICogQWx0aG91Z2gg aW5kaXZpZHVhbCB0YWJsZS9zZXF1ZW5jZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0IGNvdWxkIGJl CisJCSAqIHN0b3JlZCBpbiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNhdGlvblRhYmxl IGNhbm5vdCBiZSB1c2VkCisJCSAqIHRvIGVtaXQgdGhlbSwgYmVjYXVzZSB0aGVyZSBpcyBubyBB TFRFUiBQVUJMSUNBVElPTiAuLi4gQUREIGNvbW1hbmQKKwkJICogdG8gYWRkIGluZGl2aWR1YWwg dGFibGUgZW50cmllcyB0byB0aGUgRVhDRVBUIGxpc3QuCiAJCSAqCiAJCSAqIFRoZXJlZm9yZSwg dGhlIGFwcHJvYWNoIGlzIHRvIGR1bXAgdGhlIGNvbXBsZXRlIEVYQ0VQVCBsaXN0IGluIGEKIAkJ ICogc2luZ2xlIENSRUFURSBQVUJMSUNBVElPTiBzdGF0ZW1lbnQuIFB1YmxpY2F0aW9uSW5mbyBp cyB1c2VkIHRvCkBAIC00NjQyLDkgKzQ2NDYsMTAgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUg KmZvdXQpCiAKIAkJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCQkJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksCi0JCQkJCQkJICAiU0VMRUNUIHBycmVsaWRcbiIKLQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsXG4iCi0JCQkJCQkJICAiV0hFUkUgcHJwdWJpZCA9 ICV1IEFORCBwcmV4Y2VwdCIsCisJCQkJCQkJICAiU0VMRUNUIHByLnBycmVsaWQsIHBjLnJlbGtp bmRcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4i CisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjIE9OIHByLnBycmVsaWQgPSBw Yy5vaWRcbiIKKwkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJXUgQU5EIHByLnByZXhjZXB0 IiwKIAkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJZC5vaWQpOwogCiAJCQlyZXNfdGJscyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAg LTQ2NTQsMTQgKzQ2NTksMjEgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQlm b3IgKGludCBqID0gMDsgaiA8IG50YmxzOyBqKyspCiAJCQl7CiAJCQkJT2lkCQkJcHJyZWxpZDsK KwkJCQljaGFyCQlyZWxraW5kOwogCQkJCVRhYmxlSW5mbyAgKnRiaW5mbzsKIAogCQkJCXBycmVs aWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMCkpOworCQkJCXJlbGtpbmQgPSAq UFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMSk7CiAKIAkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9p ZChwcnJlbGlkKTsKIAogCQkJCWlmICh0YmluZm8gIT0gTlVMTCkKLQkJCQkJc2ltcGxlX3B0cl9s aXN0X2FwcGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJCXsKKwkJ CQkJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQkJCXNpbXBsZV9wdHJfbGlz dF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNlcywgdGJpbmZvKTsKKwkJCQkJZWxz ZQorCQkJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVz LCB0YmluZm8pOworCQkJCX0KIAkJCX0KIAogCQkJUFFjbGVhcihyZXNfdGJscyk7CkBAIC00NzIx LDEyICs0NzMzLDMwIEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJs aWNhdGlvbkluZm8gKnB1YmluZm8pCiAJCX0KIAkJaWYgKG5fZXhjZXB0ID4gMCkKIAkJCWFwcGVu ZFBRRXhwQnVmZmVyQ2hhcihxdWVyeSwgJyknKTsKKwl9CisJaWYgKHB1YmluZm8tPnB1YmFsbHNl cXVlbmNlcykKKwl7CisJCWludAkJCW5fZXhjZXB0ID0gMDsKIAotCQlpZiAocHViaW5mby0+cHVi YWxsc2VxdWVuY2VzKQorCQlpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQogCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIEFMTCBTRVFVRU5DRVMiKTsKKwkJZWxzZQorCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKKworCQkvKiBJbmNs dWRlIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3NlcXVlbmNl cy4gKi8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF9z ZXF1ZW5jZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5m byAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4Y2Vw dCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCAoIik7CisJ CQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOworCQkJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksICJTRVFVRU5DRSAlcyIsIGZtdFF1YWxpZmllZER1bXBhYmxlKHRi aW5mbykpOworCQl9CisJCWlmIChuX2V4Y2VwdCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlckNo YXIocXVlcnksICcpJyk7CiAJfQotCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykK LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKIAog CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdJVEggKHB1Ymxpc2ggPSAnIik7CiAJaWYg KHB1YmluZm8tPnB1Ymluc2VydCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDVhNjcyNmQ4YjEyLi44ZTg2OWZl NzkxYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02NzksNiArNjc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1 YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1 YmdlbmNvbHNfdHlwZTsKIAlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CisJU2ltcGxlUHRy TGlzdCBleGNlcHRfc2VxdWVuY2VzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCmluZGV4IDNlZTlmZGE1MGU0Li40YjJjODhlMjNhMiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKQEAgLTMyNDIsNiArMzI0MiwyNiBAQCBteSAldGVzdHMgPSAoCiAJ CWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAK KwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwK KwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTEgRk9SIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMudGVzdF90YWJsZV9jb2wxX3NlcSk7JywK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpIFdJ VEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJ L3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwK Kwl9LAorCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMicgPT4geworCQljcmVhdGVfb3JkZXIg PT4gOTIsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEyIEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGUpLCBBTEwgU0VR VUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUpLCBBTEwgU0VRVUVO Q0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAor CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAor CiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAs CiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpAQCAtNDA0Miw2ICs0 MDYyLDggQEAgbXkgJXRlc3RzID0gKAogCX0sCiAKIAknQ1JFQVRFIFNFUVVFTkNFIHRlc3RfdGFi bGVfY29sMV9zZXEnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDkwLAorCQljcmVhdGVfc3FsID0+ ICdDUkVBVEUgU0VRVUVOQ0UgdGVzdF90YWJsZV9jb2wxX3NlcScsCiAJCXJlZ2V4cCA9PiBxci9e CiAJCQlcUUNSRUFURSBTRVFVRU5DRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9jb2wxX3NlcVxFCiAJ CQlcblxzK1xRQVMgaW50ZWdlclxFCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGUxNDQ5NjU0Zjk2Li4xZjY3YzMxMDE3 NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKQEAgLTE3NzgsNyArMTc3OCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJewogCQlQR3Jlc3VsdCAgICpyZXN1bHQgPSBOVUxM OwogCQlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCQljaGFyCSAgICpmb290ZXJz WzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OworCQljaGFyCSAgICpmb290ZXJzWzRdID0ge05VTEws IE5VTEwsIE5VTEwsIE5VTEx9OwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAq L1xuIiwgXygiR2V0IHNlcXVlbmNlIGluZm9ybWF0aW9uIikpOwogCQlpZiAocHNldC5zdmVyc2lv biA+PSAxMDAwMDApCkBAIC0xODgyLDExICsxODgyLDE2IEBAIGRlc2NyaWJlT25lVGFibGVEZXRh aWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCXsKIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsICIvKiAlcyAqL1xuIiwKIAkJCQkJCQkgIF8oIkdldCBwdWJsaWNhdGlvbnMgY29udGFpbmlu ZyB0aGlzIHNlcXVlbmNlIikpOwotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBw dWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwIgorCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwgIlNFTEVDVCBwLnB1Ym5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uIHAiCiAJCQkJCQkJICAiXG5XSEVSRSBwLnB1YmFsbHNlcXVlbmNlcyIKIAkJCQkJCQkgICJc biBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKSIKKwkJCQkJ CQkgICJcbiBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkJCQkJICAiICAgICBTRUxFQ1QgMVxuIgor CQkJCQkJCSAgIiAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgor CQkJCQkJCSAgIiAgICAgV0hFUkUgcHIucHJwdWJpZCA9IHAub2lkIEFORFxuIgorCQkJCQkJCSAg IiAgICAgcHIucHJyZWxpZCA9ICclcycpIgogCQkJCQkJCSAgIlxuT1JERVIgQlkgMSIsCi0JCQkJ CQkJICBvaWQpOworCQkJCQkJCSAgb2lkLCBvaWQpOwogCiAJCQlyZXN1bHQgPSBQU1FMZXhlYyhi dWYuZGF0YSk7CiAJCQlpZiAocmVzdWx0KQpAQCAtMTkxMiw2ICsxOTE3LDQyIEBAIGRlc2NyaWJl T25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQl9CiAJCX0KIAorCQkv KiBQcmludCBwdWJsaWNhdGlvbnMgd2hlcmUgdGhlIHNlcXVlbmNlIGlzIGluIHRoZSBFWENFUFQg Y2xhdXNlICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcC5wdWJuYW1lXG4iCisJCQkJCQkJ ICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgor CQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJ CQkJCSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRh dGEpOworCQkJaWYgKHJlc3VsdCkKKwkJCXsKKwkJCQlpbnQJCQl0dXBsZXMgPSBQUW50dXBsZXMo cmVzdWx0KTsKKworCQkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXsKKwkJCQkJcHJpbnRmUFFFeHBC dWZmZXIoJnRtcGJ1ZiwgXygiRXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6IikpOworCisJCQkJ CS8qIE1pZ2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJCQlmb3IgKGkgPSAw OyBpIDwgdHVwbGVzOyBpKyspCisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmdG1wYnVmLCAiXG4g ICAgXCIlc1wiIiwgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCQlpZiAoZm9vdGVy c1swXSA9PSBOVUxMKQorCQkJCQkJZm9vdGVyc1swXSA9IHBnX3N0cmR1cCh0bXBidWYuZGF0YSk7 CisJCQkJCWVsc2UgaWYgKGZvb3RlcnNbMV0gPT0gTlVMTCkKKwkJCQkJCWZvb3RlcnNbMV0gPSBw Z19zdHJkdXAodG1wYnVmLmRhdGEpOworCQkJCQllbHNlCisJCQkJCQlmb290ZXJzWzJdID0gcGdf c3RyZHVwKHRtcGJ1Zi5kYXRhKTsKKwkJCQkJcmVzZXRQUUV4cEJ1ZmZlcigmdG1wYnVmKTsKKwkJ CQl9CisKKwkJCQlQUWNsZWFyKHJlc3VsdCk7CisJCQl9CisJCX0KKwogCQlpZiAodGFibGVpbmZv LnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQogCQkJcHJpbnRmUFFF eHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCBzZXF1ZW5jZSBcIiVzLiVzXCIiKSwKIAkJCQkJ CQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CkBAIC02OTUwLDYgKzY5OTEsNyBAQCBkZXNj cmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQljaGFyCSAgICpwdWJpZCA9 IFBRZ2V0dmFsdWUocmVzLCBpLCAwKTsKIAkJY2hhcgkgICAqcHVibmFtZSA9IFBRZ2V0dmFsdWUo cmVzLCBpLCAxKTsKIAkJYm9vbAkJcHViYWxsdGFibGVzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCAzKSwgInQiKSA9PSAwOworCQlib29sCQlwdWJhbGxzZXF1ZW5jZXMgPSBzdHJjbXAoUFFn ZXR2YWx1ZShyZXMsIGksIDQpLCAidCIpID09IDA7CiAJCXByaW50VGFibGVPcHQgbXlvcHQgPSBw c2V0LnBvcHQudG9wdDsKIAogCQlpbml0UFFFeHBCdWZmZXIoJnRpdGxlKTsKQEAgLTY5ODYsNyAr NzAyOCw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlw cmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDEwKSwgZmFsc2UsIGZh bHNlKTsKIAkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMSks IGZhbHNlLCBmYWxzZSk7CiAKLQkJaWYgKCFwdWJhbGx0YWJsZXMpCisJCWlmICghcHViYWxsdGFi bGVzICYmICFwdWJhbGxzZXF1ZW5jZXMpCiAJCXsKIAkJCS8qIEdldCB0aGUgdGFibGVzIGZvciB0 aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9uICovCiAJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAi LyogJXMgKi9cbiIsCkBAIC03MDQwLDcgKzcwODIsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQot CQllbHNlCisJCWlmIChwdWJhbGx0YWJsZXMpCiAJCXsKIAkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE5MDAwMCkKIAkJCXsKQEAgLTcwNTIsMTMgKzcwOTQsMzIgQEAgZGVzY3JpYmVQdWJsaWNhdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGNcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4g T04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJ CQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJ CQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHQgQU5EIGMucmVsa2lu ZCBJTiAoJ3InLCdwJylcbiIKIAkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKIAkJCQlp ZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6Iiks CiAJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJ fQogCQl9CisJCWlmIChwdWJhbGxzZXF1ZW5jZXMpCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9u ID49IDE5MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgc2VxdWVuY2VzIGluIHRoZSBFWENFUFQgY2xh dXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg Ii8qICVzICovXG4iLAorCQkJCQkJCQkgIF8oIkdldCBzZXF1ZW5jZXMgZXhjbHVkZWQgYnkgdGhp cyBwdWJsaWNhdGlvbiIpKTsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkg ICJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJlbG5hbWVcbiIKKwkJCQkJCQkJICAiRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFs b2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuIgorCQkJCQkJCQkg ICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBw ci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnIEFORCBwci5w cmV4Y2VwdCBBTkQgYy5yZWxraW5kID0gJ1MnXG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBw dWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNl cHQgc2VxdWVuY2VzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVy cm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlG b3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGRlNTQ3YThjYjM3Li4xMmQyNzZjYmI2NSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwpAQCAtMzc2MSw2ICszNzYxLDE4IEBAIG1hdGNoX3ByZXZpb3VzX3dv cmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl90YWJsZXMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIigiLCAi VEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExF VEVfV0lUSCgiKSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiKSkKKwkJQ09NUExFVEVfV0lUSCgi RVhDRVBUICggU0VRVUVOQ0UiLCAiV0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJF WENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFV RU5DRVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiU0VRVUVOQ0UiKTsKKwll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIikpCisJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNoQW55Tikg JiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZ KFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJF WENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dk LCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRF X1dJVEgoIklOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA4OWI0 YmIxNGY2Mi4uNDljMjlhODc2MzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgK QEAgLTE3Nyw4ICsxNzcsOCBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0T3B0CiAKIGV4 dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwKIAkJ CQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7Ci1leHRlcm4gTGlzdCAq R2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsCi0JCQkJCQkJCQkJICBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVi bGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMo dm9pZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGlj YXRpb25TY2hlbWFzKE9pZCBwdWJpZCk7CkBAIC0yMDAsNyArMjAwLDggQEAgZXh0ZXJuIGJvb2wg Y2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwK IAkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQsIEJpdG1hcHNldCAqKmNvbHMpOwogZXh0ZXJu IE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGlj YXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzLAotCQkJ CQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICphbHRlcl9zdG10KTsKKwkJCQkJCQkJCQkJ ICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCwKKwkJCQkJCQkJCQkJICBjaGFyIHB1 YnJlbGtpbmQpOwogZXh0ZXJuIEJpdG1hcHNldCAqcHViX2NvbGxpc3RfdmFsaWRhdGUoUmVsYXRp b24gdGFyZ2V0cmVsLCBMaXN0ICpjb2x1bW5zKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1Ymxp Y2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCiAJCQkJCQkJCQkJCWJv b2wgaWZfbm90X2V4aXN0cyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggOTEzNzdhNmNkZTMu LjIwNGFlYTYxMGNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00NDY1LDE0ICs0NDY1LDE0 IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogCWJvb2wJCW1pc3Np bmdfb2s7CQkvKiBmb3IgRFJPUCAtIHNraXAgZXJyb3IgaWYgbWlzc2luZz8gKi8KIH0gQWx0ZXJU U0NvbmZpZ3VyYXRpb25TdG10OwogCi10eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCit0 eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbGF0aW9uCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlS YW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkg ICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJ CS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCiAJYm9vbAkJZXhj ZXB0OwkJCS8qIFRydWUgaWYgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCi19IFB1Ymxp Y2F0aW9uVGFibGU7Cit9IFB1YmxpY2F0aW9uUmVsYXRpb247CiAKIC8qCiAgKiBQdWJsaWNhdGlv biBvYmplY3QgdHlwZQpAQCAtNDQ4MSw2ICs0NDgxLDcgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0 aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJCS8qIEEgdGFibGUgKi8K IAlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUsCS8qIEEgdGFibGUgaW4gdGhlIEVYQ0VQVCBj bGF1c2UgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENFUFRfU0VRVUVOQ0UsIC8qIEEgc2VxdWVuY2Ug aW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1B LAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9D VVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJ ICogc2VhcmNoX3BhdGggKi8KQEAgLTQ0OTIsNyArNDQ5Myw3IEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uT2JqU3BlYwogCU5vZGVUYWcJCXR5cGU7CiAJUHVibGljYXRpb25PYmpTcGVjVHlw ZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICovCiAJY2hh cgkgICAqbmFtZTsKLQlQdWJsaWNhdGlvblRhYmxlICpwdWJ0YWJsZTsKKwlQdWJsaWNhdGlvblJl bGF0aW9uICpwdWJyZWxhdGlvbjsKIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uT2JqU3BlYzsKIApAQCAtNDUw OSw3ICs0NTEwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJ Tm9kZVRhZwkJdHlwZTsKIAlQdWJsaWNhdGlvbkFsbE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlw ZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwotCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7 CS8qIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KKwlMaXN0CSAgICpl eGNlcHRfcmVsYXRpb25zOwkvKiBkZXBlbmRpbmcgb24gdGhlICdwdWJvYmp0eXBlJywgdGhpcyBp cworCQkJCQkJCQkJICogYSBsaXN0IG9mIGVpdGhlciB0YWJsZXMgb3Igc2VxdWVuY2VzCisJCQkJ CQkJCQkgKiBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQYXJzZUxvYwlsb2Nh dGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0 aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dAppbmRleCAyOWU1NGIyMTRhMC4uMTVjMzBmZmVlZmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC00NTgsNyArNDU4LDcgQEAgRXhjbHVkZWQgZnJvbSBw dWJsaWNhdGlvbnM6CiBOdW1iZXIgb2YgcGFydGl0aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRo ZW0uKQogCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSB0ZXN0cHViX3BhcnQxKTsKLUVSUk9SOiAgY2Fubm90IHNwZWNpZnkgcmVsYXRpb24g InB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZQor RVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRlc3RwdWJfcGFydDEiIGluIHRoZSBwdWJs aWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4KIENSRUFURSBUQUJMRSB0 YWJfbWFpbiAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKIC0tIEF0dGFjaGluZyBhIHBh cnRpdGlvbiBpcyBub3QgYWxsb3dlZCBpZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgYXBwZWFycyBp biBhCkBAIC00NzMsNiArNDczLDcgQEAgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBU ZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVn cmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXEx OworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTI7CiAtLSBGT1IgQUxMIFNFUVVFTkNF UwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEgRk9SIEFMTCBTRVFVRU5DRVM7CkBAIC01MzQs MTAgKzUzNSw2NCBAQCBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5j ZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lCiAgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBzdG9yZWQgICAgICAgICAgICB8IGYgICAgICAgIHwgCiAo MSByb3cpCiAKLURST1AgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3QucmVncmVz c19wdWJfc2VxMTsKKy0tIFRlc3QgQUxMIFNFUVVFTkNFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKK1NF VCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVO Q0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMSwgU0VRVUVOQ0Ug cmVncmVzc19wdWJfc2VxMik7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitF eGNlcHQgc2VxdWVuY2VzOgorICAgICJwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExIgorICAgICJw dWJsaWMucmVncmVzc19wdWJfc2VxMCIKKyAgICAicHVibGljLnJlZ3Jlc3NfcHViX3NlcTIiCisK Ky0tIENoZWNrIHRoYXQgdGhlIHNlcXVlbmNlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNh dGlvbnMgd2hlcmUgaXQgaXMgbGlzdGVkCistLSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorXGQrIHJl Z3Jlc3NfcHViX3NlcTAKKyAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHVibGljLnJl Z3Jlc3NfcHViX3NlcTAiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11 bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAg ICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK0luY2x1ZGVkIGluIHB1YmxpY2F0aW9uczoKKyAg ICAicmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMiCisgICAgInJlZ3Jlc3Nf cHViX2ZvcmFsbHNlcXVlbmNlczEiCisgICAgInJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczIi CitFeGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uczoKKyAgICAicmVncmVzc19wdWJfZm9yYWxsc2Vx dWVuY2VzMyIKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIGZhaWwgLSBzZXF1ZW5j ZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CitDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGlj LnJlZ3Jlc3NfcHViX3NlcTAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1 c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNl cy4KKy0tIGZhaWwgLSB0YWJsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5j ZSBsaXN0CitDUkVBVEUgVEFCTEUgdGFiX3NlcShhIGludCk7CitDUkVBVEUgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNF UVVFTkNFIHRhYl9zZXEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRhYl9zZXEi IGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDogIFRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIFRlc3QgY29tYmlu YXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UK K1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIChUQUJMRSB0ZXN0cHViX3RibDEpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ug cmVncmVzc19wdWJfc2VxMCk7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2Fs bHRhYmxlczEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBW aWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAg fCBmICAgICAgICB8IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIK K0V4Y2VwdCBzZXF1ZW5jZXM6CisgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIgorCitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBw dWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExLCByZWdyZXNzX3B1Yl9zZXEyOwogRFJPUCBQVUJMSUNB VElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwogRFJPUCBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9m b3JhbGxzZXF1ZW5jZXMzOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2Vx dWVuY2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNl cXVlbmNlc19hbGx0YWJsZXMxOworRFJPUCBUQUJMRSB0YWJfc2VxOwogLS0gZmFpbCAtIFNwZWNp ZnlpbmcgQUxMIFRBQkxFUyBtb3JlIHRoYW4gb25jZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwg VEFCTEVTLCBBTEwgVEFCTEVTOwogRVJST1I6ICBpbnZhbGlkIHB1YmxpY2F0aW9uIG9iamVjdCBs aXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMDQxZTE0YTRkZTYuLmQ0 NzI1NTNjN2NkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0yMjMsNiAr MjIzLDcgQEAgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBUZXN0cyBmb3IgcHVibGlj YXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsK IENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOworQ1JFQVRFIFNFUVVF TkNFIHJlZ3Jlc3NfcHViX3NlcTI7CiAKIC0tIEZPUiBBTEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CkBAIC0yNTMsMTAgKzI1NCwzNSBAQCBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2Vx dWVuY2VzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICdyZWdyZXNzX3B1Yl9m b3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlcyc7CiBcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2Vx dWVuY2VzX2FsbHRhYmxlcwogCi1EUk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90 ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CistLSBUZXN0IEFMTCBTRVFVRU5DRVMgd2l0aCBFWENFUFQg Y2xhdXNlCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENF UFQgKFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEs IFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2Vx dWVuY2VzMworLS0gQ2hlY2sgdGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhl IHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENFUFQgY2xhdXNl CitcZCsgcmVncmVzc19wdWJfc2VxMAorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworLS0g ZmFpbCAtIHNlcXVlbmNlIG9iamVjdCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHRhYmxlIGxpc3QK K0NSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXM0IEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19wdWJfc2VxMCk7CisKKy0tIGZhaWwgLSB0YWJs ZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CitDUkVBVEUgVEFC TEUgdGFiX3NlcShhIGludCk7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxs c2VxdWVuY2VzNCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHRhYl9zZXEpOwor CistLSBUZXN0IGNvbWJpbmF0aW9uIG9mIEFMTCBTRVFVRU5DRVMgYW5kIEFMTCBUQUJMRVMgd2l0 aCBFWENFUFQgY2xhdXNlCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxIEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKSwgQUxMIFNFUVVFTkNFUyBF WENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9y X2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCitE Uk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEs IHJlZ3Jlc3NfcHViX3NlcTI7CiBEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNl cXVlbmNlczE7CiBEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczI7 CitEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczM7CiBEUk9QIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzOworRFJPUCBQ VUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczE7CitEUk9Q IFRBQkxFIHRhYl9zZXE7CiAKIC0tIGZhaWwgLSBTcGVjaWZ5aW5nIEFMTCBUQUJMRVMgbW9yZSB0 aGFuIG9uY2UKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2Vz X2FsbHRhYmxlcyBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUywgQUxMIFRBQkxFUzsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDhjNThkMjgyZWVlLi5jMDNjNzdi YjQxZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0yODIsNiArMjgy LDgxIEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJT Q1JJUFRJT04gdGFwX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CiAKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIGNsYXVzZSB0 ZXN0IGNhc2VzIGZvciBzZXF1ZW5jZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxICgKKwlDUkVBVEUgVEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUgU0VRVUVO Q0Ugc2VxMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxMjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBT RUxFQ1QgbmV4dHZhbCgnc2VxMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlJTlNF UlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxMicpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjEgRk9SIEFMTCBTRVFVRU5D RVMgRVhDRVBUIChTRVFVRU5DRSBzZXExKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTRVFVRU5DRSBzZXExOworCUNSRUFURSBT RVFVRU5DRSBzZXEyOworCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxOworKSk7CisKKyMgV2FpdCBm b3IgaW5pdGlhbCBzeW5jIHRvIGZpbmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxFQ1Qg Y291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5P VCBJTiAoJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdy ZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIENoZWNrIHRoZSBpbml0aWFs IGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxMSIp OworaXMoJHJlc3VsdCwgJzF8ZicsICdzZXF1ZW5jZXMgaW4gRVhDRVBUIGxpc3QgaXMgZXhjbHVk ZWQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxMiIpOworaXMoJHJlc3Vs dCwgJzEwMHx0JywgJ2luaXRpYWwgdGVzdCBkYXRhIHJlcGxpY2F0ZWQgZm9yIHNlcTInKTsKKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHdo ZW4gYSBzdWJzY3JpcHRpb24gaXMgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25z CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzZXFf dGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsK KwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxMicpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBzZXEyKTsKKykpOworCisjIFN1YnNjcmliZSB0byBt dWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBkaWZmZXJlbnQgRVhDRVBUIHNlcXVlbmNlIGxpc3QK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlBTFRFUiBT VUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyOwor CUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOworKSk7Ciskc3lu Y2VkX3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25f cmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncicpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7 CisKKyMgc2VxMSBpcyBleGNsdWRlZCBpbiB0YXBfcHViMSBidXQgaW5jbHVkZWQgaW4gdGFwX3B1 YjIsIHNvIG92ZXJhbGwgdGhlCisjIHN1YnNjcmlwdGlvbiB0cmVhdHMgaXQgYXMgaW5jbHVkZWQu CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSBzZXExIik7CitpcygkcmVzdWx0LCAnMjAw fHQnLAorCSdjaGVjayByZXBsaWNhdGlvbiBvZiBhIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xh dXNlIG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlcicKKyk7CisKKyMg c2VxMiBpcyBleGNsdWRlZCBpbiB0YXBfcHViMiBidXQgaW5jbHVkZWQgaW4gdGFwX3B1YjEsIHNv IG92ZXJhbGwgdGhlCisjIHN1YnNjcmlwdGlvbiB0cmVhdHMgaXQgYXMgaW5jbHVkZWQuCiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBs YXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSBzZXEyIik7CitpcygkcmVzdWx0LCAnMjAwfHQnLAor CSdjaGVjayByZXBsaWNhdGlvbiBvZiBhIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xhdXNlIG9m IG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlcicKKyk7CisKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1 YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElD QVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisKICRub2RlX3B1Ymxpc2hlci0+c3RvcCgn ZmFzdCcpOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg OGNmNDBjODcwNDMuLmEwNGQ3ZGUzY2RjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MjQ3Myw4ICsyNDczLDggQEAgUHVibGljYXRpb25PYmpTcGVjVHlwZQogUHVibGljYXRpb25QYXJ0 T3B0CiBQdWJsaWNhdGlvblJlbEluZm8KIFB1YmxpY2F0aW9uUmVsS2luZAorUHVibGljYXRpb25S ZWxhdGlvbgogUHVibGljYXRpb25TY2hlbWFJbmZvCi1QdWJsaWNhdGlvblRhYmxlCiBQdWJsaXNo R2VuY29sc1R5cGUKIFB1bGxGaWx0ZXIKIFB1bGxGaWx0ZXJPcHMKLS0gCjIuMzQuMQoK --00000000000002ae240652b2362e Content-Type: application/octet-stream; name="v6-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Disposition: attachment; filename="v6-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpm84lly1 RnJvbSBiYjYyOTNlNmFiMDgzMWU4ZjljZWJmOWM2OTg3YjU5MWRhODYyOTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTEgTWF5IDIwMjYgMTA6NTk6MjggKzA1MzAKU3ViamVjdDogW1BBVENIIHY2 IDIvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQUxURVIgUFVCTElDQVRJ T04KCkV4dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IGFuIEVYQ0VQVCBjbGF1c2Ug d2hlbiB1c2luZwpBTEwgU0VRVUVOQ0VTLCBhbGxvd2luZyBzcGVjaWZpYyBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSB0aGUKcHVibGljYXRpb24uCgpJZiB0aGUgRVhDRVBUIGNsYXVzZSBp cyBzcGVjaWZpZWQsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBmb3IgdGhlCnB1YmxpY2F0 aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHNlcXVlbmNlcy4gSWYgdGhlIEVYQ0VQ VApjbGF1c2UgaXMgb21pdHRlZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHNlcXVlbmNl cyBhcmUgY2xlYXJlZC4KCkV4YW1wbGU6CgogIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIEFM TCBTRVFVRU5DRVM7CgpUaGlzIGNsZWFycyBhbnkgZXhpc3Rpbmcgc2VxdWVuY2UgZXhjbHVzaW9u cyBmb3IgdGhlIHB1YmxpY2F0aW9uLgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEsIHMyKTsKClRoaXMgc2V0cyB0aGUgZXhjbHVz aW9uIGxpc3QgdG8gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZXMuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYyAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYyAgICB8IDI1MyArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDE2ICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwgICAgICB8ICAgNSArCiA3IGZpbGVzIGNoYW5nZWQsIDIwMSBpbnNlcnRpb25z KCspLCAxMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5z Z21sCmluZGV4IGFhMzJiYjE2OWU5Li4zY2UxZDVkMTUzOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzYsNyArMzYsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBU TyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0 aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBB TEwgVEFCTEVTIFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2Vw dF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwgU0VRVUVO Q0VTCisgICAgQUxMIFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBd CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlv bl9kcm9wX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtNTQs NiArNTQsMTAgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+YW5kIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3Bo cmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwv cGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNl cXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5 bm9wc2lzZGl2PgogCkBAIC03NSw3ICs3OSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAg ICBUaGUgdGhpcmQgdmFyaWFudCBlaXRoZXIgbW9kaWZpZXMgdGhlIGluY2x1ZGVkIHRhYmxlcy9z Y2hlbWFzCiAgICBvciBtYXJrcyB0aGUgcHVibGljYXRpb24gYXMgPGxpdGVyYWw+Rk9SIEFMTCBT RVFVRU5DRVM8L2xpdGVyYWw+IG9yCiAgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJh bD4sIG9wdGlvbmFsbHkgdXNpbmcKLSAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gdG8gZXhj bHVkZSBzcGVjaWZpYyB0YWJsZXMuIFRoZQorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiB0 byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBvciBzZXF1ZW5jZXMuIFRoZQogICAgPGxpdGVyYWw+ U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4gdHJhbnNmb3JtIGFuIGVtcHR5IHB1 YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8 L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiBhbmQg PGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4pLCBpbnRvCkBAIC04NiwxMSArOTAsMTUg QEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHB1YmxpY2F0aW9uIGRlZmluZWQgZm9yIDxs aXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBJbiBhZGRpdGlvbiwKICAgIDxsaXRlcmFs PlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHRhYmxl cyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBv ZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIElm IDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGlzIHNwZWNpZmllZCB3aXRoIGEgbGlzdCBv ZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBpcyByZXBsYWNlZAotICAgd2l0 aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBv bWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIGNsZWFyZWQuIFRoZSA8 bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbgotICAgdXNlZCB3aXRoIGEgcHVibGlj YXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKKyAgIDxs aXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJsaWNhdGlvbiBhbmQKKyAgIDxsaXRl cmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhl IHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+ IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4gcHVi bGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCB3 aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2VxdWVuY2VzLAorICAgdGhlIGV4aXN0aW5nIGV4Y2x1 c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB0YWJsZXMgb3IKKyAgIHNl cXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUgZXhp c3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xp dGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdpdGggYQorICAgcHVibGljYXRpb24gZGVmaW5lZCB3 aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKICAgIDxsaXRlcmFsPkZPUiBUQUJM RVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3NjaGVt YXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhlIGV4 aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAgICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVi bGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CmluZGV4IDVmZDJjMjc5NWFiLi4wNDViMTZlY2YyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYwpAQCAtOTQ2LDcgKzk0Niw3IEBAIEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNh dGlvbnMoT2lkIHJlbGlkKQogICovCiBzdGF0aWMgTGlzdCAqCiBnZXRfcHVibGljYXRpb25fcmVs YXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAotCQkJCQkJ ICBib29sIGV4Y2VwdF9mbGFnKQorCQkJCQkJICBib29sIGV4Y2VwdF9mbGFnLCBjaGFyIHB1YnJl bGtpbmQpCiB7CiAJTGlzdAkgICAqcmVzdWx0OwogCVJlbGF0aW9uCXB1YnJlbHNyZWw7CkBAIC05 NzMsOCArOTczLDE1IEBAIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0 aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7CiAKIAkJaWYgKGV4Y2VwdF9mbGFnID09IHB1YnJlbC0+ cHJleGNlcHQpCi0JCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVz dWx0LCBwdWJfcGFydG9wdCwKLQkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOworCQl7CisJ CQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHB1YnJlbC0+cHJyZWxpZCk7CisKKwkJ CWlmICgocHVicmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OICYmIHJlbGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTikgfHwKKwkJCQkocHVicmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OICYmIHJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgfHwKKwkJCQkocHVicmVsa2luZCA9 PSBSRUxLSU5EX1NFUVVFTkNFICYmIHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkpCisJCQkJ cmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRv cHQsCisJCQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CisJCX0KIAl9CiAKIAlzeXN0YWJs ZV9lbmRzY2FuKHNjYW4pOwpAQCAtOTk4LDcgKzEwMDUsNyBAQCBHZXRJbmNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQog ewogCUFzc2VydCghR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOwogCi0JcmV0dXJu IGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBmYWxzZSk7CisJ cmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBmYWxz ZSwgUkVMS0lORF9SRUxBVElPTik7CiB9CiAKIC8qCkBAIC0xMDA2LDEyICsxMDEzLDEzIEBAIEdl dEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQpCiAgKiAnRk9SIEFMTCBUQUJMRVMnIG9yIGEgJ0ZPUiBBTEwgU0VRVUVO Q0VTJyBwdWJsaWNhdGlvbi4KICAqLwogTGlzdCAqCi1HZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorR2V0RXhj bHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCwKKwkJCQkJCQkJY2hhciBwdWJyZWxraW5kKQogewogCUFzc2VydChHZXRQdWJs aWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8fAogCQkgICBHZXRQdWJsaWNhdGlvbihwdWJpZCkt PmFsbHNlcXVlbmNlcyk7CiAKLQlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJp ZCwgcHViX3BhcnRvcHQsIHRydWUpOworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25z KHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSwgcHVicmVsa2luZCk7CiB9CiAKIC8qCkBAIC0xMDc5 LDcgKzEwODcsOCBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIg cmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyB0 byB0YWJsZXMgYW5kIHNlcXVlbmNlcyAqLwogCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJ CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJIHJlbGtpbmQp OwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBlOTc1 NzhkZGQ3NS4uM2JmYzk0ZWJlYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3Qg KnJlbHMpOwogc3RhdGljIHZvaWQgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7CiBz dGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMs IGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 LCBjaGFyIHB1YnJlbGtpbmQpOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wVGFibGVzKE9p ZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyB2b2lkIFB1Ymxp Y2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19v ayk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpz Y2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0 bXQgKnN0bXQpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQs IExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CkBAIC0xMjUxLDE0ICsxMjUxLDExOCBA QCBJbnZhbGlkYXRlUHVibGljYXRpb25SZWxzKExpc3QgKnJlbGlkcykKIH0KIAogLyoKLSAqIEFk ZCBvciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4KKyAqIFJlY3JlYXRlIGxpc3Qg b2YgdGFibGVzL3NlcXVlbmNlcyB0byBiZSBkcm9wcGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgor ICogVG8gcmVjcmVhdGUgdGhlIHJlbGF0aW9uIGxpc3QgZm9yIHRoZSBwdWJsaWNhdGlvbiwgbG9v ayBmb3IgZXhpc3RpbmcKKyAqIHJlbGF0aW9ucyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGRyb3Bw ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCi1BbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAotCQkJCQkgICBMaXN0ICp0YWJsZXMsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAotCQkJCQkgICBib29sIHB1Ymxpc2hfc2NoZW1hKQorZ2V0 X2RlbGV0ZV9yZWxzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgTGlzdCAqb2xkcmVsaWRzLCBMaXN0 ICoqZGVscmVscykKK3sKKwlmb3JlYWNoX29pZChvbGRyZWxpZCwgb2xkcmVsaWRzKQorCXsKKwkJ TGlzdENlbGwgICAqbmV3bGM7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAqb2xkcmVsOworCQlib29s CQlmb3VuZCA9IGZhbHNlOworCQlIZWFwVHVwbGUJcmZ0dXBsZTsKKwkJTm9kZQkgICAqb2xkcmVs d2hlcmVjbGF1c2UgPSBOVUxMOworCQlCaXRtYXBzZXQgICpvbGRjb2x1bW5zID0gTlVMTDsKKwor CQkvKiBsb29rIHVwIHRoZSBjYWNoZSBmb3IgdGhlIG9sZCByZWxtYXAgKi8KKwkJcmZ0dXBsZSA9 IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJICBPYmplY3RJZEdl dERhdHVtKG9sZHJlbGlkKSwKKwkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisK KwkJLyoKKwkJICogU2VlIGlmIHRoZSBleGlzdGluZyByZWxhdGlvbiBjdXJyZW50bHkgaGFzIGEg V0hFUkUgY2xhdXNlIG9yIGEKKwkJICogY29sdW1uIGxpc3QuIFdlIG5lZWQgdG8gY29tcGFyZSB0 aG9zZSB0b28uCisJCSAqLworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChyZnR1cGxlKSkKKwkJewor CQkJYm9vbAkJaXNudWxsID0gdHJ1ZTsKKwkJCURhdHVtCQl3aGVyZUNsYXVzZURhdHVtOworCQkJ RGF0dW0JCWNvbHVtbkxpc3REYXR1bTsKKworCQkJLyogTG9hZCB0aGUgV0hFUkUgY2xhdXNlIGZv ciB0aGlzIHRhYmxlLiAqLworCQkJd2hlcmVDbGF1c2VEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQ VUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKKwkJCQkJCQkJCQkJICAgQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfcHJxdWFsLAorCQkJCQkJCQkJCQkgICAmaXNudWxsKTsKKwkJCWlmICghaXNudWxs KQorCQkJCW9sZHJlbHdoZXJlY2xhdXNlID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJp bmcod2hlcmVDbGF1c2VEYXR1bSkpOworCisJCQkvKiBUcmFuc2Zvcm0gdGhlIGludDJ2ZWN0b3Ig Y29sdW1uIGxpc3QgdG8gYSBiaXRtYXAuICovCisJCQljb2x1bW5MaXN0RGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCisJCQkJCQkJCQkJCSAgQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycywKKwkJCQkJCQkJCQkJICAmaXNudWxsKTsKKworCQkJ aWYgKCFpc251bGwpCisJCQkJb2xkY29sdW1ucyA9IHB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChO VUxMLCBjb2x1bW5MaXN0RGF0dW0sIE5VTEwpOworCisJCQlSZWxlYXNlU3lzQ2FjaGUocmZ0dXBs ZSk7CisJCX0KKworCQlmb3JlYWNoKG5ld2xjLCByZWxzKQorCQl7CisJCQlQdWJsaWNhdGlvblJl bEluZm8gKm5ld3B1YnJlbDsKKwkJCU9pZAkJCW5ld3JlbGlkOworCQkJQml0bWFwc2V0ICAqbmV3 Y29sdW1ucyA9IE5VTEw7CisKKwkJCW5ld3B1YnJlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikg bGZpcnN0KG5ld2xjKTsKKwkJCW5ld3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwt PnJlbGF0aW9uKTsKKworCQkJLyoKKwkJCSAqIFZhbGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElm IHRoZSBjb2x1bW4gbGlzdCBvciBXSEVSRSBjbGF1c2UKKwkJCSAqIGNoYW5nZXMsIHRoZW4gdGhl IHZhbGlkYXRpb24gZG9uZSBoZXJlIHdpbGwgYmUgZHVwbGljYXRlZAorCQkJICogaW5zaWRlIFB1 YmxpY2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUgdmFsaWRhdGlvbiBpcyBjaGVhcAorCQkJICog ZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJtbGVzcy4KKwkJCSAqLworCQkJbmV3Y29sdW1ucyA9 IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCisJCQkJCQkJCQkJCSAg bmV3cHVicmVsLT5jb2x1bW5zKTsKKworCQkJLyoKKwkJCSAqIENoZWNrIGlmIGFueSBvZiB0aGUg bmV3IHNldCBvZiByZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZQorCQkJICogZXhpc3RpbmcgcmVs YXRpb25zIGluIHRoZSBwdWJsaWNhdGlvbi4gQWRkaXRpb25hbGx5LCBpZiB0aGUKKwkJCSAqIHJl bGF0aW9uIGhhcyBhbiBhc3NvY2lhdGVkIFdIRVJFIGNsYXVzZSwgY2hlY2sgdGhlIFdIRVJFCisJ CQkgKiBleHByZXNzaW9ucyBhbHNvIG1hdGNoLiBTYW1lIGZvciB0aGUgY29sdW1uIGxpc3QuIERy b3AgdGhlCisJCQkgKiByZXN0LgorCQkJICovCisJCQlpZiAobmV3cmVsaWQgPT0gb2xkcmVsaWQp CisJCQl7CisJCQkJaWYgKGVxdWFsKG9sZHJlbHdoZXJlY2xhdXNlLCBuZXdwdWJyZWwtPndoZXJl Q2xhdXNlKSAmJgorCQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucykpCisJCQkJ eworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCisJ CS8qCisJCSAqIEFkZCB0aGUgbm9uLW1hdGNoZWQgcmVsYXRpb25zIHRvIGEgbGlzdCBzbyB0aGF0 IHRoZXkgY2FuIGJlCisJCSAqIGRyb3BwZWQuCisJCSAqLworCQlpZiAoIWZvdW5kKQorCQl7CisJ CQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVsSW5mbyk7CisJCQlvbGRyZWwt PndoZXJlQ2xhdXNlID0gTlVMTDsKKwkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKKwkJCW9sZHJl bC0+ZXhjZXB0ID0gZmFsc2U7CisJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3BlbihvbGRy ZWxpZCwKKwkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkqZGVscmVs cyA9IGxhcHBlbmQoKmRlbHJlbHMsIG9sZHJlbCk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBBZGQg b3IgcmVtb3ZlIHRhYmxlIG9yIHNlcXVlbmNlIHRvL2Zyb20gcHVibGljYXRpb24uCisgKi8KK3N0 YXRpYyB2b2lkCitBbHRlclB1YmxpY2F0aW9uUmVsYXRpb25zKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LCBIZWFwVHVwbGUgdHVwLAorCQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNlcXVl bmNlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCisJCQkJCQkgIGJvb2wgcHVibGlzaF9zY2hl bWEpCiB7CiAJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlMaXN0CSAgICpzZXFzID0gTklMOwogCUZv cm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QodHVwKTsKIAlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIApAQCAtMTI3MSw2ICsxMzc1 LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg SGVhcFR1cGxlIHR1cCwKIAkJcmV0dXJuOwogCiAJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QodGFi 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 CVJFTEtJTkRfU0VRVUVOQ0UpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTMxOSwxMTcgKzE0Mjgs MjQgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg 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 YWJsZXMgYW5kIHNlcXVlbmNlcyB0byBiZSBkcm9wcGVkICovCisJCWdldF9kZWxldGVfcmVscyhw dWJpZCwgcmVscywgb2xkcmVsaWRzLCAmZGVscmVscyk7CisJCWdldF9kZWxldGVfcmVscyhwdWJp ZCwgc2Vxcywgb2xkc2VxaWRzLCAmZGVscmVscyk7CiAKIAkJLyogQW5kIGRyb3AgdGhlbS4gKi8K LQkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCBkZWxyZWxzLCB0cnVlKTsKKwkJUHVibGlj YXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCBkZWxyZWxzLCB0cnVlKTsKIAogCQkvKgogCQkgKiBE b24ndCBib3RoZXIgY2FsY3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwg Y2F0Y2ggYW5kCiAJCSAqIHNraXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBk YXRlLgogCQkgKi8KIAkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIHRydWUs IHN0bXQsIFJFTEtJTkRfUkVMQVRJT04pOworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJp ZCwgc2VxcywgdHJ1ZSwgc3RtdCwgUkVMS0lORF9TRVFVRU5DRSk7CiAKIAkJQ2xvc2VSZWxhdGlv bkxpc3QoZGVscmVscyk7CiAJfQogCisJQ2xvc2VSZWxhdGlvbkxpc3Qoc2Vxcyk7CiAJQ2xvc2VS ZWxhdGlvbkxpc3QocmVscyk7CiB9CiAKQEAgLTE3MDYsOSArMTcyMiw2IEBAIEFsdGVyUHVibGlj YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJ T2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVs YXRpb25zLAogCQkJCQkJCQkgICAmZXhjZXB0dGJscywgJmV4Y2VwdHNlcXMsICZzY2hlbWFpZGxp c3QpOwogCi0JCS8qIEVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEFMVEVSIFBV QkxJQ0FUSU9OICovCi0JCUFzc2VydChleGNlcHRzZXFzID09IE5JTCk7Ci0KIAkJQ2hlY2tBbHRl clB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCiAJCWhl YXBfZnJlZXR1cGxlKHR1cCk7CkBAIC0xNzMxLDggKzE3NDQsOCBAQCBBbHRlclB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkg ICBzdG10LT5wdWJuYW1lKSk7CiAKIAkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25z LCBleGNlcHR0YmxzKTsKLQkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAsIHJlbGF0 aW9ucywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5J TCk7CisJCUFsdGVyUHVibGljYXRpb25SZWxhdGlvbnMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIGV4 Y2VwdHNlcXMsCisJCQkJCQkJCSAgcHN0YXRlLT5wX3NvdXJjZXRleHQsIHNjaGVtYWlkbGlzdCAh PSBOSUwpOwogCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlz dCk7CiAJCUFsdGVyUHVibGljYXRpb25BbGxGbGFncyhzdG10LCByZWwsIHR1cCk7CiAJfQpAQCAt MjA5MCw3ICsyMTAzLDcgQEAgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0 ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiAgKiBSZW1vdmUgbGlzdGVkIHRhYmxlcyBmcm9t IHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLVB1YmxpY2F0aW9uRHJvcFRhYmxl cyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKK1B1YmxpY2F0aW9uRHJv cFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlP YmplY3RBZGRyZXNzIG9iajsKIAlMaXN0Q2VsbCAgICpsYzsKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpp bmRleCAxMmQyNzZjYmI2NS4uYWFmMDNlM2E5NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAg LTIzNTEsNiArMjM1MSwyMCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwK IAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsK IAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYm ICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExFVEVfV0lUSCgiKSIpOworCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxM IiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5D RSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBT RVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVf V0lUSCgiKCBTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIp KQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJF WENFUFQiLCAiKCIsICJTRVFVRU5DRSIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENF UFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNoQW55TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcs JykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVl bmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIiwg TWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgo IikiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiQUREfERST1B8U0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVf V0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5E IG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaAppbmRleCA0OWMyOWE4NzYzMC4uZThlNmJhYTZjNDAgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE3OCw3ICsxNzgsOCBAQCB0eXBlZGVmIGVudW0gUHVibGlj YXRpb25QYXJ0T3B0CiBleHRlcm4gTGlzdCAqR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9u cyhPaWQgcHViaWQsCiAJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQp OwogZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LAotCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKKwkJCQkJCQkJ CQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJIGNoYXIgcHVi cmVsa2luZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwog ZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2No ZW1hcyhPaWQgcHViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dAppbmRleCAxNWMzMGZmZWVmYy4uMjZiMmY1N2ZkNGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC01NjIsMTYgKzU2MiwzMiBAQCBJbmNsdWRlZCBpbiBw dWJsaWNhdGlvbnM6CiBFeGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uczoKICAgICAicmVncmVzc19w dWJfZm9yYWxsc2VxdWVuY2VzMyIKIAorLS0gTW9kaWZ5IHRoZSBzZXF1ZW5jZSBsaXN0IGluIHRo ZSBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1 ZW5jZXMzIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19wdWJfc2Vx MCk7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiByZWdyZXNzX3B1 Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgc2VxdWVuY2Vz OgorICAgICJwdWJsaWMucmVncmVzc19wdWJfc2VxMCIKKwogUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIC0tIGZhaWwgLSBzZXF1ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0 YWJsZSBsaXN0CiBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2Vz NCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOwogRVJST1I6 ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3NfcHViX3NlcTAiIGluIHRoZSBwdWJsaWNh dGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5v dCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNlcy4KK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3B1 Yl9zZXEwKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEw IiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlCitERVRBSUw6ICBUaGlz IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBzZXF1ZW5jZXMuCiAtLSBmYWlsIC0gdGFi bGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFRB QkxFIHRhYl9zZXEoYSBpbnQpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFs bHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsK IEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy50YWJfc2VxIiBpbiB0aGUgcHVibGljYXRp b24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBu b3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9m b3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgdGFiX3Nl cSk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMudGFiX3NlcSIgaW4gdGhlIHB1Ymxp Y2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24g aXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgogLS0gVGVzdCBjb21iaW5hdGlvbiBvZiBBTEwg U0VRVUVOQ0VTIGFuZCBBTEwgVEFCTEVTIHdpdGggRVhDRVBUIGNsYXVzZQogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zv cl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRl c3RwdWJfdGJsMSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3B1Yl9z ZXEwKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCBkNDcyNTUzYzdjZC4u OTk4YWUzZTRlNGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9u LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI2MSwx NCArMjYxLDE5IEBAIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5j ZXMzIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOCiAtLSBDaGVjayB0aGF0IHRoZSBz ZXF1ZW5jZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJlIGl0IGlzIGxp c3RlZAogLS0gaW4gdGhlIEVYQ0VQVCBjbGF1c2UKIFxkKyByZWdyZXNzX3B1Yl9zZXEwCistLSBN b2RpZnkgdGhlIHNlcXVlbmNlIGxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJ Q0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhD RVBUIChTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFs bHNlcXVlbmNlczMKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAKIC0tIGZhaWwgLSBzZXF1 ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CiBDUkVBVEUgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19w dWJfZm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3Nf cHViX3NlcTApOwogCiAtLSBmYWlsIC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENF UFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMg RVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJf c2VxKTsKIAogLS0gVGVzdCBjb21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwgVEFC TEVTIHdpdGggRVhDRVBUIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OwotLSAKMi4zNC4xCgo= --00000000000002ae240652b2362e--