Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1twcal-00G4I7-1t for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Mar 2025 07:51:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1twcai-00FcmW-3w for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Mar 2025 07:51:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1twcah-00FcmO-Ik for pgsql-hackers@lists.postgresql.org; Mon, 24 Mar 2025 07:51:23 +0000 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1twcae-000pPi-2a for pgsql-hackers@lists.postgresql.org; Mon, 24 Mar 2025 07:51:23 +0000 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-86d36e41070so1766049241.3 for ; Mon, 24 Mar 2025 00:51:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742802679; x=1743407479; 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=t3GVkK0Az9Tj9EcHdckhfY7oigT/ffFC1NrI2ZoNFnA=; b=XVoh9IBLpBVhi8kjfiVtcMiy1IzTAwfQeAHUF8HziHK+JDdaQ7RtMvVYYU33DlsXua cTlwn6OnqSvXSb4t9gER7mSGZcMDrHsVlrH3mU9E2HD3XgWMvM26f3a6KoPkJfi457hO 9iHIAbtMqHQ7NwJ3CKWfYaYgf7Qp4KxAFVvgCJke9FXshyjsL458TSo2ifAtBpBFXRZG iJpA+NShChnPY1S/2h9xmzdBovrK5x1DlJi5wd9ifJ8tSRpKpdSHm3vzMh4go2y9Ucm1 mgd4m4o6UX4HwkvFUE/PE0caIWDMw5WaCb6xzqayJXYLPsP/nrAek95+LHJqbJce3Cpr XtEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742802679; x=1743407479; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=t3GVkK0Az9Tj9EcHdckhfY7oigT/ffFC1NrI2ZoNFnA=; b=OUwHmlNZGSCoCqz/8lALtZ4VEEQtwfq+x4P/0s71TbFISFhorMiWVUMg2FBFEqYoMq cTn/R6EpVlXdDsQQoAM/4B9fQE/sO+I58p7wEcfTT4LYjxdxZ2Uw9DE1tv30BI4KADYJ l3oVO/ov6g+5C30N9PPSAgQYQOFpiRq5maLGPAaJZ6+mUTlvUz+TDhG/e5G75mdDpF6H z8QwzNm7l1IiNUgzIj5EYxZ3TPxWwtoXa0FR77mkIbSBiFxy8ObUjBcGcTCatROuD9i3 I4yFwhhYt9tM9+T7aBk5cJQcIRarJvrO/IOOt41VZbNHAGraW1SAVnbbsZMES09VLMu4 K6zA== X-Forwarded-Encrypted: i=1; AJvYcCX8jhgDvDVM3wpM151qkInoki+2jEJ5EBEGH05VcJOe0aBart+SIYUtidT9dfAzWKNqC6LiDaxFmB4H3VHN@lists.postgresql.org X-Gm-Message-State: AOJu0Yw2XXbBgI2aDxX4MG/ke8GGwBcJeWLpD0nJAmj2gBlZi4cmbtyS iwAcgD9F8NSHJAtmK+NiKneAS8fFqI4rHyrXyP4JBvWRfeikcz1b9En/Ga/ClemcaxsvRpDcqbp zCvNn9LsSKxqT9HpQXjwm0x2OqYM= X-Gm-Gg: ASbGncvnDUuFuzZ4+Gcrb+PDVmPJKExaOd3wqyqvOYEtgOOReb4hgP9xyqmybJffjbx ki/mzQAh2HgepmP6gAm1/cIV9HBb62Oxux0qcf2W7S/uvnqVsKVI8pbza9d9+KwOSDWWjLFdRq8 r34ER8esW1CEPAJmVKVb15QzY7sk7JYzVktbubf/IWunjF+nytKPT7sl4= X-Google-Smtp-Source: AGHT+IE+vKJz1RV5qTsF9CYFqdRG8WFKQAbAvdq7bL97LRdfy7w6pJPrfinKxwaHt67qSmXgNakUA7Xqc6tf8KbRmP0= X-Received: by 2002:a05:6102:a51:b0:4ba:9923:fa57 with SMTP id ada2fe7eead31-4c50d51c646mr7996201137.15.1742802679014; Mon, 24 Mar 2025 00:51:19 -0700 (PDT) MIME-Version: 1.0 References: <90dc6e9d-9348-485a-b27c-7b1637f06c2e@uni-muenster.de> In-Reply-To: From: jian he Date: Mon, 24 Mar 2025 15:50:42 +0800 X-Gm-Features: AQ5f1JqmgaRrBRsZgljwVtL2GnMicLx5hhqrokiWN_o2MFfxBcCgNZ2FRwha8ag Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: vignesh C Cc: Jim Jones , Kirill Reshke , Fujii Masao , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000099147b063111de07" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000099147b063111de07 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 21, 2025 at 2:34=E2=80=AFPM vignesh C wro= te: > > Few comments: > 1) I felt this is wrong: > diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.i= n.c > index 9a4d993e2bc..7980513a9bd 100644 > --- a/src/bin/psql/tab-complete.in.c > +++ b/src/bin/psql/tab-complete.in.c > @@ -3280,7 +3280,7 @@ match_previous_words(int pattern_id, > COMPLETE_WITH("FORMAT", "FREEZE", "DELIMITER", "NULL", > "HEADER", "QUOTE", "ESCAPE", > "FORCE_QUOTE", > "FORCE_NOT_NULL", > "FORCE_NULL", "ENCODING", "DEFAULT", > - "ON_ERROR", "LOG_VERBOSITY"); > + "ON_ERROR", "SET_TO_NULL", > "LOG_VERBOSITY"); > > as the following fails: > postgres=3D# copy t_on_error_null from stdin WITH ( set_to_null ); > ERROR: option "set_to_null" not recognized > LINE 1: copy t_on_error_null from stdin WITH ( set_to_null ); > - COMPLETE_WITH("stop", "ignore"); + COMPLETE_WITH("stop", "ignore", "set_to_null"); yech. I think I fixed this. > 2) Can you limit this to 80 chars if possible to improve the readability: > + stop means fail the command, > + ignore means discard the input row and > continue with the next one, and > + set_to_null means replace columns containing > invalid input values with > + NULL and move to the next field. > > 3) similarly here too: > + For ignore option, > + a NOTICE message containing the ignored row cou= nt is > + emitted at the end of the COPY FROM if at > least one row was discarded. > + For set_to_null option, > + a NOTICE message indicating the number of > rows where invalid input values were replaced with > + null is emitted at the end of the COPY FROM > if at least one row was replaced. > sure. > 4) Could you mention a brief one line in the commit message as to why > "on_error null" cannot be used: > Extent "on_error action", introduce new option: on_error set_to_null. > Current grammar makes us unable to use "on_error null", so we choose > "on_error set_to_null". by the following changes, we can change to (on_error null). --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -3579,6 +3579,7 @@ copy_generic_opt_elem: copy_generic_opt_arg: opt_boolean_or_string { $$ =3D (Node *) makeString($1); } + | NULL_P { $$ =3D (Node *) makeString("null"); } | NumericOnly { $$ =3D (Node *) $1; } | '*' { $$ =3D (Node *) makeNode(A_Star); } | DEFAULT { $$ =3D (Node *) makeString("default"); } COPY x from stdin (format null); ERROR: syntax error at or near "null" LINE 1: COPY x from stdin (format null); ^ will become COPY x from stdin (format null); ERROR: COPY format "null" not recognized LINE 1: COPY x from stdin (format null); ^ it will cause NULL_P from reserved word to non-reserved word in the COPY related command. I am not sure this is what we want. Anyway, I attached both two version (ON_ERROR SET_TO_NULL) (ON_ERROR NULL). --00000000000099147b063111de07 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0001-COPY-on_error-set_to_null.patch" Content-Disposition: attachment; filename="v14-0001-COPY-on_error-set_to_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8mrhigf0 RnJvbSA3YTZiN2VkZjA4NzdiZDljNWJiMjYyOTg4OGQzZDljMjk2MThjYTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjQgTWFyIDIwMjUgMTU6MTQ6MTcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAxLzFdIENPUFkgKG9uX2Vycm9yIHNldF90b19udWxsKQoKRXh0ZW50ICJvbl9lcnJvciBhY3Rp b24iLCBpbnRyb2R1Y2UgbmV3IG9wdGlvbjogIG9uX2Vycm9yIHNldF90b19udWxsLgoKQ3VycmVu dCBncmFtbWFyIG1ha2VzIHVzIHVuYWJsZSB0byB1c2UgIm9uX2Vycm9yIG51bGwiLiBpZiB3ZSBk aWQgaXQsIHRoZW4gaW4KYWxsIHRoZSBDT1BZIGNvbW1hbmQgb3B0aW9ucydzIHZhbHVlLCBudWxs IHdpbGwgYmVjb21lbiByZXNlcnZlZCB0byBub24tcmVzZXJ2ZWQKd29yZC4gIHNvIHdlIGNob29z ZSAib25fZXJyb3Igc2V0X3RvX251bGwiLgoKQW55IGRhdGEgdHlwZSBjb252ZXJzaW9uIGVycm9y cyBkdXJpbmcgdGhlIENPUFkgRlJPTSBwcm9jZXNzIHdpbGwgcmVzdWx0IGluIHRoZQphZmZlY3Rl ZCBjb2x1bW4gYmVpbmcgc2V0IHRvIE5VTEwuIFRoaXMgb25seSBhcHBsaWVzIHdoZW4gdXNpbmcg dGhlIG5vbi1iaW5hcnkKZm9ybWF0IGZvciBDT1BZIEZST00uCgpIb3dldmVyLCB0aGUgbm90LW51 bGwgY29uc3RyYWludCB3aWxsIHN0aWxsIGJlIGVuZm9yY2VkLgpJZiBhIGNvbHVtbiBoYXZlIG5v dC1udWxsIGNvbnN0cmFpbnQsIHN1Y2Nlc3NmdWwgKG9uX2Vycm9yIHNldF90b19udWxsKQphY3Rp b24gd2lsbCBjYXVzZSBub3QtbnVsbCBjb25zdHJhaW50IHZpb2xhdGlvbi4KVGhpcyBhbHNvIGFw cGx5IHRvIGNvbHVtbiB0eXBlIGlzIGRvbWFpbiB3aXRoIG5vdC1udWxsIGNvbnN0cmFpbnQuCgpB IHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBkb21haW4gd2l0aCBhIG5vdC1udWxsIGNvbnN0cmFpbnQg aGFzIGJlZW4gYWRkZWQuCgpBdXRob3I6IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWls LmNvbT4KQXV0aG9yOiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgoKUmV2 aWV3ZWQtYnk6CkZ1amlpIE1hc2FvIDxtYXNhby5mdWppaUBvc3MubnR0ZGF0YS5jb20+CkppbSBK b25lcyA8amltLmpvbmVzQHVuaS1tdWVuc3Rlci5kZT4KIkRhdmlkIEcuIEpvaG5zdG9uIiA8ZGF2 aWQuZy5qb2huc3RvbkBnbWFpbC5jb20+Cll1Z28gTkFHQVRBIDxuYWdhdGFAc3Jhb3NzLmNvLmpw Pgp0b3Jpa29zaGlhIDx0b3Jpa29zaGlhQG9zcy5udHRkYXRhLmNvbT4KCmRpc2N1c3Npb246IGh0 dHBzOi8vcG9zdGdyLmVzL20vQ0FLRlF1d2F3eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1C UDNkMV9hU2ZlXytRQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNn bWwgICAgICAgICAgIHwgMzYgKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYyAgICAgICAgICB8ICA2ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20u YyAgICAgIHwgMjkgKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t cGFyc2UuYyB8IDQzICsrKysrKysrKysrKysrKysrKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAg ICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgIHwgNjAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3Fs ICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDE5OCBp bnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IGRmMDkzZGE5 N2M1Li4xOTA5YzExZWRmZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTM5NCwyMyArMzk0LDM2IEBAIENP UFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIFNwZWNpZmllcyBob3cgdG8gYmVoYXZlIHdoZW4g ZW5jb3VudGVyaW5nIGFuIGVycm9yIGNvbnZlcnRpbmcgYSBjb2x1bW4ncwogICAgICAgaW5wdXQg dmFsdWUgaW50byBpdHMgZGF0YSB0eXBlLgogICAgICAgQW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+IHZhbHVlIG9mCi0gICAgICA8bGl0 ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRoZSBjb21tYW5kLCB3aGlsZQotICAgICAg PGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5k IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLgorICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0ZXJh bD4gbWVhbnMgZmFpbCB0aGUgY29tbWFuZCwKKyAgICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJh bD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0 IG9uZSwKKyAgICAgIGFuZCA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwvbGl0ZXJhbD4gbWVhbnMgcmVw bGFjZSBjb2x1bW5zIGNvbnRhaW5pbmcgaW52YWxpZAorICAgICAgaW5wdXQgdmFsdWVzIHdpdGgg PGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gYW5kIG1vdmUgdG8gdGhlIG5leHQgZmllbGQuCiAgICAg ICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5zdG9wPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgog ICAgICA8cGFyYT4KLSAgICAgIFRoZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlvbiBp cyBhcHBsaWNhYmxlIG9ubHkgZm9yIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KKyAgICAg IFRoZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwv bGl0ZXJhbD4KKyAgICAgIG9wdGlvbnMgYXJlIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+ Q09QWSBGUk9NPC9jb21tYW5kPgogICAgICAgd2hlbiB0aGUgPGxpdGVyYWw+Rk9STUFUPC9saXRl cmFsPiBpcyA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+ LgogICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBGb3IgPGxpdGVyYWw+aWdub3JlPC9s aXRlcmFsPiBvcHRpb24sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCisgICAg ICBjb250YWluaW5nIHRoZSBpZ25vcmVkIHJvdyBjb3VudCBpcyBlbWl0dGVkIGF0IHRoZSBlbmQg b2YgdGhlIDxjb21tYW5kPkNPUFkKKyAgICAgIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9u ZSByb3cgd2FzIGRpc2NhcmRlZC4KKyAgICAgIEZvciA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwvbGl0 ZXJhbD4gb3B0aW9uLAorICAgICAgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2Ug aW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHJvd3MgCisgICAgICB3aGVyZSBpbnZhbGlkIGlucHV0 IHZhbHVlcyB3ZXJlIHJlcGxhY2VkIHdpdGggbnVsbCBpcyBlbWl0dGVkCisgICAgICBhdCB0aGUg ZW5kIG9mIHRoZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9uZSBy b3cgd2FzIHJlcGxhY2VkLgorICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgQSA8bGl0 ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaWdub3JlZCByb3cg Y291bnQgaXMKLSAgICAgIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBG Uk9NPC9jb21tYW5kPiBpZiBhdCBsZWFzdCBvbmUKLSAgICAgIHJvdyB3YXMgZGlzY2FyZGVkLiBX aGVuIDxsaXRlcmFsPkxPR19WRVJCT1NJVFk8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8KLSAg ICAgIDxsaXRlcmFsPnZlcmJvc2U8L2xpdGVyYWw+LCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJh bD4gbWVzc2FnZQorICAgICAgV2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBv cHRpb24gaXMgc2V0IHRvIDxsaXRlcmFsPnZlcmJvc2U8L2xpdGVyYWw+LAorICAgICAgZm9yIDxs aXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJh bD4gbWVzc2FnZQogICAgICAgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmlsZSBh bmQgdGhlIGNvbHVtbiBuYW1lIHdob3NlIGlucHV0Ci0gICAgICBjb252ZXJzaW9uIGhhcyBmYWls ZWQgaXMgZW1pdHRlZCBmb3IgZWFjaCBkaXNjYXJkZWQgcm93LgotICAgICAgV2hlbiBpdCBpcyBz ZXQgdG8gPGxpdGVyYWw+c2lsZW50PC9saXRlcmFsPiwgbm8gbWVzc2FnZSBpcyBlbWl0dGVkCi0g ICAgICByZWdhcmRpbmcgaWdub3JlZCByb3dzLgorICAgICAgY29udmVyc2lvbiBoYXMgZmFpbGVk IGlzIGVtaXR0ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdzsKKyAgICAgIGZvciA8bGl0ZXJhbD5z ZXRfdG9fbnVsbDwvbGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4K KyAgICAgIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmlsZSBhbmQg dGhlIGNvbHVtbiBuYW1lIHdoZXJlCisgICAgICB2YWx1ZSB3YXMgcmVwbGFjZWQgd2l0aCA8bGl0 ZXJhbD5OVUxMPC9saXRlcmFsPiBmb3IgZWFjaCBpbnB1dCBjb252ZXJzaW9uCisgICAgICBmYWls dXJlLgorICAgICAgV2hlbiBpdCBpcyBzZXQgdG8gPGxpdGVyYWw+c2lsZW50PC9saXRlcmFsPiwg bm8gbWVzc2FnZSBpcyBlbWl0dGVkIHJlZ2FyZGluZyBpbnB1dCBjb252ZXJzaW9uIGZhaWxlZCBy b3dzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpA QCAtNDU4LDcgKzQ3MSw4IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgPC9wYXJhPgog ICAgICA8cGFyYT4KICAgICAgIFRoaXMgaXMgY3VycmVudGx5IHVzZWQgaW4gPGNvbW1hbmQ+Q09Q WSBGUk9NPC9jb21tYW5kPiBjb21tYW5kIHdoZW4KLSAgICAgIDxsaXRlcmFsPk9OX0VSUk9SPC9s aXRlcmFsPiBvcHRpb24gaXMgc2V0IHRvIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4uCisgICAg ICA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5p Z25vcmU8L2xpdGVyYWw+CisgICAgICBvciA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwvbGl0ZXJhbD4u CiAgICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weS5jCmluZGV4IGNmY2E5ZDlkYzI5Li5hZmU2MDc1OGQ0MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHku YwpAQCAtNDAzLDEyICs0MDMsMTQgQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAq ZGVmLCBQYXJzZVN0YXRlICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZGVmLT5sb2NhdGlvbikpKTsKIAogCS8qCi0JICogQWxsb3cgInN0b3Ai LCBvciAiaWdub3JlIiB2YWx1ZXMuCisJICogQWxsb3cgInN0b3AiLCAiaWdub3JlIiwgInNldF90 b19udWxsIiB2YWx1ZXMuCiAJICovCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInN0b3AiKSA9 PSAwKQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9TVE9QOwogCWlmIChwZ19zdHJjYXNlY21wKHN2 YWwsICJpZ25vcmUiKSA9PSAwKQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9JR05PUkU7CisJaWYg KHBnX3N0cmNhc2VjbXAoc3ZhbCwgInNldF90b19udWxsIikgPT0gMCkKKwkJcmV0dXJuIENPUFlf T05fRVJST1JfTlVMTDsKIAogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTkxOCw3ICs5MjAsNyBAQCBQcm9jZXNzQ29weU9w dGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5B UlkgbW9kZSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQt Pm9uX2Vycm9yKQorCWlmIChvcHRzX291dC0+cmVqZWN0X2xpbWl0ICYmIG9wdHNfb3V0LT5vbl9l cnJvciAhPSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJLyotIHRyYW5zbGF0b3I6 IGZpcnN0IGFuZCBzZWNvbmQgJXMgYXJlIHRoZSBuYW1lcyBvZiBDT1BZIG9wdGlvbiwgZS5nLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggYmNmNjZmMGFkZjguLjQzYTIyN2VhZTcyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTE0NjcsMTQgKzE0NjcsMjIgQEAgQ29weUZyb20oQ29w eUZyb21TdGF0ZSBjc3RhdGUpCiAJLyogRG9uZSwgY2xlYW4gdXAgKi8KIAllcnJvcl9jb250ZXh0 X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CiAKLQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vy cm9yICE9IENPUFlfT05fRVJST1JfU1RPUCAmJgotCQljc3RhdGUtPm51bV9lcnJvcnMgPiAwICYm CisJaWYgKGNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYKIAkJY3N0YXRlLT5vcHRzLmxvZ192ZXJi b3NpdHkgPj0gQ09QWV9MT0dfVkVSQk9TSVRZX0RFRkFVTFQpCi0JCWVyZXBvcnQoTk9USUNFLAot CQkJCWVycm1zZ19wbHVyYWwoIiVsbHUgcm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUg aW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgICIlbGx1IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0 byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxv bmcpIGNzdGF0ZS0+bnVtX2Vycm9ycywKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNz dGF0ZS0+bnVtX2Vycm9ycykpOworCXsKKwkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBD T1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQllcnJtc2dfcGx1 cmFsKCIlbGx1IHJvdyB3YXMgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0 eSIsCisJCQkJCQkJCSAgIiVsbHUgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBp bmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+ bnVtX2Vycm9ycywKKwkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBjc3RhdGUtPm51bV9l cnJvcnMpKTsKKwkJZWxzZSBpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJS T1JfTlVMTCkKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQllcnJtc2dfcGx1cmFsKCJpbnZhbGlk IHZhbHVlcyBpbiAlbGx1IHJvdyB3YXMgcmVwbGFjZWQgd2l0aCBudWxsIiwKKwkJCQkJCQkJICAi aW52YWxpZCB2YWx1ZXMgaW4gJWxsdSByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBudWxsIiwKKwkJ CQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBjc3RhdGUtPm51bV9lcnJvcnMsCisJCQkJCQkJ CSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJfQogCiAJaWYg KGJpc3RhdGUgIT0gTlVMTCkKIAkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKQEAgLTE2 MjIsMTAgKzE2MzAsMTEgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWNz dGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEN1 cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05PUkUuIFdlJ2xsIGFkZCBv dGhlcgotCQkgKiBvcHRpb25zIGxhdGVyCisJCSAqIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQg Q09QWV9PTl9FUlJPUl9JR05PUkUsIENPUFlfT05fRVJST1JfTlVMTC4KKwkJICogV2UnbGwgYWRk IG90aGVyIG9wdGlvbnMgbGF0ZXIKIAkJICovCi0JCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3Ig PT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0g Q09QWV9PTl9FUlJPUl9JR05PUkUgfHwKKwkJCWNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZ X09OX0VSUk9SX05VTEwpCiAJCQljc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBm YWxzZTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b21wYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGU4 MTI4Zjg1ZTZiLi5lMmI0ZDFmN2VjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weWZyb21wYXJzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2Uu YwpAQCAtOTQ3LDYgKzk0Nyw3IEBAIENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0 ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAlpbnQJCQlmbGRjdDsKIAlpbnQJCQlm aWVsZG5vOwogCWNoYXIJICAgKnN0cmluZzsKKwlib29sCQljdXJyZW50X3Jvd19lcnJvbmVvdXMg PSBmYWxzZTsKIAogCXR1cERlc2MgPSBSZWxhdGlvbkdldERlc2NyKGNzdGF0ZS0+cmVsKTsKIAlh dHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKQEAgLTEwMjUsNiAr MTAyNiw3IEBAIENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4 cHJDb250ZXh0ICplY29udGV4dCwKIAogCQkvKgogCQkgKiBJZiBPTl9FUlJPUiBpcyBzcGVjaWZp ZWQgd2l0aCBJR05PUkUsIHNraXAgcm93cyB3aXRoIHNvZnQgZXJyb3JzCisJCSAqIElmIE9OX0VS Uk9SIGlzIHNwZWNpZmllZCB3aXRoIHNldF90b19udWxsLCB0cnkgdG8gcmVwbGFjZSB3aXRoIG51 bGwuCiAJCSAqLwogCQllbHNlIGlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlv bnNbbV0sCiAJCQkJCQkJCQkJc3RyaW5nLApAQCAtMTAzNSw5ICsxMDM3LDQ2IEBAIENvcHlGcm9t VGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4 dCwKIAkJewogCQkJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9S X1NUT1ApOwogCisJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1Jf TlVMTCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIHdlIHVzZSB0aGlzIGNvdW50IHRoZSBudW1iZXIg b2Ygcm93cyAobm90IGZpZWxkcykgdGhhdAorCQkJCSAqIHN1Y2Nlc3NmdWxseSBhcHBsaWVkIHRo ZSBvbl9lcnJvciBzZXRfdG9fbnVsbAorCQkJCSovCisJCQkJaWYgKCFjdXJyZW50X3Jvd19lcnJv bmVvdXMpCisJCQkJCWN1cnJlbnRfcm93X2Vycm9uZW91cyA9IHRydWU7CisKKwkJCQkvKgorCQkJ CSAqIHdlIG5lZWQgYW5vdGhlciBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUgc28gd2UgY2FuIGVycm9y IG91dAorCQkJCSAqIG5vdC1udWxsIHZpb2xhdGlvbiBmb3IgZG9tYWluIHdpdGggbm90LW51bGwg Y29uc3RyYWludC4KKwkJCQkqLworCQkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJl ZCA9IGZhbHNlOworCQkJCWlmIChJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0aW9uc1tt XSwKKwkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJICB0eXBpb3BhcmFtc1ttXSwKKwkJCQkJ CQkJCQkgIGF0dC0+YXR0dHlwbW9kLAorCQkJCQkJCQkJCSAgKE5vZGUgKikgY3N0YXRlLT5lc2Nv bnRleHQsCisJCQkJCQkJCQkJICAmdmFsdWVzW21dKSkKKwkJCQl7CisJCQkJCW51bGxzW21dID0g dHJ1ZTsKKwkJCQkJdmFsdWVzW21dID0gKERhdHVtKSAwOworCQkJCQlpZiAoY3N0YXRlLT5vcHRz LmxvZ192ZXJib3NpdHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCisJCQkJCQllcmVw b3J0KE5PVElDRSwKKwkJCQkJCQkJZXJybXNnKCJjb2x1bW4gXCIlc1wiIHdhcyBzZXQgdG8gbnVs bCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lICVsbHUiLAorCQkJCQkJ CQkJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUsCisJCQkJCQkJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykg Y3N0YXRlLT5jdXJfbGluZW5vKSk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQllbHNlCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX05PVF9OVUxMX1ZJT0xB VElPTiksCisJCQkJCQkJZXJybXNnKCJkb21haW4gJXMgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1 ZXMiLCBmb3JtYXRfdHlwZV9iZSh0eXBpb3BhcmFtc1ttXSkpLAorCQkJCQkJCWVycmRhdGF0eXBl KHR5cGlvcGFyYW1zW21dKSk7CisJCQl9CiAJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKIAotCQkJ aWYgKGNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID09IENPUFlfTE9HX1ZFUkJPU0lUWV9WRVJC T1NFKQorCQkJaWYgKGNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID09IENPUFlfTE9HX1ZFUkJP U0lUWV9WRVJCT1NFICYmCisJCQkJY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJS T1JfSUdOT1JFKQogCQkJewogCQkJCS8qCiAJCQkJICogU2luY2Ugd2UgZW1pdCBsaW5lIG51bWJl ciBhbmQgY29sdW1uIGluZm8gaW4gdGhlIGJlbG93CkBAIC0xMDc2LDYgKzExMTUsOCBAQCBDb3B5 RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAqZWNv bnRleHQsCiAJCWNzdGF0ZS0+Y3VyX2F0dHZhbCA9IE5VTEw7CiAJfQogCisJaWYgKGN1cnJlbnRf cm93X2Vycm9uZW91cykKKwkJY3N0YXRlLT5udW1fZXJyb3JzKys7CiAJQXNzZXJ0KGZpZWxkbm8g PT0gYXR0cl9jb3VudCk7CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRl eCA5ODk1MWFlZjgyYy4uYzc5YjNhZjA0OTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTMy OTEsNyArMzI5MSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCiAJ LyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKE9OX0VSUk9SICovCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueSwgIldJVEgiLCAiKCIsICJPTl9FUlJPUiIpKQotCQlDT01QTEVURV9XSVRIKCJzdG9wIiwg Imlnbm9yZSIpOworCQlDT01QTEVURV9XSVRIKCJzdG9wIiwgImlnbm9yZSIsICJzZXRfdG9fbnVs bCIpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKExPR19W RVJCT1NJVFkgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAi RlJPTXxUTyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkxPR19WRVJCT1NJVFkiKSkKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHkuaAppbmRleCAwNmRmZGZlZjcyMS4uN2ViZjRmNzg5MzMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK QEAgLTM4LDYgKzM4LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09Q WV9PTl9FUlJPUl9TVE9QID0gMCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVs dCAqLwogCUNPUFlfT05fRVJST1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLworCUNPUFlf T05fRVJST1JfTlVMTCwJCQkvKiBzZXQgZXJyb3IgZmllbGQgdG8gbnVsbCAqLwogfSBDb3B5T25F cnJvckNob2ljZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weTIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKaW5kZXggNjRl YTMzYWVhZTguLmNhYTk0YmZkNTI2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkyLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dApA QCAtODEsNiArODEsMTAgQEAgQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25f ZXJyb3IgaWdub3JlKTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMK IExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3IgaWdu b3JlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09Q WSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF90b19udWxsLCBvbl9lcnJvciBpZ25vcmUpOwor RVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucworTElORSAxOiBDT1BZIHgg ZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwsIG9uX2Vycm9yIGlnbm9yZSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZy b20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsK IEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTogQ09QWSB4 IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJiLi4u CkBAIC05Miw2ICs5NiwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgbnVs bCAneCcpOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEJJTkFSWSBtb2RlCiBDT1BZ IHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgaWdub3JlKTsKIEVSUk9SOiAg b25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkgeCBmcm9t IHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIG9u bHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCitDT1BZIHggRlJPTSBz dGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyKTsKK0VSUk9SOiAgQ09Q WSBSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIElHTk9SRQogQ09Q WSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBPTl9F UlJPUiAidW5zdXBwb3J0ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0 ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CkBAIC0xMjQsNiArMTMyLDEwIEBAIENPUFkgeCB0 byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAg Q09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KIExJTkUgMTogQ09QWSB4 IHRvIHN0ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitDT1BZIHggdG8gc3RkaW4gKG9u X2Vycm9yIHNldF90b19udWxsKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNl ZCB3aXRoIENPUFkgVE8KK0xJTkUgMTogQ09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9f bnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gKGxv Z192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIExPR19WRVJCT1NJVFkgInVu c3VwcG9ydGVkIiBub3QgcmVjb2duaXplZAogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9n X3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CkBAIC03NjksNiArNzgxLDUxIEBAIENPTlRFWFQ6ICBD T1BZIGNoZWNrX2lnbl9lcnIKIE5PVElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBl IGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDggZm9yIGNvbHVtbiAiayI6ICJhIgogQ09OVEVYVDog IENPUFkgY2hlY2tfaWduX2VycgogTk9USUNFOiAgNiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8g ZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBB UyBJTlQgTk9UIE5VTEwgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBET01BSU4gZF9pbnRfcG9z aXRpdmVfbWF5YmVfbnVsbCBBUyBJTlQgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBUQUJMRSB0 X29uX2Vycm9yX251bGwgKGEgZF9pbnRfbm90X251bGwsIGIgZF9pbnRfcG9zaXRpdmVfbWF5YmVf bnVsbCwgYyBJTlQpOworXHBzZXQgbnVsbCBOVUxMCistLWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBz ZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChv bl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2Vz IG5vdCBhbGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBs aW5lIDEsIGNvbHVtbiBhOiBudWxsIGlucHV0CistLWZhaWwsIGNvbHVtbiBhIGlzIGRvbWFpbiB3 aXRoIG5vdC1udWxsIGNvbnN0cmFpbnQKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4g V0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBkb21haW4gZF9pbnRfbm90X251 bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3Jf bnVsbCwgbGluZSAxLCBjb2x1bW4gYTogImEiCistLWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQg dG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9l cnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5v dCBhbGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5l IDEsIGNvbHVtbiBhOiAiLTEiCistLWZhaWwuIGxlc3MgZGF0YQorQ09QWSB0X29uX2Vycm9yX251 bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7 CitFUlJPUjogIG1pc3NpbmcgZGF0YSBmb3IgY29sdW1uICJjIgorQ09OVEVYVDogIENPUFkgdF9v bl9lcnJvcl9udWxsLCBsaW5lIDE6ICIxLDEiCistLWZhaWwuIGV4dHJhIGRhdGEKK0NPUFkgdF9v bl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0 X3RvX251bGwpOworRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1u CitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMTogIjEsMiwzLDQiCistLW9r CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19u dWxsLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOworTk9USUNFOiAgY29sdW1uICJiIiB3YXMgc2V0 IHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAxCitDT05U RVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGI6ICJhIgorTk9USUNF OiAgY29sdW1uICJjIiB3YXMgc2V0IHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGli aWxpdHkgYXQgbGluZSAxCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwg Y29sdW1uIGM6ICJkIgorTk9USUNFOiAgY29sdW1uICJiIiB3YXMgc2V0IHRvIG51bGwgZHVlIHRv IGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAyCitDT05URVhUOiAgQ09QWSB0X29u X2Vycm9yX251bGwsIGxpbmUgMiwgY29sdW1uIGI6ICJiIgorTk9USUNFOiAgY29sdW1uICJjIiB3 YXMgc2V0IHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAz CitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMywgY29sdW1uIGM6ICJlIgor Tk9USUNFOiAgaW52YWxpZCB2YWx1ZXMgaW4gMyByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBudWxs CistLSBjaGVjayBpbnNlcnRlZCBjb250ZW50CitzZWxlY3QgKiBmcm9tIHRfb25fZXJyb3JfbnVs bDsKKyBhICB8ICBiICAgfCAgYyAgIAorLS0tLSstLS0tLS0rLS0tLS0tCisgMTAgfCBOVUxMIHwg TlVMTAorIDExIHwgTlVMTCB8ICAgMTIKKyAxMyB8ICAgMTQgfCBOVUxMCisoMyByb3dzKQorCitc cHNldCBudWxsICcnCiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Igb3B0aW9uIHdpdGggbG9nX3ZlcmJv c2l0eSBhbmQgbnVsbCBjb25zdHJhaW50IHZpYSBkb21haW4KIENSRUFURSBET01BSU4gZGNoZWNr X2lnbl9lcnIyIHZhcmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JFQVRFIFRBQkxFIGNoZWNrX2lnbl9l cnIyIChuIGludCwgbSBpbnRbXSwgayBpbnQsIGwgZGNoZWNrX2lnbl9lcnIyKTsKQEAgLTgyOCw2 ICs4ODUsOSBAQCBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXc7CiBEUk9QIFZJ RVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXdfMjsKIERST1AgRlVOQ1RJT04gZnVuX2luc3Rl YWRfb2ZfaW5zZXJ0X3RibCgpOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyOworRFJPUCBUQUJM RSB0X29uX2Vycm9yX251bGw7CitEUk9QIERPTUFJTiBkX2ludF9ub3RfbnVsbDsKK0RST1AgRE9N QUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGw7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnIy OwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJPUCBUQUJMRSBoYXJkX2VycjsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkyLnNxbAppbmRleCA0NTI3MzU1N2NlMC4uMDAzYTkxNjQ4ZTIgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5Mi5zcWwKQEAgLTY3LDEyICs2NywxNSBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9y Y2VfbnVsbCAoYSksIGZvcmNlX251bGwgKGIpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChjb252ZXJ0 X3NlbGVjdGl2ZWx5IChhKSwgY29udmVydF9zZWxlY3RpdmVseSAoYikpOwogQ09QWSB4IGZyb20g c3RkaW4gKGVuY29kaW5nICdzcWxfYXNjaWknLCBlbmNvZGluZyAnc3FsX2FzY2lpJyk7CiBDT1BZ IHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4 IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF90b19udWxsLCBvbl9lcnJvciBpZ25vcmUpOwogQ09Q WSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJi b3NlKTsKIAogLS0gaW5jb3JyZWN0IG9wdGlvbnMKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQg QklOQVJZLCBkZWxpbWl0ZXIgJywnKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZ LCBudWxsICd4Jyk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Ig aWdub3JlKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBzZXRf dG9fbnVsbCk7CitDT1BZIHggRlJPTSBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVj dF9saW1pdCAyKTsKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBD T1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX3F1b3RlKGEpKTsKIENPUFkgeCBm cm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfcXVvdGUgKik7CkBAIC04Nyw2ICs5MCw3IEBA IENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfbnVsbCAqKTsKIENPUFkgeCB0 byBzdGRvdXQgKGZvcm1hdCBDU1YsIGZvcmNlX251bGwoYSkpOwogQ09QWSB4IHRvIHN0ZG91dCAo Zm9ybWF0IENTViwgZm9yY2VfbnVsbCAqKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5B UlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKK0NPUFkgeCB0byBzdGRpbiAob25fZXJyb3Igc2V0 X3RvX251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQp OwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEpOwogQ09QWSB4IGZyb20g c3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7CkBAIC01MzQsNiAr NTM4LDQ1IEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAKK0NSRUFURSBET01BSU4gZF9pbnRfbm90 X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRf aW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUg VEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRfaW50X3Bvc2l0aXZl X21heWJlX251bGwsIGMgSU5UKTsKKworXHBzZXQgbnVsbCBOVUxMCistLWZhaWwsIGNvbHVtbiBh IGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJ TiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitcTgkxMQkxMworXC4KKworLS1mYWlsLCBj b2x1bW4gYSBpcyBkb21haW4gd2l0aCBub3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJy b3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKK2EJMTEJMTQK K1wuCisKKy0tZmFpbCwgY29sdW1uIGEgY2Fubm90IHNldCB0byBudWxsIHZhbHVlCitDT1BZIHRf b25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKKy0x CTExCTEzCitcLgorCistLWZhaWwuIGxlc3MgZGF0YQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJP TSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7CisxLDEK K1wuCistLWZhaWwuIGV4dHJhIGRhdGEKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4g V0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X3RvX251bGwpOworMSwyLDMsNAorXC4K KworLS1vaworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBz ZXRfdG9fbnVsbCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKKzEwCWEJZAorMTEJYgkxMgorMTMJ MTQJZQorXC4KKworLS0gY2hlY2sgaW5zZXJ0ZWQgY29udGVudAorc2VsZWN0ICogZnJvbSB0X29u X2Vycm9yX251bGw7CitccHNldCBudWxsICcnCiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Igb3B0aW9u IHdpdGggbG9nX3ZlcmJvc2l0eSBhbmQgbnVsbCBjb25zdHJhaW50IHZpYSBkb21haW4KIENSRUFU RSBET01BSU4gZGNoZWNrX2lnbl9lcnIyIHZhcmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JFQVRFIFRB QkxFIGNoZWNrX2lnbl9lcnIyIChuIGludCwgbSBpbnRbXSwgayBpbnQsIGwgZGNoZWNrX2lnbl9l cnIyKTsKQEAgLTYwMyw2ICs2NDYsOSBAQCBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJs X3ZpZXc7CiBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXdfMjsKIERST1AgRlVO Q1RJT04gZnVuX2luc3RlYWRfb2ZfaW5zZXJ0X3RibCgpOwogRFJPUCBUQUJMRSBjaGVja19pZ25f ZXJyOworRFJPUCBUQUJMRSB0X29uX2Vycm9yX251bGw7CitEUk9QIERPTUFJTiBkX2ludF9ub3Rf bnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGw7CiBEUk9QIFRBQkxF IGNoZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJPUCBUQUJM RSBoYXJkX2VycjsKLS0gCjIuMzQuMQoK --00000000000099147b063111de07 Content-Type: application/octet-stream; name="v14-0001-COPY-on_error-null.nocfbot" Content-Disposition: attachment; filename="v14-0001-COPY-on_error-null.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8mri1lp1 RnJvbSBiNDE4OTNjMDVjNjUyNTQyZTAyYWQ5ZDkwZDU0YjNkN2MzODg2ZThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjQgTWFyIDIwMjUgMTQ6NTU6MDkgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAxLzFdIENPUFkgKG9uX2Vycm9yIG51bGwpCgpFeHRlbnQgIm9uX2Vycm9yIGFjdGlvbiIsIGlu dHJvZHVjZSBuZXcgb3B0aW9uOiAgb25fZXJyb3IgbnVsbC4KCkFueSBkYXRhIHR5cGUgY29udmVy c2lvbiBlcnJvcnMgZHVyaW5nIHRoZSBDT1BZIEZST00gcHJvY2VzcyB3aWxsIHJlc3VsdCBpbiB0 aGUKYWZmZWN0ZWQgY29sdW1uIGJlaW5nIHNldCB0byBOVUxMLiBUaGlzIG9ubHkgYXBwbGllcyB3 aGVuIHVzaW5nIHRoZSBub24tYmluYXJ5CmZvcm1hdCBmb3IgQ09QWSBGUk9NLgoKSG93ZXZlciwg dGhlIG5vdC1udWxsIGNvbnN0cmFpbnQgd2lsbCBzdGlsbCBiZSBlbmZvcmNlZC4KSWYgYSBjb2x1 bW4gaGF2ZSBub3QtbnVsbCBjb25zdHJhaW50LCBzdWNjZXNzZnVsIChvbl9lcnJvciBudWxsKQph Y3Rpb24gd2lsbCBjYXVzZSBub3QtbnVsbCBjb25zdHJhaW50IHZpb2xhdGlvbi4KVGhpcyBhbHNv IGFwcGx5IHRvIGNvbHVtbiB0eXBlIGlzIGRvbWFpbiB3aXRoIG5vdC1udWxsIGNvbnN0cmFpbnQu CgpBIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBkb21haW4gd2l0aCBhIG5vdC1udWxsIGNvbnN0cmFp bnQgaGFzIGJlZW4gYWRkZWQuCgpBdXRob3I6IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdt YWlsLmNvbT4KQXV0aG9yOiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgoK UmV2aWV3ZWQtYnk6CkZ1amlpIE1hc2FvIDxtYXNhby5mdWppaUBvc3MubnR0ZGF0YS5jb20+Ckpp bSBKb25lcyA8amltLmpvbmVzQHVuaS1tdWVuc3Rlci5kZT4KIkRhdmlkIEcuIEpvaG5zdG9uIiA8 ZGF2aWQuZy5qb2huc3RvbkBnbWFpbC5jb20+Cll1Z28gTkFHQVRBIDxuYWdhdGFAc3Jhb3NzLmNv LmpwPgp0b3Jpa29zaGlhIDx0b3Jpa29zaGlhQG9zcy5udHRkYXRhLmNvbT4KCmRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FLRlF1d2F3eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2 Zj1CUDNkMV9hU2ZlXytRQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5 LnNnbWwgICAgICAgICAgIHwgMzYgKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHkuYyAgICAgICAgICB8ICA2ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b20uYyAgICAgIHwgMjkgKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tcGFyc2UuYyB8IDQzICsrKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55ICAgICAgICAgICAgfCAgMSArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMg ICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAgIHwgIDEg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgIHwgNjAgKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsICAgICAgIHwg NDYgKysrKysrKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDE5OSBpbnNlcnRpb25z KCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IGRmMDkzZGE5N2M1Li5hYjdl MGM0NWI1MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTM5NSwyMiArMzk1LDM1IEBAIENPUFkgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8 cmVwbGFjZWFibGUKICAgICAgIGlucHV0IHZhbHVlIGludG8gaXRzIGRhdGEgdHlwZS4KICAgICAg IEFuIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2Vh YmxlPiB2YWx1ZSBvZgogICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4gbWVhbnMgZmFpbCB0 aGUgY29tbWFuZCwgd2hpbGUKLSAgICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMg ZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZS4KKyAg ICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93 IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSwKKyAgICAgIGFuZCA8bGl0ZXJhbD5udWxs PC9saXRlcmFsPiBtZWFucyByZXBsYWNlIGNvbHVtbnMgY29udGFpbmluZworICAgICAgaW52YWxp ZCBpbnB1dCB2YWx1ZXMgd2l0aCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBhbmQgbW92ZSB0byB0 aGUgbmV4dCBmaWVsZC4KICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnN0b3A8L2xpdGVy YWw+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhlIDxsaXRlcmFsPmlnbm9y ZTwvbGl0ZXJhbD4gb3B0aW9uIGlzIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBG Uk9NPC9jb21tYW5kPgorICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gYW5kIDxs aXRlcmFsPm51bGw8L2xpdGVyYWw+CisgICAgICBvcHRpb25zIGFyZSBhcHBsaWNhYmxlIG9ubHkg Zm9yIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KICAgICAgIHdoZW4gdGhlIDxsaXRlcmFs PkZPUk1BVDwvbGl0ZXJhbD4gaXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ Y3N2PC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIEEgPGxpdGVy YWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGlnbm9yZWQgcm93IGNv dW50IGlzCi0gICAgICBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgdGhlIDxjb21tYW5kPkNPUFkgRlJP TTwvY29tbWFuZD4gaWYgYXQgbGVhc3Qgb25lCi0gICAgICByb3cgd2FzIGRpc2NhcmRlZC4gV2hl biA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBvcHRpb24gaXMgc2V0IHRvCi0gICAg ICA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+ IG1lc3NhZ2UKLSAgICAgIGNvbnRhaW5pbmcgdGhlIGxpbmUgb2YgdGhlIGlucHV0IGZpbGUgYW5k IHRoZSBjb2x1bW4gbmFtZSB3aG9zZSBpbnB1dAotICAgICAgY29udmVyc2lvbiBoYXMgZmFpbGVk IGlzIGVtaXR0ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdy4KLSAgICAgIFdoZW4gaXQgaXMgc2V0 IHRvIDxsaXRlcmFsPnNpbGVudDwvbGl0ZXJhbD4sIG5vIG1lc3NhZ2UgaXMgZW1pdHRlZAotICAg ICAgcmVnYXJkaW5nIGlnbm9yZWQgcm93cy4KKyAgICAgIEZvciA8bGl0ZXJhbD5pZ25vcmU8L2xp dGVyYWw+IG9wdGlvbiwKKyAgICAgIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdl IGNvbnRhaW5pbmcgdGhlIGlnbm9yZWQgcm93IGNvdW50IGlzCisgICAgICBlbWl0dGVkIGF0IHRo ZSBlbmQgb2YgdGhlIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gaWYgYXQgbGVhc3Qgb25l IHJvdyB3YXMgZGlzY2FyZGVkLgorICAgICAgRm9yIDxsaXRlcmFsPm51bGw8L2xpdGVyYWw+IG9w dGlvbiwKKyAgICAgIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGluZGljYXRp bmcgdGhlIG51bWJlciBvZiByb3dzCisgICAgICB3aGVyZSBpbnZhbGlkIGlucHV0IHZhbHVlcyB3 ZXJlIHJlcGxhY2VkIHdpdGggbnVsbCBpcyBlbWl0dGVkIGF0CisgICAgICB0aGUgZW5kIG9mIHRo ZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9uZSByb3cgd2FzIHJl cGxhY2VkLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hlbiA8bGl0ZXJhbD5M T0dfVkVSQk9TSVRZPC9saXRlcmFsPiBvcHRpb24gaXMgc2V0IHRvCisgICAgICA8bGl0ZXJhbD52 ZXJib3NlPC9saXRlcmFsPiwgZm9yIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gb3B0aW9uLCBh CisgICAgICA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UgY29udGFpbmluZyB0aGUg bGluZSBvZiB0aGUgaW5wdXQgZmlsZQorICAgICAgYW5kIHRoZSBjb2x1bW4gbmFtZSB3aG9zZSBp bnB1dCBjb252ZXJzaW9uIGhhcyBmYWlsZWQgaXMgZW1pdHRlZCBmb3IgZWFjaAorICAgICAgZGlz Y2FyZGVkIHJvdzsKKyAgICAgIGZvciA8bGl0ZXJhbD5udWxsPC9saXRlcmFsPiBvcHRpb24sIGEg PGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCisgICAgICBjb250YWluaW5nIHRoZSBs aW5lIG9mIHRoZSBpbnB1dCBmaWxlIGFuZCB0aGUgY29sdW1uIG5hbWUgd2hlcmUgdmFsdWUKKyAg ICAgIHdhcyByZXBsYWNlZCB3aXRoIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGZvciBlYWNoIGlu cHV0IGNvbnZlcnNpb24gZmFpbHVyZS4KKyAgICAgIFdoZW4gaXQgaXMgc2V0IHRvIDxsaXRlcmFs PnNpbGVudDwvbGl0ZXJhbD4sIG5vIG1lc3NhZ2UgaXMgZW1pdHRlZCByZWdhcmRpbmcgaW5wdXQg Y29udmVyc2lvbiBmYWlsZWQgcm93cy4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTQ1OCw3ICs0NzEsOCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGlzIGN1cnJlbnRseSB1 c2VkIGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29tbWFuZCB3aGVuCi0gICAgICA8 bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5pZ25v cmU8L2xpdGVyYWw+LgorICAgICAgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+IG9wdGlvbiBp cyBzZXQgdG8gPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+bnVs bDwvbGl0ZXJhbD4uCiAgICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IGNmY2E5ZDlkYzI5Li5hNDUyYWQxMTg4OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYwpAQCAtNDAzLDEyICs0MDMsMTQgQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9p Y2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRlICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmLT5sb2NhdGlvbikpKTsKIAogCS8qCi0JICog QWxsb3cgInN0b3AiLCBvciAiaWdub3JlIiB2YWx1ZXMuCisJICogQWxsb3cgInN0b3AiLCAiaWdu b3JlIiwgIm51bGwiIHZhbHVlcy4KIAkgKi8KIAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAic3Rv cCIpID09IDApCiAJCXJldHVybiBDT1BZX09OX0VSUk9SX1NUT1A7CiAJaWYgKHBnX3N0cmNhc2Vj bXAoc3ZhbCwgImlnbm9yZSIpID09IDApCiAJCXJldHVybiBDT1BZX09OX0VSUk9SX0lHTk9SRTsK KwlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAibnVsbCIpID09IDApCisJCXJldHVybiBDT1BZX09O X0VSUk9SX05VTEw7CiAKIAllcmVwb3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC05MTgsNyArOTIwLDcgQEAgUHJvY2Vzc0NvcHlPcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCiAJCQkJIGVycm1zZygib25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZ IG1vZGUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5yZWplY3RfbGltaXQgJiYgIW9wdHNfb3V0LT5v bl9lcnJvcikKKwlpZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiBvcHRzX291dC0+b25fZXJy b3IgIT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCS8qLSB0cmFuc2xhdG9yOiBm aXJzdCBhbmQgc2Vjb25kICVzIGFyZSB0aGUgbmFtZXMgb2YgQ09QWSBvcHRpb24sIGUuZy4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IGJjZjY2ZjBhZGY4Li40M2EyMjdlYWU3MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xNDY3LDE0ICsxNDY3LDIyIEBAIENvcHlGcm9tKENvcHlG cm9tU3RhdGUgY3N0YXRlKQogCS8qIERvbmUsIGNsZWFuIHVwICovCiAJZXJyb3JfY29udGV4dF9z dGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwogCi0JaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJv ciAhPSBDT1BZX09OX0VSUk9SX1NUT1AgJiYKLQkJY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgor CWlmIChjc3RhdGUtPm51bV9lcnJvcnMgPiAwICYmCiAJCWNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9z aXR5ID49IENPUFlfTE9HX1ZFUkJPU0lUWV9ERUZBVUxUKQotCQllcmVwb3J0KE5PVElDRSwKLQkJ CQllcnJtc2dfcGx1cmFsKCIlbGx1IHJvdyB3YXMgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSIsCi0JCQkJCQkJICAiJWxsdSByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8g ZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCi0JCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25n KSBjc3RhdGUtPm51bV9lcnJvcnMsCi0JCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBjc3Rh dGUtPm51bV9lcnJvcnMpKTsKKwl7CisJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09Q WV9PTl9FUlJPUl9JR05PUkUpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJh bCgiJWxsdSByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHki LAorCQkJCQkJCQkgICIlbGx1IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5j b21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBjc3RhdGUtPm51 bV9lcnJvcnMsCisJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5udW1fZXJy b3JzKSk7CisJCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9S X05VTEwpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgiaW52YWxpZCB2 YWx1ZXMgaW4gJWxsdSByb3cgd2FzIHJlcGxhY2VkIHdpdGggbnVsbCIsCisJCQkJCQkJCSAgImlu dmFsaWQgdmFsdWVzIGluICVsbHUgcm93cyB3ZXJlIHJlcGxhY2VkIHdpdGggbnVsbCIsCisJCQkJ CQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQkg ICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+bnVtX2Vycm9ycykpOworCX0KIAogCWlmIChi aXN0YXRlICE9IE5VTEwpCiAJCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlzdGF0ZSk7CkBAIC0xNjIy LDEwICsxNjMwLDExIEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQljc3Rh dGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBDdXJy ZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLiBXZSdsbCBhZGQgb3Ro ZXIKLQkJICogb3B0aW9ucyBsYXRlcgorCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENP UFlfT05fRVJST1JfSUdOT1JFLCBDT1BZX09OX0VSUk9SX05VTEwuCisJCSAqIFdlJ2xsIGFkZCBv dGhlciBvcHRpb25zIGxhdGVyCiAJCSAqLwotCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09 IENPUFlfT05fRVJST1JfSUdOT1JFKQorCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENP UFlfT05fRVJST1JfSUdOT1JFIHx8CisJCQljc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9P Tl9FUlJPUl9OVUxMKQogCQkJY3N0YXRlLT5lc2NvbnRleHQtPmRldGFpbHNfd2FudGVkID0gZmFs c2U7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t cGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBlODEy OGY4NWU2Yi4uMjg4YzYwYWJmOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMK QEAgLTk0Nyw2ICs5NDcsNyBAQCBDb3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUg Y3N0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJaW50CQkJZmxkY3Q7CiAJaW50CQkJZmll bGRubzsKIAljaGFyCSAgICpzdHJpbmc7CisJYm9vbAkJY3VycmVudF9yb3dfZXJyb25lb3VzID0g ZmFsc2U7CiAKIAl0dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihjc3RhdGUtPnJlbCk7CiAJYXR0 cl9jb3VudCA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7CkBAIC0xMDI1LDYgKzEw MjYsNyBAQCBDb3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHBy Q29udGV4dCAqZWNvbnRleHQsCiAKIAkJLyoKIAkJICogSWYgT05fRVJST1IgaXMgc3BlY2lmaWVk IHdpdGggSUdOT1JFLCBza2lwIHJvd3Mgd2l0aCBzb2Z0IGVycm9ycworCQkgKiBJZiBPTl9FUlJP UiBpcyBzcGVjaWZpZWQgd2l0aCBOVUxMLCB0cnkgdG8gcmVwbGFjZSB3aXRoIG51bGwuCiAJCSAq LwogCQllbHNlIGlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0sCiAJ CQkJCQkJCQkJc3RyaW5nLApAQCAtMTAzNSw5ICsxMDM3LDQ2IEBAIENvcHlGcm9tVGV4dExpa2VP bmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJewog CQkJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX1NUT1ApOwog CisJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfTlVMTCkKKwkJ CXsKKwkJCQkvKgorCQkJCSAqIHdlIHVzZSB0aGlzIGNvdW50IHRoZSBudW1iZXIgb2Ygcm93cyAo bm90IGZpZWxkcykgdGhhdAorCQkJCSAqIHN1Y2Nlc3NmdWxseSBhcHBsaWVkIHRoZSAob25fZXJy b3IgbnVsbCkKKwkJCQkqLworCQkJCWlmICghY3VycmVudF9yb3dfZXJyb25lb3VzKQorCQkJCQlj dXJyZW50X3Jvd19lcnJvbmVvdXMgPSB0cnVlOworCisJCQkJLyoKKwkJCQkgKiB3ZSBuZWVkIGFu b3RoZXIgSW5wdXRGdW5jdGlvbkNhbGxTYWZlIHNvIHdlIGNhbiBlcnJvciBvdXQKKwkJCQkgKiBu b3QtbnVsbCB2aW9sYXRpb24gZm9yIGRvbWFpbiB3aXRoIG5vdC1udWxsIGNvbnN0cmFpbnQuCisJ CQkJKi8KKwkJCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKwkJ CQlpZiAoSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0sCisJCQkJCQkJCQkJ ICBOVUxMLAorCQkJCQkJCQkJCSAgdHlwaW9wYXJhbXNbbV0sCisJCQkJCQkJCQkJICBhdHQtPmF0 dHR5cG1vZCwKKwkJCQkJCQkJCQkgIChOb2RlICopIGNzdGF0ZS0+ZXNjb250ZXh0LAorCQkJCQkJ CQkJCSAgJnZhbHVlc1ttXSkpCisJCQkJeworCQkJCQludWxsc1ttXSA9IHRydWU7CisJCQkJCXZh bHVlc1ttXSA9IChEYXR1bSkgMDsKKwkJCQkJaWYgKGNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5 ID09IENPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFKQorCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJ CQkJCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiB3YXMgc2V0IHRvIG51bGwgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAlbGx1IiwKKwkJCQkJCQkJCQljc3RhdGUtPmN1 cl9hdHRuYW1lLAorCQkJCQkJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+Y3VyX2xp bmVubykpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9OT1RfTlVMTF9WSU9MQVRJT04pLAorCQkJCQkJ CWVycm1zZygiZG9tYWluICVzIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzIiwgZm9ybWF0X3R5 cGVfYmUodHlwaW9wYXJhbXNbbV0pKSwKKwkJCQkJCQllcnJkYXRhdHlwZSh0eXBpb3BhcmFtc1tt XSkpOworCQkJfQogCQkJY3N0YXRlLT5udW1fZXJyb3JzKys7CiAKLQkJCWlmIChjc3RhdGUtPm9w dHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkKKwkJCWlmIChj c3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSAm JgorCQkJCWNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKIAkJ CXsKIAkJCQkvKgogCQkJCSAqIFNpbmNlIHdlIGVtaXQgbGluZSBudW1iZXIgYW5kIGNvbHVtbiBp bmZvIGluIHRoZSBiZWxvdwpAQCAtMTA3Niw2ICsxMTE1LDggQEAgQ29weUZyb21UZXh0TGlrZU9u ZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAogCQljc3Rh dGUtPmN1cl9hdHR2YWwgPSBOVUxMOwogCX0KIAorCWlmIChjdXJyZW50X3Jvd19lcnJvbmVvdXMp CisJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOwogCUFzc2VydChmaWVsZG5vID09IGF0dHJfY291bnQp OwogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAyNzFhZTI2Y2JhZi4uZTc5NDczYzk5 N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtMzU3OSw2ICszNTc5LDcgQEAgY29weV9nZW5lcmljX29wdF9l bGVtOgogCiBjb3B5X2dlbmVyaWNfb3B0X2FyZzoKIAkJCW9wdF9ib29sZWFuX29yX3N0cmluZwkJ CXsgJCQgPSAoTm9kZSAqKSBtYWtlU3RyaW5nKCQxKTsgfQorCQkJfCBOVUxMX1AgCQkJCQkJeyAk JCA9IChOb2RlICopIG1ha2VTdHJpbmcoIm51bGwiKTsgfQogCQkJfCBOdW1lcmljT25seQkJCQkJ eyAkJCA9IChOb2RlICopICQxOyB9CiAJCQl8ICcqJwkJCQkJCQl7ICQkID0gKE5vZGUgKikgbWFr ZU5vZGUoQV9TdGFyKTsgfQogCQkJfCBERUZBVUxUICAgICAgICAgICAgICAgICAgICAgICB7ICQk ID0gKE5vZGUgKikgbWFrZVN0cmluZygiZGVmYXVsdCIpOyB9CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMK aW5kZXggOTg5NTFhZWY4MmMuLmIwYzdhYzgyY2E2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBA IC0zMjkxLDcgKzMyOTEsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwK IAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxlbmFtZSBXSVRIIChPTl9FUlJPUiAq LwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwg TWF0Y2hBbnksICJXSVRIIiwgIigiLCAiT05fRVJST1IiKSkKLQkJQ09NUExFVEVfV0lUSCgic3Rv cCIsICJpZ25vcmUiKTsKKwkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJpZ25vcmUiLCAibnVsbCIp OwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKExPR19WRVJC T1NJVFkgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJP TXxUTyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkxPR19WRVJCT1NJVFkiKSkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaAppbmRleCAwNmRmZGZlZjcyMS4uN2ViZjRmNzg5MzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAg LTM4LDYgKzM4LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09QWV9P Tl9FUlJPUl9TVE9QID0gMCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAq LwogCUNPUFlfT05fRVJST1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLworCUNPUFlfT05f RVJST1JfTlVMTCwJCQkvKiBzZXQgZXJyb3IgZmllbGQgdG8gbnVsbCAqLwogfSBDb3B5T25FcnJv ckNob2ljZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eTIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKaW5kZXggNjRlYTMz YWVhZTguLjE4YzgwYzIzOGExIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvcHkyLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dApAQCAt ODEsNiArODEsMTAgQEAgQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJy b3IgaWdub3JlKTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJ TkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3IgaWdub3Jl KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09QWSB4 IGZyb20gc3RkaW4gKG9uX2Vycm9yIG51bGwsIG9uX2Vycm9yIGlnbm9yZSk7CitFUlJPUjogIGNv bmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCitMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGlu IChvbl9lcnJvciBudWxsLCBvbl9lcnJvciBpZ25vcmUpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkg ZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3Ig cmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3Np dHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJiLi4uCkBAIC05Miw2ICs5NiwxMCBAQCBDT1BZ IHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgbnVsbCAneCcpOwogRVJST1I6ICBjYW5ub3Qg c3BlY2lmeSBOVUxMIGluIEJJTkFSWSBtb2RlCiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJ TkFSWSwgb25fZXJyb3IgaWdub3JlKTsKIEVSUk9SOiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFs bG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBv bl9lcnJvciBudWxsKTsKK0VSUk9SOiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4g QklOQVJZIG1vZGUKK0NPUFkgeCBGUk9NIHN0ZGluIChvbl9lcnJvciBudWxsLCByZWplY3RfbGlt aXQgMik7CitFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJl IHNldCB0byBJR05PUkUKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7 CiBFUlJPUjogIENPUFkgT05fRVJST1IgInVuc3VwcG9ydGVkIiBub3QgcmVjb2duaXplZAogTElO RSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwpAQCAtMTI0LDYg KzEzMiwxMCBAQCBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1 cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZ IFRPCiBMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVu c3VwcG9ydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor Q09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBudWxsKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBj YW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KK0xJTkUgMTogQ09QWSB4IHRvIHN0ZGluIChvbl9l cnJvciBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRp biAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgTE9HX1ZFUkJPU0lU WSAidW5zdXBwb3J0ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGlu IChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKQEAgLTc2OSw2ICs3ODEsNTEgQEAgQ09OVEVY VDogIENPUFkgY2hlY2tfaWduX2VycgogTk9USUNFOiAgc2tpcHBpbmcgcm93IGR1ZSB0byBkYXRh IHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgOCBmb3IgY29sdW1uICJrIjogImEiCiBDT05U RVhUOiAgQ09QWSBjaGVja19pZ25fZXJyCiBOT1RJQ0U6ICA2IHJvd3Mgd2VyZSBza2lwcGVkIGR1 ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CitDUkVBVEUgRE9NQUlOIGRfaW50X25vdF9u dWxsIEFTIElOVCBOT1QgTlVMTCBDSEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIERPTUFJTiBkX2lu dF9wb3NpdGl2ZV9tYXliZV9udWxsIEFTIElOVCBDSEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIFRB QkxFIHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3RfbnVsbCwgYiBkX2ludF9wb3NpdGl2ZV9t YXliZV9udWxsLCBjIElOVCk7CitccHNldCBudWxsIE5VTEwKKy0tZmFpbCwgY29sdW1uIGEgY2Fu bm90IHNldCB0byBudWxsIHZhbHVlCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIG51bGwpOworRVJST1I6ICBkb21haW4gZF9pbnRfbm90X251bGwgZG9lcyBu b3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGlu ZSAxLCBjb2x1bW4gYTogbnVsbCBpbnB1dAorLS1mYWlsLCBjb2x1bW4gYSBpcyBkb21haW4gd2l0 aCBub3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIG51bGwpOworRVJST1I6ICBkb21haW4gZF9pbnRfbm90X251bGwgZG9lcyBu b3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGlu ZSAxLCBjb2x1bW4gYTogImEiCistLWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQgdG8gbnVsbCB2 YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBudWxs KTsKK0VSUk9SOiAgZG9tYWluIGRfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFs dWVzCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGE6ICIt MSIKKy0tZmFpbC4gbGVzcyBkYXRhCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIG51bGwpOworRVJST1I6ICBtaXNzaW5nIGRhdGEg Zm9yIGNvbHVtbiAiYyIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAi MSwxIgorLS1mYWlsLiBleHRyYSBkYXRhCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElO IFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIG51bGwpOworRVJST1I6ICBleHRyYSBkYXRh IGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1uCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251 bGwsIGxpbmUgMTogIjEsMiwzLDQiCistLW9rCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNU RElOIFdJVEggKG9uX2Vycm9yIG51bGwsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CitOT1RJQ0U6 ICBjb2x1bW4gImIiIHdhcyBzZXQgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJp bGl0eSBhdCBsaW5lIDEKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxLCBj b2x1bW4gYjogImEiCitOT1RJQ0U6ICBjb2x1bW4gImMiIHdhcyBzZXQgdG8gbnVsbCBkdWUgdG8g ZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDEKK0NPTlRFWFQ6ICBDT1BZIHRfb25f ZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1bW4gYzogImQiCitOT1RJQ0U6ICBjb2x1bW4gImIiIHdh cyBzZXQgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDIK K0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAyLCBjb2x1bW4gYjogImIiCitO T1RJQ0U6ICBjb2x1bW4gImMiIHdhcyBzZXQgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29t cGF0aWJpbGl0eSBhdCBsaW5lIDMKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGlu ZSAzLCBjb2x1bW4gYzogImUiCitOT1RJQ0U6ICBpbnZhbGlkIHZhbHVlcyBpbiAzIHJvd3Mgd2Vy ZSByZXBsYWNlZCB3aXRoIG51bGwKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK1NFTEVDVCAq IEZST00gdF9vbl9lcnJvcl9udWxsIE9SREVSIEJZIGE7CisgYSAgfCAgYiAgIHwgIGMgICAKKy0t LS0rLS0tLS0tKy0tLS0tLQorIDEwIHwgTlVMTCB8IE5VTEwKKyAxMSB8IE5VTEwgfCAgIDEyCisg MTMgfCAgIDE0IHwgTlVMTAorKDMgcm93cykKKworXHBzZXQgbnVsbCAnJwogLS0gdGVzdHMgZm9y IG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51bGwgY29uc3RyYWludCB2 aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2YXJjaGFyKDE1KSBOT1Qg TlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQsIG0gaW50W10sIGsgaW50 LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC04MjgsNiArODg1LDkgQEAgRFJPUCBWSUVXIGluc3Rl YWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92 aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsKIERST1Ag VEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJvcl9udWxsOworRFJPUCBE T01BSU4gZF9pbnRfbm90X251bGw7CitEUk9QIERPTUFJTiBkX2ludF9wb3NpdGl2ZV9tYXliZV9u dWxsOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9NQUlOIGRjaGVja19pZ25f ZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKaW5kZXggNDUy NzM1NTdjZTAuLjQwNzc2ZDU1Yzk2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b3B5Mi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCkBAIC02NywxMiAr NjcsMTUgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcmNlX251bGwgKGEpLCBmb3JjZV9udWxsIChi KSk7CiBDT1BZIHggZnJvbSBzdGRpbiAoY29udmVydF9zZWxlY3RpdmVseSAoYSksIGNvbnZlcnRf c2VsZWN0aXZlbHkgKGIpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChlbmNvZGluZyAnc3FsX2FzY2lp JywgZW5jb2RpbmcgJ3NxbF9hc2NpaScpOwogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGln bm9yZSwgb25fZXJyb3IgaWdub3JlKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBudWxs LCBvbl9lcnJvciBpZ25vcmUpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVm YXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIAogLS0gaW5jb3JyZWN0IG9wdGlvbnMKIENP UFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBkZWxpbWl0ZXIgJywnKTsKIENPUFkgeCBm cm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBudWxsICd4Jyk7CiBDT1BZIHggZnJvbSBzdGRpbiAo Zm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgaWdub3JlKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChmb3Jt YXQgQklOQVJZLCBvbl9lcnJvciBudWxsKTsKK0NPUFkgeCBGUk9NIHN0ZGluIChvbl9lcnJvciBu dWxsLCByZWplY3RfbGltaXQgMik7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBw b3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZShhKSk7 CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX3F1b3RlICopOwpAQCAtODcs NiArOTAsNyBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX251bGwgKik7 CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0 byBzdGRvdXQgKGZvcm1hdCBDU1YsIGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChm b3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CitDT1BZIHggdG8gc3RkaW4gKG9u X2Vycm9yIG51bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0 ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEpOwogQ09QWSB4IGZy b20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7CkBAIC01MzQs NiArNTM4LDQ1IEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAKK0NSRUFURSBET01BSU4gZF9pbnRf bm90X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlO IGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVlID4gMCk7CitDUkVB VEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRfaW50X3Bvc2l0 aXZlX21heWJlX251bGwsIGMgSU5UKTsKKworXHBzZXQgbnVsbCBOVUxMCistLWZhaWwsIGNvbHVt biBhIGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBudWxsKTsKK1xOCTExCTEzCitcLgorCistLWZhaWwsIGNvbHVt biBhIGlzIGRvbWFpbiB3aXRoIG5vdC1udWxsIGNvbnN0cmFpbnQKK0NPUFkgdF9vbl9lcnJvcl9u dWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgbnVsbCk7CithCTExCTE0CitcLgorCistLWZh aWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251 bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBudWxsKTsKKy0xCTExCTEzCitcLgorCistLWZh aWwuIGxlc3MgZGF0YQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxp bWl0ZXIgJywnLCBvbl9lcnJvciBudWxsKTsKKzEsMQorXC4KKy0tZmFpbC4gZXh0cmEgZGF0YQor Q09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9l cnJvciBudWxsKTsKKzEsMiwzLDQKK1wuCisKKy0tb2sKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZS T00gU1RESU4gV0lUSCAob25fZXJyb3IgbnVsbCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKKzEw CWEJZAorMTEJYgkxMgorMTMJMTQJZQorXC4KKworLS0gY2hlY2sgaW5zZXJ0ZWQgY29udGVudAor U0VMRUNUICogRlJPTSB0X29uX2Vycm9yX251bGwgT1JERVIgQlkgYTsKK1xwc2V0IG51bGwgJycK IC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0aCBsb2dfdmVyYm9zaXR5IGFuZCBudWxs IGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERPTUFJTiBkY2hlY2tfaWduX2VycjIgdmFy Y2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUgY2hlY2tfaWduX2VycjIgKG4gaW50LCBt IGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIpOwpAQCAtNjAzLDYgKzY0Niw5IEBAIERS T1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90YmxfdmlldzsKIERST1AgVklFVyBpbnN0ZWFkX29m X2luc2VydF90Ymxfdmlld18yOwogRFJPUCBGVU5DVElPTiBmdW5faW5zdGVhZF9vZl9pbnNlcnRf dGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7CitEUk9QIFRBQkxFIHRfb25fZXJyb3Jf bnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25vdF9udWxsOworRFJPUCBET01BSU4gZF9pbnRfcG9z aXRpdmVfbWF5YmVfbnVsbDsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjI7CiBEUk9QIERPTUFJ TiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRBQkxFIGhhcmRfZXJyOwotLSAKMi4zNC4xCgo= --00000000000099147b063111de07--