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 1voCi5-00GZpb-1V for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 03:40:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1voCi3-001sAs-1y for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 03:40:43 +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 1voCi3-001sAi-02 for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 03:40:43 +0000 Received: from mail-vs1-xe2a.google.com ([2607:f8b0:4864:20::e2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1voChz-00000000mVA-2eDG for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 03:40:41 +0000 Received: by mail-vs1-xe2a.google.com with SMTP id ada2fe7eead31-5fadf645f9bso83869137.0 for ; Thu, 05 Feb 2026 19:40:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770349239; cv=none; d=google.com; s=arc-20240605; b=F5J3RdJxslR/zfwML59EloVWxC/WTtNJVL/TQl4iPvU8D5PBgE6//qDMYuEFwX2OT0 8fO4+F+ybduE4+8iWJDxNu/3NG9ZuLhzh6KIAldJgG3cCH4TxB+GhwCyPPVWo5mAKHrQ z0IOn4jPfVt/qeoZFIdEtuJWUvMQcJZyhCWFTaCHuId0nxOgDo5l3rgwuN65UnFPs5c5 DaeMNfZPzuyXqs3k8Q5ZVqCPYMx4F+8ZE03un/u7YksrbsjwudyQzvw0qGPPYibxycSC oS0Biogf2co2pZ+sD9MwbBEWlrGzkqSDmucnzrSAaRlG9I4XnNeFXOf18tQcBhZPJNgD AVuw== 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=vnhFiQ4D/Af7gnzAthcoa+oKOvhP6CUlfcyg1Q2EhQg=; fh=3P2yOKzAY+6EiVmspjcoQx0CLOVSOJE5x2YpZVKtdFY=; b=YwFUVw2yQlDSprmUYBruQWfQErAcZiyMtL9099X9s275OBkb3ERDkZ5jVTFCl1SIj1 fS7bpQBFxJ++mtO63e8DrLrJMlF9kZy+gHTy2n01fwL8KpDInt7ayv9ZdSQaz6Gd0X6B pWcr1NBbJKnWUEbnLdLAHHfFn3XU57K1BPJEPTdLo277ivLRRIysx7GJMsRZYART4UIp fVEWPMdBtGx8VPDMH8vGJC/GbJY5xE+kl5Ake9W8L+cUpvz4nKoZ0NrmPQOzS8aJ/cyH vk8wm/qhgIH23Hrezd0Bk2UoIOnYXQdMc79iSG5/SQSpLxFNI2E/BW0SYDcq2Iwjwyby F47w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770349239; x=1770954039; 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=vnhFiQ4D/Af7gnzAthcoa+oKOvhP6CUlfcyg1Q2EhQg=; b=ZsJaGeXJJOMFyXJ/lmTTUBeo2nsb6hm640sd6WpCVulNwf2hBoNkV9YnyutFsmoGDd 1lLQYo0abOnxpCfDbex9isPah5mn0bM0tbuH62WWWQx0tYgQ5xorooL0igpfRAIy1cxk 4aUSjAqi36npksA6eFMNMrxLVE0EMbVTlruohsiZpLOIravAQDhb1XEKJ0UUzYMoUo5s I1iaBAr1x3Bdt89SLNUfB92Xl2z4drTKRPU67CHf7HJ3Gf5yQR+0Cpnr1ZSM5Ahd2C+F QMsUZ3Pof0i8PljxAt0qqvbtexOIgLfB31ukgaDxpheVAstUcTFhvstCRdVzF7NwEXlZ JYvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770349239; x=1770954039; 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=vnhFiQ4D/Af7gnzAthcoa+oKOvhP6CUlfcyg1Q2EhQg=; b=QQheKghFA91RJJnn7ZN61/GcrpEZqTKgfSdTTB0hxcGKCS661csyUNPte6MjxstQWw 0G1aIk7J59pFaT3KuJGqbKMwsHyLTRrRJ+N1j3A/nEJ9OUI0aMFR+/vfGtcnX6bMqU3/ 4wvP35Zha09fFfD2REHtVnlLVjmwDY+raeTTZ8ziWWoKqSt2CgLePKnokAU1W+aCmqb2 V7S4JZqr0tBoQ3KI2wMU4I985S6fM3kyAjt7mYWaootdyoQNwRzfhaVolZQAtnJDFA2K 2SEL1HiVh56iCJ+5u2j71LQYDIG2yAfiPuEghTczzb8K5V20ZgH0OnnjOrW20g0FhQwU JrZQ== X-Forwarded-Encrypted: i=1; AJvYcCW7hYyD42KpK4To4iBC0ArdTuQw9tTj9VTbtreEekGvKCmBSYZYh/npxntgwvKEyBKLAs44QlfL3e8YeGVg@lists.postgresql.org X-Gm-Message-State: AOJu0Yy41yOeWo3Jv9THZ+etWtFet6I0Qjkuk+gNyNoTexFQcAtq/l6f VVNz7a8qXdPjiqSLCL0+jPBQJHy0Cs0G4X/exsv9o9Jl1QEONgHz2z1wDU1hifdgnBXhnYnWFPD ndks15u43TzuILMUf2ZTp7prdqYeX4r4= X-Gm-Gg: AZuq6aJ/Wp9pdbSzgEnEFxZN5EuLEt0b/s23Yvyb/CfFNwHf5hWIuHhSpXqAOiCIFbj ULe5Ut9ExSI/iWzk+1oYhUL0Lfh1VtpFY72gfiarMzrsjlM5zlD/UE3uvqnJ1SZNC4v0MPkKwOp IubtK5rTdpfR38nnosl0MrXaeas/hmHyvg1lr28fKWMpP3rLtPLmSe1NLD1eVaC8VJf4oyPmYfR ZN3IKKiGUVWhS47X+i3ESXpTFuO88HI4JCBLvOB0pZBmlo4Btneg4UBOPv2CuokymJEdHD5VXmL q9iFGBuaFM8TbZ0PxtTSorp85LQs6uQLESF9mdL/D5eFD7XRILaFVSnyqylLkYPK3jJKSTx4nyT LF5EFKZiJyUOsJKRRv4WpbScvItqKbY0iPaUFwaMSGlHGgKgsl7ggOQLn0zL+Hrii4eTa84MNJP tZ0FJybqBzgQ== X-Received: by 2002:a05:6102:94e:b0:5f9:3aaf:1b9a with SMTP id ada2fe7eead31-5fae8a4f16fmr319838137.16.1770349238701; Thu, 05 Feb 2026 19:40:38 -0800 (PST) MIME-Version: 1.0 References: <901967e5-e5dc-42c6-b2bf-fb3a49d7e787@gmail.com> <4c540fe3-495c-4bbf-8dcf-2c1e2b88bc3d@gmail.com> In-Reply-To: <4c540fe3-495c-4bbf-8dcf-2c1e2b88bc3d@gmail.com> From: jian he Date: Fri, 6 Feb 2026 11:40:02 +0800 X-Gm-Features: AZwV_Qg1abPiAG1Udb1TPX3RMQcwUFqXVJA2EFB58ICq-UlWT3zZP9lioSjqdSs Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Matheus Alcantara Cc: torikoshia , Masahiko Sawada , vignesh C , Jim Jones , Kirill Reshke , Fujii Masao , "David G. Johnston" , Yugo NAGATA , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000080778c064a1f8d74" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000080778c064a1f8d74 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jan 28, 2026 at 2:37=E2=80=AFAM Matheus Alcantara wrote: > > Yeah, after some more thinking it seems ok to use both options > together. I just found a bit strange when using integer columns. > Consider this example: > > cat data.csv > 1,11 > 2,22 > 3, > 4,44 > > postgres=3D# create table t(a int not null, b int); > CREATE TABLE > > postgres=3D# copy t from > '/Users/matheus/dev/pgdev/copy-on-error-set-null/data.csv' with > (FORCE_NOT_NULL(b), format csv, delimiter ',', ON_ERROR set_null); > NOTICE: 1 row was replaced with null due to data type incompatibility > COPY 4 > > postgres=3D# select * from t where b is null; > a | b > ---+--- > 3 | > (1 row) > > We are requiring a not null value on column b but we are still > generating rows with null values on b. > > The reasoning on this is that the row 3 would generate a "invalid > input syntax for type integer" error and the ON_ERROR set_null fix > this by inserting a NULL value. It make sense I think but I'm > wondering if it could cause any confusion? > After careful reading the FORCE_NOT_NULL, FORCE_NULL option. It's about dealing with empty value and NULL strings. copy t from stdin with(FORCE_NOT_NULL (b), format csv, delimiter ','); Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. >> 1, >> \. ERROR: invalid input syntax for type integer: "" CONTEXT: COPY t, line 1, column b: "" in this case, FORCE_NOT_NULL will convert the empty value to null string (empty double quote) another FORCE_NULL. copy t from stdin with(FORCE_NULL (b), format csv, delimiter ','); Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. >> 1,"" >> \. COPY 1 src9=3D# table t; a | b ---+--- 1 | (1 row) In this case, FORCE_NULL will convert null string (empty double quote) to N= ULL. ON_ERROR explanation, the first sentence: """ Specifies how to behave when encountering an error converting a column's input value into its data type. """ FORCE_NULL, FORCE_NOT_NULL is a special handling of input value, ON_ERROR i= s about converting the input value to data type, so it's before ON_ERROR. Overall the current doc is fine, IMHO. The attached patch has addressed your other points. -- jian https://www.enterprisedb.com/ --00000000000080778c064a1f8d74 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0001-COPY-on_error-set_null.patch" Content-Disposition: attachment; filename="v22-0001-COPY-on_error-set_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlac5kuh0 RnJvbSBiNDc5YzU3NzUzYjUxYTg2OGQ1ZDE5MDgwYTA3MGM3YWVkOTAyNmRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNSBGZWIgMjAyNiAxNjowOTo1OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIy IDEvMV0gQ09QWSAob25fZXJyb3Igc2V0X251bGwpCgpJZiBPTl9FUlJPUiBTRVRfTlVMTCBpcyBz cGVjaWZpZWQgZHVyaW5nIENPUFkgRlJPTSwgYW55IGRhdGEgdHlwZSBjb252ZXJzaW9uCmVycm9y cyB3aWxsIHJlc3VsdCBpbiB0aGUgYWZmZWN0ZWQgY29sdW1uIGJlaW5nIHNldCB0byBOVUxMLiBI b3dldmVyLCBjb2x1bW4ncwpub3QtbnVsbCBjb25zdHJhaW50cyBhcmUgc3RpbGwgZW5mb3JjZWQs IGF0dGVtcHRpbmcgdG8gc2V0IGEgTlVMTCB2YWx1ZSBpbiBzdWNoCmNvbHVtbnMgd2lsbCByYWlz ZSBhIGNvbnN0cmFpbnQgdmlvbGF0aW9uIGVycm9yLiAgVGhpcyBhcHBsaWVzIHRvIGNvbHVtbiBk YXRhCnR5cGUgaXMgYSBkb21haW4gd2l0aCBhIE5PVCBOVUxMIGNvbnN0cmFpbnQuCgpBdXRob3I6 IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KQXV0aG9yOiBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgoKUmV2aWV3ZWQtYnk6CkZ1amlpIE1hc2FvIDxt YXNhby5mdWppaUBvc3MubnR0ZGF0YS5jb20+CkppbSBKb25lcyA8amltLmpvbmVzQHVuaS1tdWVu c3Rlci5kZT4KIkRhdmlkIEcuIEpvaG5zdG9uIiA8ZGF2aWQuZy5qb2huc3RvbkBnbWFpbC5jb20+ Cll1Z28gTkFHQVRBIDxuYWdhdGFAc3Jhb3NzLmNvLmpwPgp0b3Jpa29zaGlhIDx0b3Jpa29zaGlh QG9zcy5udHRkYXRhLmNvbT4KTWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+ CkF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jpa29zaGlhQG9zcy5udHRkYXRhLmNvbT4KTWF0aGV1cyBB bGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KCmRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0FLRlF1d2F3eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1CUDNkMV9h U2ZlXytRQG1haWwuZ21haWwuY29tCmNvbW1pdGZlc3QgZW50cnk6IGh0dHBzOi8vY29tbWl0ZmVz dC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC80ODEwCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbCAgICAgICAgICAgICB8ICA0ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAg ICAgICAgICAgIHwgMzUgKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAg ICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAg ICAgIHwgNDYgKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJz ZS5jICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmggICAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50 ZXJuYWwuaCB8ICA3ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCAgICAg IHwgNTUgKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgICAg ICAgICAgIHwgNDMgKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5zZXJ0aW9u cygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggYjc3ZDE4OWE1MDAu LmRjZjZlNmEyZjQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTYyNjYsOCArNjI2Niw4IEBAIEZS T00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgIDwvcGFy YT4KICAgICAgIDxwYXJhPgogICAgICAgIE51bWJlciBvZiB0dXBsZXMgc2tpcHBlZCBiZWNhdXNl IHRoZXkgY29udGFpbiBtYWxmb3JtZWQgZGF0YS4KLSAgICAgICBUaGlzIGNvdW50ZXIgb25seSBh ZHZhbmNlcyB3aGVuIGEgdmFsdWUgb3RoZXIgdGhhbgotICAgICAgIDxsaXRlcmFsPnN0b3A8L2xp dGVyYWw+IGlzIHNwZWNpZmllZCB0byB0aGUgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+Cisg ICAgICAgVGhpcyBjb3VudGVyIG9ubHkgYWR2YW5jZXMgd2hlbgorICAgICAgIDxsaXRlcmFsPmln bm9yZTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIHRvIHRoZSA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0 ZXJhbD4KICAgICAgICBvcHRpb24uCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sCmluZGV4IGFmZWE5Y2FmNWFkLi45OGMwZTI5MjRlYSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNn bWwKQEAgLTQzMiwyMiArNDMyLDM4IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIGlu cHV0IHZhbHVlIGludG8gaXRzIGRhdGEgdHlwZS4KICAgICAgIEFuIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPiB2YWx1ZSBvZgogICAgICAg PGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4gbWVhbnMgZmFpbCB0aGUgY29tbWFuZCwgd2hpbGUKLSAg ICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93 IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZS4KKyAgICAgIDxsaXRlcmFsPmlnbm9yZTwv bGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRo ZSBuZXh0IG9uZSwKKyAgICAgIGFuZCA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4gbWVhbnMg cmVwbGFjZSBmaWVsZCBjb250YWluaW5nIGludmFsaWQKKyAgICAgIGlucHV0IHZhbHVlIHdpdGgg PGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gYW5kIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGZpZWxkLgog ICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4uCiAgICAgIDwvcGFy YT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGUgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBvcHRp b24gaXMgYXBwbGljYWJsZSBvbmx5IGZvciA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+Cisg ICAgICBUaGUgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+c2V0X251bGw8 L2xpdGVyYWw+CisgICAgICBvcHRpb25zIGFyZSBhcHBsaWNhYmxlIG9ubHkgZm9yIDxjb21tYW5k PkNPUFkgRlJPTTwvY29tbWFuZD4KICAgICAgIHdoZW4gdGhlIDxsaXRlcmFsPkZPUk1BVDwvbGl0 ZXJhbD4gaXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Y3N2PC9saXRlcmFs Pi4KICAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBGb3IgPGxpdGVyYWw+aWdub3Jl PC9saXRlcmFsPiBvcHRpb24sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCisg ICAgICBjb250YWluaW5nIHRoZSBpZ25vcmVkIHJvdyBjb3VudCBpcyBlbWl0dGVkIGF0IHRoZSBl bmQgb2YgdGhlIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KKyAgICAgIGlmIGF0IGxlYXN0 IG9uZSByb3cgd2FzIGRpc2NhcmRlZC4KKyAgICAgIEZvciA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0 ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4KKyAgICAgIG1lc3NhZ2Ug aW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHJvd3Mgd2hlcmUgaW52YWxpZCBpbnB1dCB2YWx1ZXMg d2VyZQorICAgICAgcmVwbGFjZWQgd2l0aCBudWxsIGlzIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0 aGUgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgorICAgICAgaWYgYXQgbGVhc3Qgb25lIHJv dyB3YXMgcmVwbGFjZWQuCisgICAgIDwvcGFyYT4KKwogICAgICA8cGFyYT4KLSAgICAgIEEgPGxp dGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGlnbm9yZWQgcm93 IGNvdW50IGlzCi0gICAgICBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgdGhlIDxjb21tYW5kPkNPUFkg RlJPTTwvY29tbWFuZD4gaWYgYXQgbGVhc3Qgb25lCi0gICAgICByb3cgd2FzIGRpc2NhcmRlZC4g V2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBvcHRpb24gaXMgc2V0IHRvCi0g ICAgICA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVy YWw+IG1lc3NhZ2UKKyAgICAgIFdoZW4gPGxpdGVyYWw+TE9HX1ZFUkJPU0lUWTwvbGl0ZXJhbD4g b3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwKKyAgICAgIGZvciA8 bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlvbiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVy YWw+IG1lc3NhZ2UKICAgICAgIGNvbnRhaW5pbmcgdGhlIGxpbmUgb2YgdGhlIGlucHV0IGZpbGUg YW5kIHRoZSBjb2x1bW4gbmFtZSB3aG9zZSBpbnB1dAotICAgICAgY29udmVyc2lvbiBoYXMgZmFp bGVkIGlzIGVtaXR0ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdy4KKyAgICAgIGNvbnZlcnNpb24g aGFzIGZhaWxlZCBpcyBlbWl0dGVkIGZvciBlYWNoIGRpc2NhcmRlZCByb3c7CisgICAgICBmb3Ig PGxpdGVyYWw+c2V0X251bGw8L2xpdGVyYWw+IG9wdGlvbiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xp dGVyYWw+CisgICAgICBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGxpbmUgb2YgdGhlIGlucHV0IGZp bGUgYW5kIHRoZSBjb2x1bW4gbmFtZSB3aGVyZQorICAgICAgdmFsdWUgd2FzIHJlcGxhY2VkIHdp dGggPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gZm9yIGVhY2ggaW5wdXQgY29udmVyc2lvbgorICAg ICAgZmFpbHVyZS4KICAgICAgIFdoZW4gaXQgaXMgc2V0IHRvIDxsaXRlcmFsPnNpbGVudDwvbGl0 ZXJhbD4sIG5vIG1lc3NhZ2UgaXMgZW1pdHRlZAotICAgICAgcmVnYXJkaW5nIGlnbm9yZWQgcm93 cy4KKyAgICAgIHJlZ2FyZGluZyBpbnB1dCBjb252ZXJzaW9uIGZhaWxlZCByb3dzLgogICAgICA8 L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNDk1LDcgKzUx MSw4IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4K ICAgICAgIFRoaXMgaXMgY3VycmVudGx5IHVzZWQgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21t YW5kPiBjb21tYW5kIHdoZW4KLSAgICAgIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBvcHRp b24gaXMgc2V0IHRvIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4uCisgICAgICA8bGl0ZXJhbD5P Tl9FUlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVy YWw+CisgICAgICBvciA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4uCiAgICAgICA8L3BhcmE+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4 IDVkOWIwOGI4MjJjLi42MjYzNzY3YTkwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDY5LDEyICs0 NjksMTQgQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRl ICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZGVmLT5sb2NhdGlvbikpKTsKIAogCS8qCi0JICogQWxsb3cgInN0b3AiLCBvciAiaWdub3JlIiB2 YWx1ZXMuCisJICogQWxsb3cgInN0b3AiLCAiaWdub3JlIiwgInNldF9udWxsIiB2YWx1ZXMuCiAJ ICovCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInN0b3AiKSA9PSAwKQogCQlyZXR1cm4gQ09Q WV9PTl9FUlJPUl9TVE9QOwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJpZ25vcmUiKSA9PSAw KQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9JR05PUkU7CisJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInNldF9udWxsIikgPT0gMCkKKwkJcmV0dXJuIENPUFlfT05fRVJST1JfU0VUX05VTEw7CiAK IAllcmVwb3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCkBAIC0xMDM1LDcgKzEwMzcsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJy bXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CiAK LQlpZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQtPm9uX2Vycm9yKQorCWlm IChvcHRzX291dC0+cmVqZWN0X2xpbWl0ICYmIG9wdHNfb3V0LT5vbl9lcnJvciAhPSBDT1BZX09O X0VSUk9SX0lHTk9SRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJLyotIHRyYW5zbGF0b3I6IGZpcnN0IGFuZCBzZWNv bmQgJXMgYXJlIHRoZSBuYW1lcyBvZiBDT1BZIG9wdGlvbiwgZS5nLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMKaW5kZXggMGM3M2IwMjU5YzMuLmNjNGEyZGFiMzQ4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9wb3J0YWwuaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAi dXRpbHMvdHlwY2FjaGUuaCIKIAogLyoKICAqIE5vIG1vcmUgdGhhbiB0aGlzIG1hbnkgdHVwbGVz IHBlciBDb3B5TXVsdGlJbnNlcnRCdWZmZXIKQEAgLTE0NjcsMTQgKzE0NjgsMjIgQEAgQ29weUZy b20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJLyogRG9uZSwgY2xlYW4gdXAgKi8KIAllcnJvcl9j b250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CiAKLQlpZiAoY3N0YXRlLT5vcHRz Lm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RPUCAmJgotCQljc3RhdGUtPm51bV9lcnJvcnMg PiAwICYmCisJaWYgKGNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYKIAkJY3N0YXRlLT5vcHRzLmxv Z192ZXJib3NpdHkgPj0gQ09QWV9MT0dfVkVSQk9TSVRZX0RFRkFVTFQpCi0JCWVyZXBvcnQoTk9U SUNFLAotCQkJCWVycm1zZ19wbHVyYWwoIiUiIFBSSXU2NCAiIHJvdyB3YXMgc2tpcHBlZCBkdWUg dG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCi0JCQkJCQkJICAiJSIgUFJJdTY0ICIgcm93 cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAotCQkJCQkJ CSAgY3N0YXRlLT5udW1fZXJyb3JzLAotCQkJCQkJCSAgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJ eworCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKQor CQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVyYWwoIiUiIFBSSXU2NCAiIHJvdyB3 YXMgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCSAg IiUiIFBSSXU2NCAiIHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRp YmlsaXR5IiwKKwkJCQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMsCisJCQkJCQkJCSAgY3N0YXRl LT5udW1fZXJyb3JzKSk7CisJCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZ X09OX0VSUk9SX1NFVF9OVUxMKQorCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVy YWwoIiUiIFBSSXU2NCAiIHJvdyB3YXMgcmVwbGFjZWQgd2l0aCBudWxsIGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICAiJSIgUFJJdTY0ICIgcm93cyB3ZXJlIHJl cGxhY2VkIHdpdGggbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJ CQkJCSAgY3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycykp OworCX0KIAogCWlmIChiaXN0YXRlICE9IE5VTEwpCiAJCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlz dGF0ZSk7CkBAIC0xNjIyLDE1ICsxNjMxLDMyIEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKIAog CQkvKgotCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JF LiBXZSdsbCBhZGQgb3RoZXIKLQkJICogb3B0aW9ucyBsYXRlcgorCQkgKiBDdXJyZW50bHkgd2Ug b25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLAorCQkgKiBDT1BZX09OX0VSUk9SX1NF VF9OVUxMLiBXZSdsbCBhZGQgb3RoZXIgb3B0aW9ucyBsYXRlcgogCQkgKi8KLQkJaWYgKGNzdGF0 ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJaWYgKGNzdGF0ZS0+ b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSB8fAorCQkJY3N0YXRlLT5vcHRz Lm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCiAJCQljc3RhdGUtPmVzY29udGV4 dC0+ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCQljc3RhdGUtPmVzY29udGV4 dCA9IE5VTEw7CiAKKwlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1Jf U0VUX05VTEwpCisJeworCQlpbnQJCQlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5h dHRudW1saXN0KTsKKworCQljc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnQgPSBwYWxsb2Mw X2FycmF5KGJvb2wsIGF0dHJfY291bnQpOworCisJCWZvcmVhY2hfaW50KGF0dG5vLCBjc3RhdGUt PmF0dG51bWxpc3QpCisJCXsKKwkJCWludAkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoYXR0 bm8pOworCisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cERlc2Ms IGF0dG5vIC0gMSk7CisKKwkJCWNzdGF0ZS0+ZG9tYWluX3dpdGhfY29uc3RyYWludFtpXSA9IERv bWFpbkhhc0NvbnN0cmFpbnRzKGF0dC0+YXR0dHlwaWQpOworCQl9CisJfQorCiAJLyogQ29udmVy dCBGT1JDRV9OVUxMIG5hbWUgbGlzdCB0byBwZXItY29sdW1uIGZsYWdzLCBjaGVjayB2YWxpZGl0 eSAqLwogCWNzdGF0ZS0+b3B0cy5mb3JjZV9udWxsX2ZsYWdzID0gKGJvb2wgKikgcGFsbG9jMChu dW1fcGh5c19hdHRycyAqIHNpemVvZihib29sKSk7CiAJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9u dWxsX2FsbCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2Uu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCAwZDkxOTlmNWNl OC4uZTEyZGVjYWE4MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t cGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTk1 OSw2ICs5NTksNyBAQCBDb3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJaW50CQkJZmxkY3Q7CiAJaW50CQkJZmllbGRubzsK IAljaGFyCSAgICpzdHJpbmc7CisJYm9vbAkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gZmFsc2U7 CiAKIAl0dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihjc3RhdGUtPnJlbCk7CiAJYXR0cl9jb3Vu dCA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7CkBAIC0xMDM2LDcgKzEwMzcsOCBA QCBDb3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4 dCAqZWNvbnRleHQsCiAJCX0KIAogCQkvKgotCQkgKiBJZiBPTl9FUlJPUiBpcyBzcGVjaWZpZWQg d2l0aCBJR05PUkUsIHNraXAgcm93cyB3aXRoIHNvZnQgZXJyb3JzCisJCSAqIElmIE9OX0VSUk9S IGlzIHNwZWNpZmllZCB3aXRoIElHTk9SRSwgc2tpcCByb3dzIHdpdGggc29mdCBlcnJvcnMuCisJ CSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIFNFVF9OVUxMLCB0cnkgdG8gcmVwbGFj ZSB3aXRoIG51bGwuCiAJCSAqLwogCQllbHNlIGlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZp bl9mdW5jdGlvbnNbbV0sCiAJCQkJCQkJCQkJc3RyaW5nLApAQCAtMTA0Nyw3ICsxMDQ5LDUxIEBA IENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwKIAkJewogCQkJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZ X09OX0VSUk9SX1NUT1ApOwogCi0JCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKwkJCWlmIChjc3Rh dGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQkJY3N0YXRlLT5u dW1fZXJyb3JzKys7CisJCQllbHNlIGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9P Tl9FUlJPUl9TRVRfTlVMTCkKKwkJCXsKKwkJCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2Nj dXJyZWQgPSBmYWxzZTsKKworCQkJCUFzc2VydChjc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFp bnQgIT0gTlVMTCk7CisKKwkJCQkvKgorCQkJCSAqIElmIHRoZSBjb2x1bW4gdHlwZSBpcyBhIGNv bnN0cmFpbmVkIGRvbWFpbiwgYW4gYWRkaXRpb25hbAorCQkJCSAqIElucHV0RnVuY3Rpb25DYWxs U2FmZSBtYXkgYmUgbmVlZGVkIHRvIHJhaXNlIGVycm9yIGZvcgorCQkJCSAqIGRvbWFpbiBjb25z dHJhaW50IHZpb2xhdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAoIWNzdGF0ZS0+ZG9tYWluX3dpdGhf Y29uc3RyYWludFttXSB8fAorCQkJCQlJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0aW9u c1ttXSwKKwkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJICB0eXBpb3BhcmFtc1ttXSwKKwkJ CQkJCQkJCQkgIGF0dC0+YXR0dHlwbW9kLAorCQkJCQkJCQkJCSAgKE5vZGUgKikgY3N0YXRlLT5l c2NvbnRleHQsCisJCQkJCQkJCQkJICAmdmFsdWVzW21dKSkKKwkJCQl7CisJCQkJCW51bGxzW21d ID0gdHJ1ZTsKKwkJCQkJdmFsdWVzW21dID0gKERhdHVtKSAwOworCQkJCX0KKwkJCQllbHNlIGlm IChzdHJpbmcgPT0gTlVMTCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVS UkNPREVfTk9UX05VTExfVklPTEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImRvbWFpbiAlcyBkb2Vz IG5vdCBhbGxvdyBudWxsIHZhbHVlcyIsIGZvcm1hdF90eXBlX2JlKHR5cGlvcGFyYW1zW21dKSks CisJCQkJCQkJZXJyZGF0YXR5cGUodHlwaW9wYXJhbXNbbV0pKTsKKwkJCQllbHNlCisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNF TlRBVElPTiksCisJCQkJCQkJZXJybXNnKCJpbnZhbGlkIGlucHV0IHZhbHVlIGZvciBkb21haW4g JXM6IFwiJXNcIiIsCisJCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHR5cGlvcGFyYW1zW21dKSwg c3RyaW5nKSk7CisKKwkJCQkvKgorCQkJCSAqIFdlIGNvdW50IG9ubHkgdGhlIG51bWJlciBvZiBy b3dzIChub3QgZmllbGRzKSB3aGVyZQorCQkJCSAqIE9OX0VSUk9SIFNFVF9OVUxMIHdhcyBhcHBs aWVkLgorCQkJCSAqLworCQkJCWlmICghY3VycmVudF9yb3dfZXJyb25lb3VzKQorCQkJCXsKKwkJ CQkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gdHJ1ZTsKKwkJCQkJY3N0YXRlLT5udW1fZXJyb3Jz Kys7CisJCQkJfQorCQkJfQogCiAJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPT0g Q09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCiAJCQl7CkBAIC0xMDY0LDI0ICsxMTEwLDM3IEBA IENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwKIAkJCQkJY2hhcgkgICAqYXR0dmFsOwogCiAJCQkJCWF0dHZhbCA9IENvcHlM aW1pdFByaW50b3V0TGVuZ3RoKGNzdGF0ZS0+Y3VyX2F0dHZhbCk7Ci0JCQkJCWVyZXBvcnQoTk9U SUNFLAotCQkJCQkJCWVycm1zZygic2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21w YXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6IFwiJXNcIiIs Ci0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVubywKLQkJCQkJCQkJICAgY3N0YXRlLT5jdXJf YXR0bmFtZSwKLQkJCQkJCQkJICAgYXR0dmFsKSk7CisKKwkJCQkJaWYgKGNzdGF0ZS0+b3B0cy5v bl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCQkJCWVyZXBvcnQoTk9USUNFLAor CQkJCQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJp bGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBcIiVzXCIiLAorCQkJ CQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfYXR0 bmFtZSwKKwkJCQkJCQkJCSAgIGF0dHZhbCkpOworCQkJCQllbHNlIGlmIChjc3RhdGUtPm9wdHMu b25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKKwkJCQkJCWVyZXBvcnQoTk9USUNF LAorCQkJCQkJCQllcnJtc2coInNldHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29t cGF0aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBcIiVzXCIi LAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAorCQkJCQkJCQkJICAgY3N0YXRlLT5j dXJfYXR0bmFtZSwKKwkJCQkJCQkJCSAgIGF0dHZhbCkpOwogCQkJCQlwZnJlZShhdHR2YWwpOwog CQkJCX0KIAkJCQllbHNlCi0JCQkJCWVyZXBvcnQoTk9USUNFLAotCQkJCQkJCWVycm1zZygic2tp cHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJ dTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6IG51bGwgaW5wdXQiLAotCQkJCQkJCQkgICBjc3RhdGUt PmN1cl9saW5lbm8sCi0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUpKTsKLQorCQkJCXsK KwkJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkK KwkJCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUg dG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1 bW4gXCIlc1wiOiBudWxsIGlucHV0IiwKKwkJCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVubywK KwkJCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUpKTsKKwkJCQl9CiAJCQkJLyogcmVzZXQg cmVsbmFtZV9vbmx5ICovCiAJCQkJY3N0YXRlLT5yZWxuYW1lX29ubHkgPSBmYWxzZTsKIAkJCX0K IAotCQkJcmV0dXJuIHRydWU7CisJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlf T05fRVJST1JfSUdOT1JFKQorCQkJCXJldHVybiB0cnVlOworCQkJZWxzZSBpZiAoY3N0YXRlLT5v cHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCisJCQkJY29udGludWU7CiAJ CX0KIAogCQljc3RhdGUtPmN1cl9hdHRuYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpp bmRleCBhNjEwZWY2MDNmNC4uNjgxMGE2ZDA0ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAg LTM0MjUsNyArMzQyNSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CiAJCQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00gZmlsZW5hbWUgV0lUSCAoT05fRVJST1Ig Ki8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJPTl9FUlJPUiIpKQotCQkJCUNPTVBMRVRFX1dJ VEgoInN0b3AiLCAiaWdub3JlIik7CisJCQkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJpZ25vcmUi LCAic2V0X251bGwiKTsKIAogCQkJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1l IFdJVEggKExPR19WRVJCT1NJVFkgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJMT0dfVkVS Qk9TSVRZIikpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggYjJhNjhmYTY0MDcuLmFiZWNmZTUxMDk4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bSBDb3B5T25FcnJv ckNob2ljZQogewogCUNPUFlfT05fRVJST1JfU1RPUCA9IDAsCQkvKiBpbW1lZGlhdGVseSB0aHJv dyBlcnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZX09OX0VSUk9SX0lHTk9SRSwJCS8qIGlnbm9yZSBl cnJvcnMgKi8KKwlDT1BZX09OX0VSUk9SX1NFVF9OVUxMLAkJLyogc2V0IGVycm9yIGZpZWxkIHRv IG51bGwgKi8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv Y29weWZyb21faW50ZXJuYWwuaAppbmRleCA4MjJlZjMzY2Y2OS4uZjg5MmMzNDMxNTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaApAQCAtMTA4LDYgKzEwOCwxMyBA QCB0eXBlZGVmIHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YQogCQkJCQkJCQkgKiBhdHQgKi8KIAli b29sCSAgICpkZWZhdWx0czsJCS8qIGlmIERFRkFVTFQgbWFya2VyIHdhcyBmb3VuZCBmb3IKIAkJ CQkJCQkJICogY29ycmVzcG9uZGluZyBhdHQgKi8KKworCS8qCisJICogVHJ1ZSBpZiB0aGUgY29y cmVzcG9uZGluZyBhdHRyaWJ1dGUncyBpcyBhIGNvbnN0cmFpbmVkIGRvbWFpbi4gVGhpcworCSAq IHdpbGwgYmUgcG9wdWxhdGVkIG9ubHkgd2hlbiBPTl9FUlJPUiBpcyBTRVRfTlVMTCwgb3RoZXJ3 aXNlIE5VTEwuCisJICovCisJYm9vbAkgICAqZG9tYWluX3dpdGhfY29uc3RyYWludDsKKwogCWJv b2wJCXZvbGF0aWxlX2RlZmV4cHJzOwkvKiBpcyBhbnkgb2YgZGVmZXhwcnMgdm9sYXRpbGU/ICov CiAJTGlzdAkgICAqcmFuZ2VfdGFibGU7CS8qIHNpbmdsZSBlbGVtZW50IGxpc3Qgb2YgUmFuZ2VU YmxFbnRyeSAqLwogCUxpc3QJICAgKnJ0ZXBlcm1pbmZvczsJLyogc2luZ2xlIGVsZW1lbnQgbGlz dCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dApp bmRleCAzMTQ1YjMxNGU0OC4uNzIwMzQ3OTZhY2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eTIub3V0CkBAIC04MSw2ICs4MSwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdu b3JlLCBvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQg b3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9l cnJvciBpZ25vcmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIHNldF9u dWxsKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKK0xJTkUgMTog Q09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCBvbl9lcnJvciBzZXRfbnVsbCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4 IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3Nl KTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTogQ09Q WSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJi Li4uCkBAIC05Miw2ICs5NiwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwg bnVsbCAneCcpOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEJJTkFSWSBtb2RlCiBD T1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgaWdub3JlKTsKIEVSUk9S OiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkgeCBm cm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBzZXRfbnVsbCk7CitFUlJPUjogIG9u bHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCitDT1BZIHggZnJvbSBz dGRpbiAob25fZXJyb3Igc2V0X251bGwsIHJlamVjdF9saW1pdCAyKTsKK0VSUk9SOiAgQ09QWSBS RUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIElHTk9SRQogQ09QWSB4 IGZyb20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBPTl9FUlJP UiAidW5zdXBwb3J0ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGlu IChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CkBAIC0xMjQsNiArMTMyLDEwIEBAIENPUFkgeCB0byBz dGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09Q WSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KIExJTkUgMTogQ09QWSB4IHRv IHN0ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitDT1BZIHggdG8gc3Rkb3V0IChvbl9l cnJvciBzZXRfbnVsbCk7CitFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0 aCBDT1BZIFRPCitMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKG9uX2Vycm9yIHNldF9udWxsKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJi b3NpdHkgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIExPR19WRVJCT1NJVFkgInVuc3VwcG9y dGVkIiBub3QgcmVjb2duaXplZAogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJv c2l0eSB1bnN1cHBvcnRlZCk7CkBAIC03ODIsNiArNzk0LDQ2IEBAIENPTlRFWFQ6ICBDT1BZIGNo ZWNrX2lnbl9lcnIKIE5PVElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29t cGF0aWJpbGl0eSBhdCBsaW5lIDggZm9yIGNvbHVtbiAiayI6ICJhIgogQ09OVEVYVDogIENPUFkg Y2hlY2tfaWduX2VycgogTk9USUNFOiAgNiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0 eXBlIGluY29tcGF0aWJpbGl0eQorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBBUyBpbnRl Z2VyIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bvc2l0 aXZlX21heWJlX251bGwgQVMgaW50ZWdlciBDSEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIFRBQkxF IHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3RfbnVsbCwgYiBkX2ludF9wb3NpdGl2ZV9tYXli ZV9udWxsLCBjIGludGVnZXIpOworXHBzZXQgbnVsbCBOVUxMCitDT1BZIHRfb25fZXJyb3JfbnVs bCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsgLS1mYWlsCitFUlJPUjogIGRv bWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDog IENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiBudWxsIGlucHV0CitDT1BZ IHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsgLS1m YWlsCitFUlJPUjogIGludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGRvbWFpbiBkX2ludF9ub3RfbnVs bDogInNzIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBh OiAic3MiCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNl dF9udWxsKTsgLS1mYWlsCitFUlJPUjogIGludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGRvbWFpbiBk X2ludF9ub3RfbnVsbDogIi0xIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5l IDEsIGNvbHVtbiBhOiAiLTEiCistLWZhaWwsIGxlc3MgZGF0YS4KK0NPUFkgdF9vbl9lcnJvcl9u dWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X251bGwpOwor RVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiYyIKK0NPTlRFWFQ6ICBDT1BZIHRfb25f ZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwxIgorLS1mYWlsLCBleHRyYSBkYXRhLgorQ09QWSB0X29u X2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRf bnVsbCk7CitFUlJPUjogIGV4dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBlY3RlZCBjb2x1bW4KK0NP TlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwyLDMsNCIKK0NPUFkgdF9v bl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwsIGxvZ192ZXJi b3NpdHkgdmVyYm9zZSk7IC0tb2sKK05PVElDRTogIHNldHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0 YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDEgZm9yIGNvbHVtbiAiYiI6ICJ4MSIKK0NP TlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbAorTk9USUNFOiAgc2V0dGluZyB0byBudWxsIGR1 ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMSBmb3IgY29sdW1uICJjIjog Inl4IgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6ICBzZXR0aW5nIHRv IG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAyIGZvciBjb2x1 bW4gImIiOiAiengiCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwKK05PVElDRTogIHNl dHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDMg Zm9yIGNvbHVtbiAiYyI6ICJlYSIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbAorTk9U SUNFOiAgMyByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5j b21wYXRpYmlsaXR5CitTRUxFQ1QgKiBGUk9NIHRfb25fZXJyb3JfbnVsbCBPUkRFUiBCWSBhOwor IGEgIHwgIGIgICB8ICBjICAgCistLS0tKy0tLS0tLSstLS0tLS0KKyAxMCB8IE5VTEwgfCBOVUxM CisgMTEgfCBOVUxMIHwgICAxMgorIDEzIHwgICAxNCB8IE5VTEwKKygzIHJvd3MpCisKK1xwc2V0 IG51bGwgJycKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0aCBsb2dfdmVyYm9zaXR5 IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERPTUFJTiBkY2hlY2tfaWdu X2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUgY2hlY2tfaWduX2VycjIg KG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIpOwpAQCAtODQxLDYgKzg5 Myw5IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90YmxfdmlldzsKIERST1AgVklFVyBp bnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18yOwogRFJPUCBGVU5DVElPTiBmdW5faW5zdGVhZF9v Zl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7CitEUk9QIFRBQkxFIHRf b25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25vdF9udWxsOworRFJPUCBET01BSU4g ZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbDsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjI7CiBE Uk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRBQkxFIGhhcmRfZXJyOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weTIuc3FsCmluZGV4IDY2NDM1MTY3NTAwLi41ZTlmNmFmMmM1YyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkyLnNxbApAQCAtNjcsMTIgKzY3LDE1IEBAIENPUFkgeCBmcm9tIHN0ZGluIChmb3JjZV9u dWxsIChhKSwgZm9yY2VfbnVsbCAoYikpOwogQ09QWSB4IGZyb20gc3RkaW4gKGNvbnZlcnRfc2Vs ZWN0aXZlbHkgKGEpLCBjb252ZXJ0X3NlbGVjdGl2ZWx5IChiKSk7CiBDT1BZIHggZnJvbSBzdGRp biAoZW5jb2RpbmcgJ3NxbF9hc2NpaScsIGVuY29kaW5nICdzcWxfYXNjaWknKTsKIENPUFkgeCBm cm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CitDT1BZIHggZnJv bSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIHNldF9udWxsKTsKIENPUFkgeCBm cm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7 CiAKIC0tIGluY29ycmVjdCBvcHRpb25zCiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFS WSwgZGVsaW1pdGVyICcsJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgbnVs bCAneCcpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIGlnbm9y ZSk7CitDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0X251bGwp OworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCByZWplY3RfbGltaXQgMik7 CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20g c3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZShhKSk7CiBDT1BZIHggZnJvbSBzdGRpbiAo Zm9ybWF0IFRFWFQsIGZvcmNlX3F1b3RlICopOwpAQCAtODcsNiArOTAsNyBAQCBDT1BZIHggZnJv bSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChm b3JtYXQgQ1NWLCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBDU1Ys IGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJv ciB1bnN1cHBvcnRlZCk7CitDT1BZIHggdG8gc3Rkb3V0IChvbl9lcnJvciBzZXRfbnVsbCk7CiBD T1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiBDT1BZIHggZnJv bSBzdGRpbiB3aXRoIChyZWplY3RfbGltaXQgMSk7CiBDT1BZIHggZnJvbSBzdGRpbiB3aXRoIChv bl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCAwKTsKQEAgLTU0MCw2ICs1NDQsNDIgQEAgYQl7 Mn0JMgogOAl7OH0JOAogXC4KIAorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBBUyBpbnRl Z2VyIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bvc2l0 aXZlX21heWJlX251bGwgQVMgaW50ZWdlciBDSEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIFRBQkxF IHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3RfbnVsbCwgYiBkX2ludF9wb3NpdGl2ZV9tYXli ZV9udWxsLCBjIGludGVnZXIpOworCitccHNldCBudWxsIE5VTEwKK0NPUFkgdF9vbl9lcnJvcl9u dWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwpOyAtLWZhaWwKK1xOCTExCTEz CitcLgorCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNl dF9udWxsKTsgLS1mYWlsCitzcwkxMQkxNAorXC4KKworQ09QWSB0X29uX2Vycm9yX251bGwgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7IC0tZmFpbAorLTEJMTEJMTMKK1wuCisK Ky0tZmFpbCwgbGVzcyBkYXRhLgorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRI IChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfbnVsbCk7CisxLDEKK1wuCistLWZhaWwsIGV4 dHJhIGRhdGEuCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRl ciAnLCcsIG9uX2Vycm9yIHNldF9udWxsKTsKKzEsMiwzLDQKK1wuCisKK0NPUFkgdF9vbl9lcnJv cl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwsIGxvZ192ZXJib3NpdHkg dmVyYm9zZSk7IC0tb2sKKzEwCXgxCXl4CisxMQl6eAkxMgorMTMJMTQJZWEKK1wuCisKK1NFTEVD VCAqIEZST00gdF9vbl9lcnJvcl9udWxsIE9SREVSIEJZIGE7CisKK1xwc2V0IG51bGwgJycKKwog LS0gdGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51bGwg Y29uc3RyYWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2YXJj aGFyKDE1KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQsIG0g aW50W10sIGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC02MDksNiArNjQ5LDkgQEAgRFJP UCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRfb2Zf aW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90 YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJvcl9u dWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7CitEUk9QIERPTUFJTiBkX2ludF9wb3Np dGl2ZV9tYXliZV9udWxsOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9NQUlO IGRjaGVja19pZ25fZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7Ci0tIAoyLjM0LjEKCg== --00000000000080778c064a1f8d74--