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 1rW9Q1-003oxl-2U for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Feb 2024 06:22:25 +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 1rW9Pz-000Ovs-U3 for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Feb 2024 06:22:23 +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.94.2) (envelope-from ) id 1rW9Pz-000Ovk-CG for pgsql-hackers@lists.postgresql.org; Sat, 03 Feb 2024 06:22:23 +0000 Received: from mail-oi1-x22b.google.com ([2607:f8b0:4864:20::22b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rW9Pw-004pJR-6S for pgsql-hackers@lists.postgresql.org; Sat, 03 Feb 2024 06:22:22 +0000 Received: by mail-oi1-x22b.google.com with SMTP id 5614622812f47-3bda741ad7dso2319779b6e.1 for ; Fri, 02 Feb 2024 22:22:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706941339; x=1707546139; 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=nnp7axIc3uavg/8twq/GFkGIojdeK3vH7JbDT5h229A=; b=BofAIPHYH13qTLBXfHYonyk/xRtBLtu1H+ykLLGc86b+h/NWJ8UW2a+ptEN08DJ104 5XVWihOUWSDBV2gLNW5qXNdBQgY+Zy+fIn95lbgGPUzR/C/YLuNdr09DMwgXDBuHv+iF xnWAXLugQsk6NSjq9yq0EmPYvq+99BC7xuqBYfxLeZXSwoHWZU3HK1ZdoG5wLa4VwECa wjqpZ8QjP9Ijq0Oc9W5IbeTCHHIphocei5mgH75WcT7ufj2mBDhVwnACb6gojvpVcboo ahhameD0PnSNlhVRNWd49uK5yM3wFXON/89PmrNTUvIoD4c5sbvkvUalQVTyOrokDxtM 3cPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706941339; x=1707546139; 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=nnp7axIc3uavg/8twq/GFkGIojdeK3vH7JbDT5h229A=; b=pkmRbeCfm5yaXRXOaza+DHo0jUeTNtkychM2gW7A2EyZAERt+VQRh8heAxtMWXsuPs VvanEPhdEYZFvCzUTQfyFOK2MAn1R5R1tlXlcrQpmYkvZluspBfEIhWXix3wRpc+xpAg mkEDBXoFAhMC4w9GdJiuKiwN1heP1N5U6qFilj0vndZpOmGVusY6KRE76/ac1zn4eZGi AVCmG3YqJdZJhzf66NMjciDwXuj7DtVV2p2KbfsPhXpsJwJ+xLWX5Uzxi1mC9qkt+BYo vbK/wcMWONpTmqVxQP0CzaRsWfzdnCUqZS6jd4iODmhgYE248iW47TrkrhuxK90dr5Be yDVg== X-Gm-Message-State: AOJu0YzzJRQPqKjnBs7PjCXGCxt7OdjgeY/UvIuE18cePomS8eZJKf8B K6Yf0VCx5EtcgTBz07r1XvHdqqIkvwku8n2oQI5OqsmM/RRSU6FMWbfe+JDNGsmSM9x9FAjZLdd fkx7UNMkcsMQZTCE4HERaNVeqO1A= X-Google-Smtp-Source: AGHT+IGsJfvDhEreabD9lu1saNCi+iJgatVWJuokrj0qKkPcIWbvZHe1ha1pRWVkO6OPs6pBAJBg7dGXjIQ8DNCx7Yo= X-Received: by 2002:aca:d13:0:b0:3bd:c44d:e561 with SMTP id 19-20020aca0d13000000b003bdc44de561mr9528606oin.35.1706941339432; Fri, 02 Feb 2024 22:22:19 -0800 (PST) MIME-Version: 1.0 References: <20240129172858.ccb6c77c3be95a295e2b2b44@sraoss.co.jp> In-Reply-To: <20240129172858.ccb6c77c3be95a295e2b2b44@sraoss.co.jp> From: jian he Date: Sat, 3 Feb 2024 14:22:08 +0800 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Yugo NAGATA Cc: "David G. Johnston" , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000311e780610744067" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000311e780610744067 Content-Type: text/plain; charset="UTF-8" The idea of on_error is to tolerate errors, I think. if a column has a not null constraint, let it cannot be used with (on_error 'null') Based on this, I've made a patch. based on COPY Synopsis: ON_ERROR 'error_action' on_error 'null', the keyword NULL should be single quoted. demo: COPY check_ign_err FROM STDIN WITH (on_error 'null'); 1 {1} a 2 {2} 1 3 {3} 2 4 {4} b a {5} c \. \pset null NULL SELECT * FROM check_ign_err; n | m | k ------+-----+------ 1 | {1} | NULL 2 | {2} | 1 3 | {3} | 2 4 | {4} | NULL NULL | {5} | NULL --000000000000311e780610744067 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-introduce-copy-on_error-null-option.patch" Content-Disposition: attachment; filename="v1-0001-introduce-copy-on_error-null-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls5osbhg0 RnJvbSAxOWFmYTk0MmFmMjJmZDNkMmVkMjQzNmM2YmM3Y2UwMmYwMGJiNTcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMyBGZWIgMjAyNCAxNDowNDowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEg MS8xXSBpbnRyb2R1Y2UgY29weSBvbl9lcnJvciAnbnVsbCcgb3B0aW9uCgpvbl9lcnJvciAnbnVs bCcsIG51bGwgbmVlZHMgc2luZ2xlIHF1b3RlZC4KYW55IGRhdGEgdHlwZSBjb252ZXJzaW9uIGVy cm9yIHdpbGwgdHJlYXQgdGhhdCBjb2x1bW4gdmFsdWUgdG8gYmUgTlVMTC4KaXQgd2lsbCBub3Qg d29yayB3aXRoIGNvbHVtbiBoYXZlIG5vdCBudWxsIGNvbnN0cmFpbnQsCndlIGNoZWNrIHRoaXMg YXQgQmVnaW5Db3B5RnJvbS4KCmRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L21lc3NhZ2UtaWQvQ0FLRlF1d2F3eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1CUDNkMV9h U2ZlXytRQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAg ICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICB8IDI4ICsrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyB8 IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oICAgICAgICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQg IHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHkyLnNxbCAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDcgZmlsZXMg Y2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApp bmRleCA1NTc2NGZjMS4uZDNjNGViZGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29w eS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0zOTAsNiArMzkwLDcg QEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgQW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+IHZhbHVlIG9mCiAgICAgICA8bGl0 ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRoZSBjb21tYW5kLCB3aGlsZQogICAgICAg PGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5k IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLgorICAgICAgPGxpdGVyYWw+bnVsbDwvbGl0ZXJh bD4gbWVhbnMgdGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgPGxpdGVyYWw+bnVsbDwvbGl0ZXJhbD4g YW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxp dGVyYWw+c3RvcDwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMKaW5kZXggY2MwNzg2YzYuLjAxY2U0N2IwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC00MjIs NiArNDIyLDggQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0 YXRlICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJcmV0dXJuIENPUFlfT05fRVJST1JfU1RPUDsK IAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiaWdub3JlIikgPT0gMCkKIAkJcmV0dXJuIENPUFlf T05fRVJST1JfSUdOT1JFOworCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJudWxsIikgPT0gMCkK KwkJcmV0dXJuIENPUFlfT05fRVJST1JfTlVMTDsKIAogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jCmluZGV4IDFmZTcwYjkxLi5mNGM1NzA0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBA IC0xMDA1LDYgKzEwMDUsNyBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJCSAq IGluZm9ybWF0aW9uIGFjY29yZGluZyB0byBPTl9FUlJPUi4KIAkJCSAqLwogCQkJaWYgKGNzdGF0 ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCXsKIAogCQkJCS8q CiAJCQkJICogSnVzdCBtYWtlIEVycm9yU2F2ZUNvbnRleHQgcmVhZHkgZm9yIHRoZSBuZXh0IE5l eHRDb3B5RnJvbS4KQEAgLTEwMTMsMTEgKzEwMTQsMTggQEAgQ29weUZyb20oQ29weUZyb21TdGF0 ZSBjc3RhdGUpCiAJCQkJICovCiAJCQkJY3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVk ID0gZmFsc2U7CiAKLQkJCS8qIFJlcG9ydCB0aGF0IHRoaXMgdHVwbGUgd2FzIHNraXBwZWQgYnkg dGhlIE9OX0VSUk9SIGNsYXVzZSAqLwotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DT1BZX1RVUExFU19TS0lQUEVELAotCQkJCQkJCQkJCSArK3NraXBwZWQpOworCQkJ CS8qIFJlcG9ydCB0aGF0IHRoaXMgdHVwbGUgd2FzIHNraXBwZWQgYnkgdGhlIE9OX0VSUk9SIGNs YXVzZSAqLworCQkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ09QWV9U VVBMRVNfU0tJUFBFRCwKKwkJCQkJCQkJCQkJKytza2lwcGVkKTsKIAotCQkJY29udGludWU7CisJ CQkJY29udGludWU7CisJCQl9CisJCQkvKgorCQkJICogSnVzdCBtYWtlIEVycm9yU2F2ZUNvbnRl eHQgcmVhZHkgZm9yIHRoZSBuZXh0IE5leHRDb3B5RnJvbS4KKwkJCSAqCisJCQkqLworCQkJaWYg KGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwpCisJCQkJY3N0YXRl LT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CiAJCX0KIAogCQlFeGVjU3RvcmVW aXJ0dWFsVHVwbGUobXlzbG90KTsKQEAgLTEzMTMsNiArMTMyMSw3IEBAIENvcHlGcm9tKENvcHlG cm9tU3RhdGUgY3N0YXRlKQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2 aW91czsKIAogCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9Q ICYmCisJCWNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX05VTEwgJiYKIAkJ Y3N0YXRlLT5udW1fZXJyb3JzID4gMCkKIAkJZXJlcG9ydChOT1RJQ0UsCiAJCQkJZXJybXNnX3Bs dXJhbCgiJWxsdSByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxp dHkiLApAQCAtMTQ2OCw2ICsxNDc3LDggQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCSAqLwogCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1Jf SUdOT1JFKQogCQkJY3N0YXRlLT5lc2NvbnRleHQtPmRldGFpbHNfd2FudGVkID0gZmFsc2U7CisJ CWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwpCisJ CQljc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQog CQljc3RhdGUtPmVzY29udGV4dCA9IE5VTEw7CkBAIC0xNjIxLDYgKzE2MzIsMTUgQEAgQmVnaW5D b3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCkKIAkJ CWNvbnRpbnVlOwogCisJCS8qCisJCSAqIHdlIGNhbiBzcGVjaWZ5IG9uX2Vycm9yICdudWxsJywg YnV0IGl0IGNhbiBvbmx5IGFwcGx5IHRvIGNvbHVtbnMKKwkJICogZG9uJ3QgaGF2ZSBub3QgbnVs bCBjb25zdHJhaW50LgorCQkqLworCQlpZiAoYXR0LT5hdHRub3RudWxsICYmIGNzdGF0ZS0+b3B0 cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0JBRF9DT1BZX0ZJTEVfRk9STUFUKSwKKwkJCQkJIGVycm1zZygi Y29weSBvbl9lcnJvciAnbnVsbCcgY2Fubm90IGJlIHVzZWQgd2l0aCBub3QgbnVsbCBjb25zdHJh aW50IGNvbHVtbiIpKSk7CisKIAkJLyogRmV0Y2ggdGhlIGlucHV0IGZ1bmN0aW9uIGFuZCB0eXBp b3BhcmFtIGluZm8gKi8KIAkJaWYgKGNzdGF0ZS0+b3B0cy5iaW5hcnkpCiAJCQlnZXRUeXBlQmlu YXJ5SW5wdXRJbmZvKGF0dC0+YXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMKaW5kZXggN2NhY2QwYjcuLjk0NzVhOWRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21w YXJzZS5jCkBAIC04ODEsNiArODgxLDcgQEAgTmV4dENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0 YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJCWludAkJCWZsZGN0OwogCQlpbnQJCQlmaWVs ZG5vOwogCQljaGFyCSAgICpzdHJpbmc7CisJCWJvb2wJCWVycm9yX2hhcHBlbmVkID0gZmFsc2U7 CiAKIAkJLyogcmVhZCByYXcgZmllbGRzIGluIHRoZSBuZXh0IGxpbmUgKi8KIAkJaWYgKCFOZXh0 Q29weUZyb21SYXdGaWVsZHMoY3N0YXRlLCAmZmllbGRfc3RyaW5ncywgJmZsZGN0KSkKQEAgLTk2 OCwxNCArOTY5LDM2IEBAIE5leHRDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNv bnRleHQgKmVjb250ZXh0LAogCQkJCQkJCQkJCQkoTm9kZSAqKSBjc3RhdGUtPmVzY29udGV4dCwK IAkJCQkJCQkJCQkJJnZhbHVlc1ttXSkpCiAJCQl7Ci0JCQkJY3N0YXRlLT5udW1fZXJyb3JzKys7 Ci0JCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZ X09OX0VSUk9SX05VTEwpCisJCQkJeworCisJCQkJCXZhbHVlc1ttXSA9IChEYXR1bSkgMDsKKwkJ CQkJbnVsbHNbbV0gPSB0cnVlOworCQkJCQkvKiBoZXJlLCB3ZSBuZWVkIHNldCBlcnJvcl9vY2N1 cnJlZCB0byBmYWxzZSwgc28gQ09QWSB3aWxsIGJlIGNvbnRpbnVlICovCisJCQkJCWNzdGF0ZS0+ ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCisJCQkJCWlmICghZXJyb3JfaGFw cGVuZWQpCisJCQkJCQllcnJvcl9oYXBwZW5lZCA9IHRydWU7CisJCQkJfQorCQkJCWVsc2UKKwkJ CQl7CisJCQkJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOworCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9 CisKIAkJCX0KIAogCQkJY3N0YXRlLT5jdXJfYXR0bmFtZSA9IE5VTEw7CiAJCQljc3RhdGUtPmN1 cl9hdHR2YWwgPSBOVUxMOwogCQl9CiAKKwkJLyogYWNjdW1hdGUgbnVtX2Vycm9ycy4gb25lIHJv dyBtdWx0aXBsZSBlcnJvcnMgb25seSBjb3VudCAxKi8KKwkJaWYgKGVycm9yX2hhcHBlbmVkKQor CQl7CisJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKwkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJv cl9vY2N1cnJlZCA9IHRydWU7CisJCX0KKwogCQlBc3NlcnQoZmllbGRubyA9PSBhdHRyX2NvdW50 KTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IGIzZGEzY2IwLi42YzM3MzNmYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NvcHkuaApAQCAtMzgsNiArMzgsNyBAQCB0eXBlZGVmIGVudW0gQ29weU9uRXJyb3JD aG9pY2UKIHsKIAlDT1BZX09OX0VSUk9SX1NUT1AgPSAwLAkJLyogaW1tZWRpYXRlbHkgdGhyb3cg ZXJyb3JzLCBkZWZhdWx0ICovCiAJQ09QWV9PTl9FUlJPUl9JR05PUkUsCQkvKiBpZ25vcmUgZXJy b3JzICovCisJQ09QWV9PTl9FUlJPUl9OVUxMLAkJCS8qIHRyYW5zZm9ybSBlcnJvciBmaWVsZCB0 byBudWxsICovCiB9IENvcHlPbkVycm9yQ2hvaWNlOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvcHkyLm91dAppbmRleCAyNWM0MDFjZS4uMDAzOGQ2YzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weTIub3V0CkBAIC03NTEsNiArNzUxLDMxIEBAIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2ln bl9lcnIsIGxpbmUgMTogIjEJezF9IgogQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lU SCAob25fZXJyb3IgaWdub3JlKTsKIEVSUk9SOiAgZXh0cmEgZGF0YSBhZnRlciBsYXN0IGV4cGVj dGVkIGNvbHVtbgogQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VyciwgbGluZSAxOiAiMQl7MX0J MwlhYmMiCit0cnVuY2F0ZSBjaGVja19pZ25fZXJyOworQ09QWSBjaGVja19pZ25fZXJyIEZST00g U1RESU4gV0lUSCAob25fZXJyb3IgJ251bGwnKTsKK1xwc2V0IG51bGwgTlVMTAorU0VMRUNUICog RlJPTSBjaGVja19pZ25fZXJyOworICBuICAgfCAgbSAgfCAgayAgIAorLS0tLS0tKy0tLS0tKy0t LS0tLQorICAgIDEgfCB7MX0gfCBOVUxMCisgICAgMiB8IHsyfSB8ICAgIDEKKyAgICAzIHwgezN9 IHwgICAgMgorICAgIDQgfCB7NH0gfCBOVUxMCisgTlVMTCB8IHs1fSB8IE5VTEwKKyg1IHJvd3Mp CisKKy0tc2hvdWxkIGZhaWwuCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChk ZWxpbWl0ZXIgJywnLCBvbl9lcnJvciAnbnVsbCcpOworRVJST1I6ICBtaXNzaW5nIGRhdGEgZm9y IGNvbHVtbiAiayIKK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgMTogIjEsIgor LS1zaG91bGQgZmFpbC4KK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKGRlbGlt aXRlciAnLCcsIG9uX2Vycm9yICdudWxsJyk7CitFUlJPUjogIGV4dHJhIGRhdGEgYWZ0ZXIgbGFz dCBleHBlY3RlZCBjb2x1bW4KK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgMTog IjEsezF9LDEsMSIKK0NSRUFURSB0ZW1wIFRBQkxFIGNoZWNrX29uX2Vycl9udWxsIChuIGludCwg bSBpbnQgbm90IG51bGwsIGsgaW50KTsKKy0tc2hvdWxkIGZhaWwuIHNpbmNlIG5vdCBudWxsIGNv bnN0cmFpbnQgY29uZmxpY3Qgd2l0aCBvbl9lcnJvciBudWxsCitDT1BZIGNoZWNrX29uX2Vycl9u dWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgJ251bGwnKTsKK0VSUk9SOiAgY29weSBvbl9l cnJvciAnbnVsbCcgY2Fubm90IGJlIHVzZWQgd2l0aCBub3QgbnVsbCBjb25zdHJhaW50IGNvbHVt bgogLS0gY2xlYW4gdXAKIERST1AgVEFCTEUgZm9yY2V0ZXN0OwogRFJPUCBUQUJMRSB2aXN0ZXN0 OwpAQCAtNzY3LDYgKzc5Miw3IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmll d18yOwogRFJPUCBGVU5DVElPTiBmdW5faW5zdGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRB QkxFIGNoZWNrX2lnbl9lcnI7CiBEUk9QIFRBQkxFIGhhcmRfZXJyOworRFJPUCBUQUJMRSBjaGVj a19vbl9lcnJfbnVsbDsKIC0tCiAtLSBDT1BZIEZST00gLi4uIERFRkFVTFQKIC0tCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5Mi5zcWwKaW5kZXggYjVlNTQ5ZTguLmRhY2RlMjA5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIu c3FsCkBAIC01MzQsNiArNTM0LDMzIEBAIENPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIGlnbm9yZSk7CiAxCXsxfQkzCWFiYwogXC4KIAorCit0cnVuY2F0ZSBjaGVj a19pZ25fZXJyOworQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig J251bGwnKTsKKzEJezF9CWEKKzIJezJ9CTEKKzMJezN9CTIKKzQJezR9CWIKK2EJezV9CWMKK1wu CisKK1xwc2V0IG51bGwgTlVMTAorU0VMRUNUICogRlJPTSBjaGVja19pZ25fZXJyOworCistLXNo b3VsZCBmYWlsLgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVy ICcsJywgb25fZXJyb3IgJ251bGwnKTsKKzEsCitcLgorCistLXNob3VsZCBmYWlsLgorQ09QWSBj aGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3IgJ251 bGwnKTsKKzEsezF9LDEsMQorXC4KKworQ1JFQVRFIHRlbXAgVEFCTEUgY2hlY2tfb25fZXJyX251 bGwgKG4gaW50LCBtIGludCBub3QgbnVsbCwgayBpbnQpOworLS1zaG91bGQgZmFpbC4gc2luY2Ug bm90IG51bGwgY29uc3RyYWludCBjb25mbGljdCB3aXRoIG9uX2Vycm9yIG51bGwKK0NPUFkgY2hl Y2tfb25fZXJyX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciAnbnVsbCcpOworCiAtLSBj bGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7CkBAIC01 NTAsNiArNTc3LDcgQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBE Uk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hl Y2tfaWduX2VycjsKIERST1AgVEFCTEUgaGFyZF9lcnI7CitEUk9QIFRBQkxFIGNoZWNrX29uX2Vy cl9udWxsOwogCiAtLQogLS0gQ09QWSBGUk9NIC4uLiBERUZBVUxUCi0tIAoyLjM0LjEKCg== --000000000000311e780610744067--