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 1t2okM-007U4H-2C for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Oct 2024 09:30:42 +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 1t2okJ-0064J5-Mx for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Oct 2024 09:30:40 +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 1t2okJ-0064Ix-A7 for pgsql-hackers@lists.postgresql.org; Mon, 21 Oct 2024 09:30:39 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t2okI-002CLk-3Q for pgsql-hackers@lists.postgresql.org; Mon, 21 Oct 2024 09:30:39 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2fb4af0b6beso64543091fa.3 for ; Mon, 21 Oct 2024 02:30:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729503037; x=1730107837; 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=ZJ9Mm7o7YcKPhWZ0QRYMUoTSWVB54hXChCfHNYoCjBU=; b=lbShGwbp71MMzSAaKEnQeoMjUjf9PSmYx0D+dulLDaeLm3shB32fv8PNLE9dx/SNdP 2bN8tEb7Xs738dEYz3+3aOh7ll9DYmLeBofgG3XJLlbFI0s1EdPHMy89JUvhwAp7qH7/ xVP6hpDfT8jbJ1fb9QAahWdAfdWTUDn9l6oQ3g7nMBMBhlvgN11UHmGMBrOKUsR1ZWF+ CgsMo4KGcZLlbEJEzNrdHmlaOBmTpZh30TvcQgVGeUStHqHGX8d1NrznmYtzQhJoDmqi WkRv7lBCyi0/tdoCWCoMOBRh2jCmMLqGSSBiT4JlB751h731LyRNR0dyl9yUGdYwa7JB 8OGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729503037; x=1730107837; 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=ZJ9Mm7o7YcKPhWZ0QRYMUoTSWVB54hXChCfHNYoCjBU=; b=NMZnGTY+iFdvScM6U0e0pp8cEhPFd2BQM4ubOcLM3+PgKZOcn9BNrG80yG0O1rvRq7 oG088EB+SxcNnQl8UD9oBeCSVIuJ8615NinE+ovk8SLfJ3YpL3nkhYT4i6L0C5l+ic0P rHY8MFxfasRq0Qih6Q1AO2b/9J9MAb1rmiu7Y/pXD/WLxizgBIz6dn9E7Pd9EkzQkJi2 B+Rstk4P/LjitOYKjtBSTyhFF05/eD9n+1IQwCcHfB/VQT2jGsU87Illnn9CPC9WcLLY VQJZ8UfA83LYCzHiHQXkUJvANwhx13M6lPB5w19kVA5uIAB3c7O4/fPpAagHO7nSWNzq e9eQ== X-Forwarded-Encrypted: i=1; AJvYcCV4yRTLIdYd0IXUM2RNQsvn3qfEv8KA77aRseWiZEQG8lCTQkuhFIOt3VhKk2FgRbyd4gn0Efr7dqfakzmL@lists.postgresql.org X-Gm-Message-State: AOJu0YzRz/STNQXJk1Zua165EIprRTtQx2bpfL5WF7hHF5NRVcmbaD4S kBOhY++dzygH3FM4u74/CPqDU3kUFRsCQL2h7qtBv+aSJlM1FrJVn/v5eiWvD0LUBr/3E/fT2kd rZ9jq8qPVWkhXiaY6Jc6au8cHNf0= X-Google-Smtp-Source: AGHT+IEYr+nfE1wXs6OpHP1FiGtF7+j2WOEVGLPLI8Np/ymDg/gK1Ga78RJRi0MoBFgFu6VB9As5kyJiGg/5S0g7NBU= X-Received: by 2002:a2e:be27:0:b0:2fb:60d8:7422 with SMTP id 38308e7fff4ca-2fb8320f963mr80957511fa.42.1729503035896; Mon, 21 Oct 2024 02:30:35 -0700 (PDT) MIME-Version: 1.0 References: <20240129172858.ccb6c77c3be95a295e2b2b44@sraoss.co.jp> <04bf425ad1b15a4daefe96c478a5253b@oss.nttdata.com> <20240206191937.72eaf0ccc20cfea37944b422@sraoss.co.jp> <76da9fcc-93c5-4053-872e-12932a95356d@uni-muenster.de> <6eac5b45-7f45-4c7a-aae1-e90db8be2e08@uni-muenster.de> <3d6b5885-16a1-475d-b56f-41701c48d9d4@uni-muenster.de> In-Reply-To: From: Kirill Reshke Date: Mon, 21 Oct 2024 14:30:24 +0500 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: jian he Cc: Jim Jones , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000017e4530624f94e04" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000017e4530624f94e04 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! On Thu, 12 Sept 2024 at 15:13, jian he wrote: > > On Mon, Sep 9, 2024 at 10:34=E2=80=AFPM Jim Jones wrote: > > > > > > Hi there > > > > On 26.08.24 02:00, jian he wrote: > > > hi all. > > > patch updated. > > > simplified the code a lot. > > > > > > idea is same: > > > COPY t_on_error_null FROM STDIN WITH (on_error set_to_null); > > > > > > If the STDIN number of columns is the same as the target table, then > > > InputFunctionCallSafe > > > call failure will make that column values be null. > > > > > > > > > If the STDIN number of columns is not the same as the target table, t= hen error > > > ERROR: missing data for column \"%s\" > > > ERROR: extra data after last expected column > > > which is status quo. > > > > I wanted to give it another try, but the patch does not apply ... > > > > here we are. > please check the attached file. Hi! v4 no longer applies. It now conflicts with e7834a1a251d4a28245377f383ff20a657ba8262. Also, there were review comments. So, I decided to rebase. Review comments from [1] applied partially. I didn't do "and continue with" -> "and will continue with" substitution as suggested, because the first options are used for `ignore` doc one lines above. So, I just don't know how to change this correctly. We definitely don't want two separate forms of saying the same in 2 consecutive lines. I did small changes: 1) added `-- tests for set_to_null` option in the test script akin to 4ac2a9beceb10d44806d2cf157d5a931bdade39e 2) I rephrased Allow "stop", or "ignore", "set_to_null" values to Allow "stop", "ignore", "set_to_null" values PFA. [1] https://www.postgresql.org/message-id/b26e9c6c-75bf-45ea-8aea-346dda3bd= 445%40uni-muenster.de --=20 Best regards, Kirill Reshke --00000000000017e4530624f94e04 Content-Type: application/octet-stream; name="v5-0001-on_error-set_to_null.patch" Content-Disposition: attachment; filename="v5-0001-on_error-set_to_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2itfswu0 RnJvbSA0NDQwNmQ0MjZmNDIxNTA4NzI5YjA4YjgwMTRlY2NiZDZlYzNlNmM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTIgU2VwIDIwMjQgMTc6MDc6MDIgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 XSBvbl9lcnJvciBzZXRfdG9fbnVsbAoKZXh0ZW50ICJvbl9lcnJvciBhY3Rpb24iLCBpbnRyb2R1 Y2UgbmV3IG9wdGlvbjogb25fZXJyb3Igc2V0X3RvX251bGwuCgpEdWUgdG8gY3VycmVudCBncmFt bWFyLCB3ZSBjYW5ub3QgdXNlICJvbl9lcnJvciBudWxsIiwKc28gSSBjaG9vc2Ugb25fZXJyb3Ig c2V0X3RvX251bGwuCgphbnkgZGF0YSB0eXBlIGNvbnZlcnNpb24gZXJyb3JzIHdoaWxlIHRoZSBD T1BZIEZST00gcHJvY2VzcyB3aWxsIHNldCB0aGF0IGNvbHVtbiB2YWx1ZSB0byBiZSBOVUxMLgp0 aGlzIHdpbGwgb25seSB3b3JrIHdpdGggQ09QWSBGUk9NIGFuZCBub24tYmluYXJ5IGZvcm1hdC4K Ckhvd2V2ZXIgdGhpcyB3aWxsIHJlc3BlY3QgdGhlIG5vdC1udWxsIGNvbnN0cmFpbnQsIG1lYW5p bmcsIGlmIHlvdSBhY3R1YWxseSBjb252ZXJ0ZWQgZXJyb3IgdG8gbnVsbCwKYnV0IHRoZSBjb2x1 bW4gaGFzIG5vdC1udWxsIGNvbnN0cmFpbnQsIG5vdC1udWxsIGNvbnN0cmFpbnQgdmlvbGF0aW9u IEVSUk9SIHdpbGwgYmUgcmFpc2VkLgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9D QUtGUXV3YXd5MWU2WVI0Uz1qK3k3cFhxZ19EdzFXQlZyZ3ZmPUJQM2QxX2FTZmVfK1FAbWFpbC5n bWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgfCAgNCArKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICB8ICA5ICsrLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMgfCAxMSArKysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaCAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0 ICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkyLnNxbCAgICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBj aGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmlu ZGV4IDgzOTQ0MDJmMDk2Li43ZjJiMGU0MDY2MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTM5Niw2ICsz OTYsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBBbiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXJyb3JfYWN0aW9uPC9yZXBsYWNlYWJsZT4gdmFsdWUgb2YKICAgICAg IDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+IG1lYW5zIGZhaWwgdGhlIGNvbW1hbmQsIHdoaWxlCiAg ICAgICA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG1lYW5zIGRpc2NhcmQgdGhlIGlucHV0IHJv dyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmUuCisgICAgICA8bGl0ZXJhbD5zZXRfdG9f bnVsbDwvbGl0ZXJhbD4gbWVhbnMgdGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgc2V0IHRvIDxsaXRl cmFsPm51bGw8L2xpdGVyYWw+IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZS4KICAgICAg IFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAg ICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IDM0ODViYTg2NjNmLi42MDVjN2M2MGYxOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHkuYwpAQCAtNDAzLDEyICs0MDMsMTQgQEAgZGVmR2V0Q29weU9uRXJyb3JD aG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRlICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmLT5sb2NhdGlvbikpKTsKIAogCS8qCi0J ICogQWxsb3cgInN0b3AiLCBvciAiaWdub3JlIiB2YWx1ZXMuCisJICogQWxsb3cgInN0b3AiLCAi aWdub3JlIiwgInNldF90b19udWxsIiB2YWx1ZXMuCiAJICovCiAJaWYgKHBnX3N0cmNhc2VjbXAo c3ZhbCwgInN0b3AiKSA9PSAwKQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9TVE9QOwogCWlmIChw Z19zdHJjYXNlY21wKHN2YWwsICJpZ25vcmUiKSA9PSAwKQogCQlyZXR1cm4gQ09QWV9PTl9FUlJP Ul9JR05PUkU7CisJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInNldF90b19udWxsIikgPT0gMCkK KwkJcmV0dXJuIENPUFlfT05fRVJST1JfTlVMTDsKIAogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jCmluZGV4IDA3Y2JkNWQyMmI4Li5kZGUzMDk4OTAwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkK IAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFj ay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJP Ul9TVE9QICYmCisJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lH Tk9SRSAmJgogCQljc3RhdGUtPm51bV9lcnJvcnMgPiAwICYmCiAJCWNzdGF0ZS0+b3B0cy5sb2df dmVyYm9zaXR5ID49IENPUFlfTE9HX1ZFUkJPU0lUWV9ERUZBVUxUKQogCQllcmVwb3J0KE5PVElD RSwKQEAgLTE0NzQsMTAgKzE0NzQsMTEgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOwogCiAJCS8q Ci0JCSAqIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05PUkUuIFdl J2xsIGFkZCBvdGhlcgotCQkgKiBvcHRpb25zIGxhdGVyCisJCSAqIEN1cnJlbnRseSB3ZSBvbmx5 IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05PUkUsIENPUFlfT05fRVJST1JfTlVMTC4KKwkJICog V2UnbGwgYWRkIG90aGVyIG9wdGlvbnMgbGF0ZXIKIAkJICovCi0JCWlmIChjc3RhdGUtPm9wdHMu b25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCWlmIChjc3RhdGUtPm9wdHMub25f ZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgfHwKKwkJCWNzdGF0ZS0+b3B0cy5vbl9lcnJv ciA9PSBDT1BZX09OX0VSUk9SX05VTEwpCiAJCQljc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193 YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weWZyb21wYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5j CmluZGV4IDY1NGZlY2IxYjE0Li44YWI0MmRiY2VlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weWZyb21wYXJzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tcGFyc2UuYwpAQCAtOTYxLDYgKzk2MSwxNyBAQCBOZXh0Q29weUZyb20oQ29weUZyb21TdGF0 ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJCXsKIAkJCQlBc3NlcnQoY3N0YXRl LT5vcHRzLm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RPUCk7CiAKKwkJCQlpZiAoY3N0YXRl LT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfTlVMTCkKKwkJCQl7CisJCQkJCXZhbHVl c1ttXSA9IChEYXR1bSkgMDsKKwkJCQkJbnVsbHNbbV0gPSB0cnVlOworCQkJCQkvKgorCQkJCQkg KiBzZXQgZXJyb3Jfb2NjdXJyZWQgdG8gZmFsc2UsIHNvIG5leHQKKwkJCQkJICogSW5wdXRGdW5j dGlvbkNhbGxTYWZlIGNhbGwgYmVoYXZlIHNhbmUuCisJCQkJCSovCisJCQkJCWNzdGF0ZS0+ZXNj b250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCQkJCQljb250aW51ZTsKKwkJCQl9CiAJ CQkJY3N0YXRlLT5udW1fZXJyb3JzKys7CiAKIAkJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJi b3NpdHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXgg NDAwMmE3ZjUzODIuLjA1MWNhMTJkMTA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC0zOCw2ICszOCw3 IEBAIHR5cGVkZWYgZW51bSBDb3B5T25FcnJvckNob2ljZQogewogCUNPUFlfT05fRVJST1JfU1RP UCA9IDAsCQkvKiBpbW1lZGlhdGVseSB0aHJvdyBlcnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZX09O X0VSUk9SX0lHTk9SRSwJCS8qIGlnbm9yZSBlcnJvcnMgKi8KKwlDT1BZX09OX0VSUk9SX05VTEws CQkJLyogc2V0IGVycm9yIGZpZWxkIHRvIG51bGwgKi8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CmluZGV4IDY0ZWEzM2FlYWU4Li41NWVj ZTE4ZjliZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKQEAgLTgxLDYgKzgxLDEw IEBAIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7 CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkg eCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGlu IChvbl9lcnJvciBzZXRfdG9fbnVsbCwgb25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBj b25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucworTElORSAxOiBDT1BZIHggZnJvbSBzdGRp biAob25fZXJyb3Igc2V0X3RvX251bGwsIG9uX2Vycm9yIHNldF90b19udWwuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBz dGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogRVJS T1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJv bSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmIuLi4KQEAg LTkyLDYgKzk2LDggQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gn KTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBCSU5BUlkgbW9kZQogQ09QWSB4IGZy b20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJPUjogIG9ubHkg T05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCitDT1BZIHggZnJvbSBzdGRp biAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBvbmx5IE9O X0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZQogQ09QWSB4IGZyb20gc3RkaW4g KG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBPTl9FUlJPUiAidW5zdXBwb3J0 ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1 bnN1cHBvcnRlZCk7CkBAIC0xMjQsNiArMTMwLDEwIEBAIENPUFkgeCB0byBzdGRvdXQgKGZvcm1h dCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBPTl9FUlJPUiBj YW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KIExJTkUgMTogQ09QWSB4IHRvIHN0ZG91dCAoZm9y bWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitDT1BZIHggdG8gc3RkaW4gKG9uX2Vycm9yIHNldF90b19u dWxsKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8K K0xJTkUgMTogQ09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5z dXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIExPR19WRVJCT1NJVFkgInVuc3VwcG9ydGVkIiBub3Qg cmVjb2duaXplZAogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSB1bnN1 cHBvcnRlZCk7CkBAIC03NjksNiArNzc5LDI0IEBAIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9l cnIKIE5PVElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0 eSBhdCBsaW5lIDggZm9yIGNvbHVtbiAiayI6ICJhIgogQ09OVEVYVDogIENPUFkgY2hlY2tfaWdu X2VycgogTk9USUNFOiAgNiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29t cGF0aWJpbGl0eQorY3JlYXRlIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBhcyBpbnQgbm90IG51bGwg Y2hlY2sodmFsdWUgPiAwKTsKK0NSRUFURSBUQUJMRSB0X29uX2Vycm9yX251bGwgKGEgZF9pbnRf bm90X251bGwsIGMgaW50IG5vdCBudWxsLCBiIGludCk7CistLWZhaWwKK0NPUFkgdF9vbl9lcnJv cl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBu dWxsIHZhbHVlIGluIGNvbHVtbiAiYyIgb2YgcmVsYXRpb24gInRfb25fZXJyb3JfbnVsbCIgdmlv bGF0ZXMgbm90LW51bGwgY29uc3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMg KDExLCBudWxsLCAxMikuCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMTog IjExCWEJMTIiCistLW9rCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9u X2Vycm9yIHNldF90b19udWxsKTsKK3NlbGVjdCAqIGZyb20gdF9vbl9lcnJvcl9udWxsOworIGEg fCBjICB8IGIgIAorLS0tKy0tLS0rLS0tLQorICAgfCAxMSB8IDEzCisgICB8IDExIHwgMTQKKygy IHJvd3MpCisKK2Ryb3AgdGFibGUgdF9vbl9lcnJvcl9udWxsOworZHJvcCBkb21haW4gZF9pbnRf bm90X251bGw7CiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Igb3B0aW9uIHdpdGggbG9nX3ZlcmJvc2l0 eSBhbmQgbnVsbCBjb25zdHJhaW50IHZpYSBkb21haW4KIENSRUFURSBET01BSU4gZGNoZWNrX2ln bl9lcnIyIHZhcmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JFQVRFIFRBQkxFIGNoZWNrX2lnbl9lcnIy IChuIGludCwgbSBpbnRbXSwgayBpbnQsIGwgZGNoZWNrX2lnbl9lcnIyKTsKQEAgLTgxMyw2ICs4 NDEsMjggQEAgRVJST1I6ICBza2lwcGVkIG1vcmUgdGhhbiBSRUpFQ1RfTElNSVQgKDMpIHJvd3Mg ZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2ln bl9lcnIsIGxpbmUgNSwgY29sdW1uIG46ICIiCiBDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJ TiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCA0KTsKIE5PVElDRTogIDQgcm93 cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKKy0tIHRlc3Rz IGZvciBvbl9lcnJvciBzZXRfdG9fbnVsbCBvcHRpb24KK3RydW5jYXRlIGNoZWNrX2lnbl9lcnI7 CitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVs bCk7CitccHNldCBudWxsIE5VTEwKK1NFTEVDVCAqIEZST00gY2hlY2tfaWduX2VycjsKKyAgbiAg IHwgIG0gIHwgIGsgICAKKy0tLS0tLSstLS0tLSstLS0tLS0KKyAgICAxIHwgezF9IHwgTlVMTAor ICAgIDIgfCB7Mn0gfCAgICAxCisgICAgMyB8IHszfSB8ICAgIDIKKyAgICA0IHwgezR9IHwgTlVM TAorIE5VTEwgfCB7NX0gfCBOVUxMCisoNSByb3dzKQorCistLXNob3VsZCBmYWlsLgorQ09QWSBj aGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0 X3RvX251bGwpOworRVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiayIKK0NPTlRFWFQ6 ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgMSwgY29sdW1uIG06ICIiCistLXNob3VsZCBmYWls LgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25f ZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0 ZWQgY29sdW1uCitDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDE6ICIxLHsxfSwx LDEiCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rl c3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKaW5kZXggNDUyNzM1NTdjZTAuLjhkOTc0ZjRkOWE5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weTIuc3FsCkBAIC02NywxMiArNjcsMTQgQEAgQ09QWSB4IGZyb20gc3Rk aW4gKGZvcmNlX251bGwgKGEpLCBmb3JjZV9udWxsIChiKSk7CiBDT1BZIHggZnJvbSBzdGRpbiAo Y29udmVydF9zZWxlY3RpdmVseSAoYSksIGNvbnZlcnRfc2VsZWN0aXZlbHkgKGIpKTsKIENPUFkg eCBmcm9tIHN0ZGluIChlbmNvZGluZyAnc3FsX2FzY2lpJywgZW5jb2RpbmcgJ3NxbF9hc2NpaScp OwogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3IgaWdub3JlKTsK K0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgb25fZXJyb3Igc2V0X3Rv X251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3Zl cmJvc2l0eSB2ZXJib3NlKTsKIAogLS0gaW5jb3JyZWN0IG9wdGlvbnMKIENPUFkgeCBmcm9tIHN0 ZGluIChmb3JtYXQgQklOQVJZLCBkZWxpbWl0ZXIgJywnKTsKIENPUFkgeCBmcm9tIHN0ZGluIChm b3JtYXQgQklOQVJZLCBudWxsICd4Jyk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFS WSwgb25fZXJyb3IgaWdub3JlKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBv bl9lcnJvciBzZXRfdG9fbnVsbCk7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBw b3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZShhKSk7 CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX3F1b3RlICopOwpAQCAtODcs NiArODksNyBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX251bGwgKik7 CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0 byBzdGRvdXQgKGZvcm1hdCBDU1YsIGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChm b3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CitDT1BZIHggdG8gc3RkaW4gKG9u X2Vycm9yIHNldF90b19udWxsKTsKIENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IHVu c3VwcG9ydGVkKTsKIENPUFkgeCBmcm9tIHN0ZGluIHdpdGggKHJlamVjdF9saW1pdCAxKTsKIENP UFkgeCBmcm9tIHN0ZGluIHdpdGggKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDApOwpA QCAtNTM0LDYgKzUzNywyNCBAQCBhCXsyfQkyCiA4CXs4fQk4CiBcLgogCitjcmVhdGUgZG9tYWlu IGRfaW50X25vdF9udWxsIGFzIGludCBub3QgbnVsbCBjaGVjayh2YWx1ZSA+IDApOworQ1JFQVRF IFRBQkxFIHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3RfbnVsbCwgYyBpbnQgbm90IG51bGws IGIgaW50KTsKKworLS1mYWlsCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIHNldF90b19udWxsKTsKKzExCWEJMTIKK1wuCisKKy0tb2sKK0NPUFkgdF9vbl9l cnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworLTEJMTEJ MTMKK2EJMTEJMTQKK1wuCisKK3NlbGVjdCAqIGZyb20gdF9vbl9lcnJvcl9udWxsOworZHJvcCB0 YWJsZSB0X29uX2Vycm9yX251bGw7Citkcm9wIGRvbWFpbiBkX2ludF9ub3RfbnVsbDsKKwogLS0g dGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51bGwgY29u c3RyYWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2YXJjaGFy KDE1KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQsIG0gaW50 W10sIGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC01ODgsNiArNjA5LDI5IEBAIGEJezd9 CTcKIDEwCXsxMH0JMTAKIFwuCiAKKy0tIHRlc3RzIGZvciBvbl9lcnJvciBzZXRfdG9fbnVsbCBv cHRpb24KK3RydW5jYXRlIGNoZWNrX2lnbl9lcnI7CitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CisxCXsxfQlhCisyCXsyfQkxCiszCXsz fQkyCis0CXs0fQliCithCXs1fQljCitcLgorCitccHNldCBudWxsIE5VTEwKK1NFTEVDVCAqIEZS T00gY2hlY2tfaWduX2VycjsKKworLS1zaG91bGQgZmFpbC4KK0NPUFkgY2hlY2tfaWduX2VyciBG Uk9NIFNURElOIFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEs CitcLgorCistLXNob3VsZCBmYWlsLgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lU SCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X3RvX251bGwpOworMSx7MX0sMSwxCitcLgor CiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7 Ci0tIAoyLjM0LjEKCg== --00000000000017e4530624f94e04--