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 1tuSjc-008ncO-0X for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Mar 2025 08:55:40 +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 1tuSjY-00Ao1u-SH for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Mar 2025 08:55:36 +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 1tuSjY-00Ao1Z-8w for pgsql-hackers@lists.postgresql.org; Tue, 18 Mar 2025 08:55:36 +0000 Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tuSjV-003TXG-2a for pgsql-hackers@postgresql.org; Tue, 18 Mar 2025 08:55:35 +0000 Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-6f6ae4846c7so53230897b3.1 for ; Tue, 18 Mar 2025 01:55:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1742288133; x=1742892933; darn=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=eAPidtk8YEdsmCxLaRiqoa7BQXOpbNk37XOHzNGH0J8=; b=SS4nhyhJUShXGHAEDhvOJ/3/QlD8CguBDYJAaaf8WGOTz+WzFgJjcA2XNbHwkPE8dc 6S7nab43mkN4xDzDoLUGUxoxK1tacNGtK5S9nND5zfdhlEutaIBbux9gj3gEmWvFjiAC +sU2tpO1fJUtt3bwAnx8c8DLL49+ThSZBDJDA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742288133; x=1742892933; 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=eAPidtk8YEdsmCxLaRiqoa7BQXOpbNk37XOHzNGH0J8=; b=vUfYBSgJaapjHZcFKxiBPtpmQILQawHtQF519T561ZCnIox/K80JViepKKM/EgeU9L nYz7z3XTDH+q7bkn956WqQ8zXSW/gns9AqbE4sXdRMfniVcAGlDwUWf382+K4hn34nhB 3CrpkdXriqNrOgdB4zXVKB8ZzHSafsiaBQRi1dHzf6BYqkydNx8YYnnuQld0XZRhMWfo c6vMtEvVQSNRrBrfoDvB9RvR0j/4Pxfg0Ld7Y8AwCXmjzoIcnJCm2MBMV+4xYdAaX89t QcMmGad4aVrUBTiTS9QkdvCoH/nH58mn8cUZosJP85hZlb0FIaehLNMQwpBmacl4gBES qB+Q== X-Forwarded-Encrypted: i=1; AJvYcCXNgFG8InDBea1kRBj5pEMEAVXJNLebJ6Ce4+spOXfBWskYbSB7VDXYPxK+rgtnyLgVwTNrFvP1egnL2sKP@postgresql.org X-Gm-Message-State: AOJu0YxoNLez7Q6APnErVqIisEWVmifD8a1/jGd3eGZwZclEdDscO6wt droKvs/hqIFEmcatPAB8l45DBdHKO5tarqahGjxxwMDrQAX8Y9PUsBRK57QBeCa6LaOYN47UdNN UJbHeWXBSdZRt7wxRd8EWEljQxCTqA2xkbLZszA== X-Gm-Gg: ASbGnctUiFVCu2zkSqHTaDqVbR0hjQqv7iMb6FJrw/EL+YCU2fOQEFFfwHIMkQEDMz8 A6oRUO9vb/Wocz7ZZgc2xleW9u3wbiFq8y4vLujaUcWPf6F416USNkWRJKQWkigCMOfbf3UkOkc +V0tb/92q7Usxn7VkW9zFmFgAvpjHZNTBv91IN X-Google-Smtp-Source: AGHT+IFuZC5bTCLzKaDlNwgj6Zz+UXkG4XnKh7bsC0inMqxEzPZ827xhCmxrCMH+XJKpX/WlU/kaOEHfH9Ea879Kmno= X-Received: by 2002:a05:690c:6b82:b0:6f9:8605:ecb5 with SMTP id 00721157ae682-6ffdcdd8ae8mr36616737b3.28.1742288133044; Tue, 18 Mar 2025 01:55:33 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Anthonin Bonnefoy Date: Tue, 18 Mar 2025 09:55:21 +0100 X-Gm-Features: AQ5f1JpxZzW-OSJ5gJAvLd2_XfqgZfPhZx14TloEkx9x9-F5F4ujZpP01AfadMs Message-ID: Subject: Re: Add Pipelining support in psql To: Michael Paquier Cc: Daniel Verite , Jelte Fennema-Nio , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000044da0806309a11ed" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000044da0806309a11ed Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 18, 2025 at 1:50=E2=80=AFAM Michael Paquier wrote: > - count > -------- > - 4 > -(1 row) > > This removal done in the regression tests was not intentional. Yes, thanks for fixing that. > How about adding a check on PIPELINE_COMMAND_COUNT when sending a > query through this path? Should we check for more scenarios with > syncs and flushes as well when sending these queries? I've added additional tests when piping queries with ';': - I've reused the same scenario with \sendpipeline: single query, multiple queries, flushes, syncs, using COPY... - Using ';' will replace the unnamed prepared statement. It's a bit different from expected as a simple query will delete the unnamed prepared statement. - Sending an extended query prepared with \bind using a ';' on a newline, though this is not specific to pipelining. The scanned semicolon triggers the call to SendQuery, processing the buffered extended query. It's a bit unusual but that's the current behaviour. --00000000000044da0806309a11ed Content-Type: application/octet-stream; name="v03-0001-psql-Allow-to-add-queries-in-an-ongoing-pipeline.patch" Content-Disposition: attachment; filename="v03-0001-psql-Allow-to-add-queries-in-an-ongoing-pipeline.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8e8kqml0 RnJvbSBhZTljZTdlNDRjMWUyNTAyNDI5OTIwYzVkMzA1ZTFmZmNkMzBiMWE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogV2VkLCA1IE1hciAyMDI1IDE0OjU1OjMzICswMTAwClN1Ympl Y3Q6IHBzcWw6IEFsbG93ICc7JyB0byBhZGQgcXVlcmllcyBpbiBhbiBvbmdvaW5nIHBpcGVsaW5l CgpDdXJyZW50bHksIHRoZSBvbmx5IHdheSB0byBwaXBlIHF1ZXJpZXMgaW4gYW4gb25nb2luZyBw aXBlbGluZSBpcyB0bwpsZXZlcmFnZSBwc3FsIG1ldGEtY29tbWFuZHMgdG8gY3JlYXRlIGV4dGVu ZGVkIHF1ZXJpZXMgc3VjaCBhcyBcYmluZCwKXHBhcnNlIG9yIFxiaW5kX25hbWVkLiBUaGlzIHBy ZXZlbnRzIHVzaW5nIHBzcWwncyBwaXBlbGluZSBvbiBleGlzdGluZwpzY3JpcHRzIGFzIGl0IHdv dWxkIHJlcXVpcmUgdG8gY29udmVydCBhbGwgcXVlcmllcyB0byB1c2UgdGhvc2UKbWV0YS1jb21t YW5kcy4KClRoaXMgcGF0Y2ggbW9kaWZpZXMgJzsnIGJlaGF2aW91ciB3aXRoaW4gYW4gYWN0aXZl IHBpcGVsaW5lIGFuZCBzZW5kIGFsbApxdWVyaWVzIGFzIGV4dGVuZGVkIHF1ZXJpZXMsIGFsbG93 aW5nIHRoZW0gdG8gYmUgcGlwZWQgaW4gYSBwaXBlbGluZS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVm L3BzcWwtcmVmLnNnbWwgICAgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmluL3BzcWwvY29tbWFu ZC5jICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9jb21tb24uYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHNxbF9waXBlbGluZS5vdXQgfCAyOTIgKysrKysrKysrKysrKysrKysrLS0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BzcWxfcGlwZWxpbmUuc3FsICAgICAgfCAxMzkgKysrKysrKysrLQogNSBmaWxl cyBjaGFuZ2VkLCA0MjkgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCmluZGV4IGNkZGY2ZTA3NTMxLi4yNzYzNDg2ZTI2OCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1y ZWYuc2dtbApAQCAtMzY5OCwxNCArMzY5OCwxOSBAQCB0ZXN0ZGI9Jmd0OyA8dXNlcmlucHV0Plxz ZXRlbnYgTEVTUyAtaW14NEY8L3VzZXJpbnB1dD4KICAgICAgICA8L3BhcmE+CiAKICAgICAgICA8 cGFyYT4KLSAgICAgICAgUGlwZWxpbmUgbW9kZSByZXF1aXJlcyB0aGUgdXNlIG9mIHRoZSBleHRl bmRlZCBxdWVyeSBwcm90b2NvbC4gQWxsCi0gICAgICAgIHF1ZXJpZXMgbmVlZCB0byBiZSBzZW50 IHVzaW5nIHRoZSBtZXRhLWNvbW1hbmRzCi0gICAgICAgIDxsaXRlcmFsPlxiaW5kPC9saXRlcmFs PiwgPGxpdGVyYWw+XGJpbmRfbmFtZWQ8L2xpdGVyYWw+LAotICAgICAgICA8bGl0ZXJhbD5cY2xv c2U8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPlxwYXJzZTwvbGl0ZXJhbD4uIFdoaWxlIGEKLSAgICAg ICAgcGlwZWxpbmUgaXMgb25nb2luZywgPGxpdGVyYWw+XHNlbmRwaXBlbGluZTwvbGl0ZXJhbD4g d2lsbCBhcHBlbmQgdGhlCi0gICAgICAgIGN1cnJlbnQgcXVlcnkgYnVmZmVyIHRvIHRoZSBwaXBl bGluZS4gT3RoZXIgbWV0YS1jb21tYW5kcyBsaWtlCi0gICAgICAgIDxsaXRlcmFsPlxnPC9saXRl cmFsPiwgPGxpdGVyYWw+XGd4PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5cZ2Rlc2M8L2xpdGVyYWw+ Ci0gICAgICAgIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlLgorICAgICAgICBQaXBl bGluZSBtb2RlIHJlcXVpcmVzIHRoZSB1c2Ugb2YgdGhlIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29s LiBRdWVyaWVzCisgICAgICAgIGNhbiBiZSBzZW50IHVzaW5nIHRoZSBtZXRhLWNvbW1hbmRzIDxs aXRlcmFsPlxiaW5kPC9saXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+XGJpbmRfbmFtZWQ8L2xp dGVyYWw+LCA8bGl0ZXJhbD5cY2xvc2U8L2xpdGVyYWw+IG9yCisgICAgICAgIDxsaXRlcmFsPlxw YXJzZTwvbGl0ZXJhbD4uIFdoaWxlIGEgcGlwZWxpbmUgaXMgb25nb2luZywKKyAgICAgICAgPGxp dGVyYWw+XHNlbmRwaXBlbGluZTwvbGl0ZXJhbD4gd2lsbCBhcHBlbmQgdGhlIGN1cnJlbnQgcXVl cnkKKyAgICAgICAgYnVmZmVyIHRvIHRoZSBwaXBlbGluZS4gT3RoZXIgbWV0YS1jb21tYW5kcyBs aWtlIDxsaXRlcmFsPlxnPC9saXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+XGd4PC9saXRlcmFs PiBvciA8bGl0ZXJhbD5cZ2Rlc2M8L2xpdGVyYWw+IGFyZSBub3QgYWxsb3dlZAorICAgICAgICBp biBwaXBlbGluZSBtb2RlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAg ICBRdWVyaWVzIGNhbiBhbHNvIGJlIHNlbnQgdXNpbmcgPGxpdGVyYWw+OzwvbGl0ZXJhbD4uIFdo aWxlIGEgcGlwZWxpbmUgaXMKKyAgICAgICAgb25nb2luZywgdGhleSB3aWxsIGF1dG9tYXRpY2Fs bHkgYmUgc2VudCB1c2luZyBleHRlbmRlZCBxdWVyeSBwcm90b2NvbC4KICAgICAgICA8L3BhcmE+ CiAKICAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9z cmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IGE4N2ZmN2U0NTk3Li5iYmUzMzc3ODBmZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFu ZC5jCkBAIC0zMjgyLDYgKzMyODIsMTMgQEAgZXhlY19jb21tYW5kX3dhdGNoKFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQlpbnQJCQlpdGVyID0gMDsKIAkJ aW50CQkJbWluX3Jvd3MgPSAwOwogCisJCWlmIChQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9 IFBRX1BJUEVMSU5FX09GRikKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJcXHdhdGNoIG5vdCBhbGxv d2VkIGluIHBpcGVsaW5lIG1vZGUiKTsKKwkJCWNsZWFuX2V4dGVuZGVkX3N0YXRlKCk7CisJCQlz dWNjZXNzID0gZmFsc2U7CisJCX0KKwogCQkvKgogCQkgKiBQYXJzZSBhcmd1bWVudHMuICBXZSBh bGxvdyBlaXRoZXIgYW4gdW5sYWJlbGVkIGludGVydmFsIG9yCiAJCSAqICJuYW1lPXZhbHVlIiwg d2hlcmUgbmFtZSBpcyBmcm9tIHRoZSBzZXQgKCdpJywgJ2ludGVydmFsJywgJ2MnLApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCmluZGV4 IGVkMzQwYTQ2NmY5Li41MjQ5MzM2YmNmMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1v bi5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpAQCAtMTY2OCw3ICsxNjY4LDE1IEBAIEV4 ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJfQogCQkJYnJl YWs7CiAJCWNhc2UgUFNRTF9TRU5EX1FVRVJZOgotCQkJc3VjY2VzcyA9IFBRc2VuZFF1ZXJ5KHBz ZXQuZGIsIHF1ZXJ5KTsKKwkJCWlmIChQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJ UEVMSU5FX09GRikKKwkJCXsKKwkJCQlzdWNjZXNzID0gUFFzZW5kUXVlcnlQYXJhbXMocHNldC5k YiwgcXVlcnksCisJCQkJCQkJCQkJCTAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDApOworCQkJ CWlmIChzdWNjZXNzKQorCQkJCQlwc2V0LnBpcGVkX2NvbW1hbmRzKys7CisJCQl9CisJCQllbHNl CisJCQkJc3VjY2VzcyA9IFBRc2VuZFF1ZXJ5KHBzZXQuZGIsIHF1ZXJ5KTsKIAkJCWJyZWFrOwog CX0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsX3BpcGVsaW5l Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbF9waXBlbGluZS5vdXQKaW5kZXgg NjhlM2MxOWVhMDUuLjdkZGRmMjZhOWZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BzcWxfcGlwZWxpbmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHNxbF9waXBlbGluZS5vdXQKQEAgLTM4Niw2ICszODYsMjYyIEBAIFNFTEVDVCAkMSBcYmluZCAz IFxzZW5kcGlwZWxpbmUKICAzCiAoMSByb3cpCiAKK1xlbmRwaXBlbGluZQorLS0KKy0tIFRlc3Rz IHBpcGVsaW5pbmcgcXVlcmllcyB3aXRoICc7JworLS0KKy0tIFNpbmdsZSBxdWVyeSBzZW50IHdp dGggJzsnCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIDE7CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCistLSBNdWx0aXBsZSBxdWVyaWVz IHNlbnQgd2l0aCAnOycKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMTsKK1NFTEVDVCAyOworU0VM RUNUIDM7CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQor KDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAgIDIKKygxIHJvdykKKwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAzCisoMSByb3cpCisKKy0tIE11bHRpcGxl IHF1ZXJpZXMgb24gdGhlIHNhbWUgbGluZSBjYW4gYmUgcGlwZWQgd2l0aCAnOycKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgMTsgU0VMRUNUIDI7IFNFTEVDVCAzCis7CitcZW5kcGlwZWxpbmUKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgICAgICAgIDIKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0tLS0tLS0tLQor ICAgICAgICAzCisoMSByb3cpCisKKy0tIFRlc3QgXGZsdXNoIHdpdGggcXVlcmllcyBwaXBlZCB3 aXRoICc7JworXHN0YXJ0cGlwZWxpbmUKK1xmbHVzaAorU0VMRUNUIDE7CitcZmx1c2gKK1NFTEVD VCAyOworU0VMRUNUIDM7CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAg ICAgICAgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAgIDIKKygx IHJvdykKKworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAzCisoMSByb3cpCisKKy0t IFNlbmQgbXVsdGlwbGUgc3luY3Mgd2l0aCBxdWVyaWVzIHBpcGVkIHdpdGggJzsnCitcc3RhcnRw aXBlbGluZQorXGVjaG8gOlBJUEVMSU5FX0NPTU1BTkRfQ09VTlQKKzAKK1xlY2hvIDpQSVBFTElO RV9TWU5DX0NPVU5UCiswCitcZWNobyA6UElQRUxJTkVfUkVTVUxUX0NPVU5UCiswCitTRUxFQ1Qg MTsKK1xzeW5jcGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAyOworXHN5bmNwaXBlbGlu ZQorU0VMRUNUIDM7CitcZWNobyA6UElQRUxJTkVfQ09NTUFORF9DT1VOVAorMQorXGVjaG8gOlBJ UEVMSU5FX1NZTkNfQ09VTlQKKzMKK1xlY2hvIDpQSVBFTElORV9SRVNVTFRfQ09VTlQKKzIKK1xl bmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMgorKDEgcm93KQorCisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgICAgICAgIDMKKygxIHJvdykKKworLS0gTWl4IHF1ZXJpZXMgcGlwZWQg d2l0aCAnOycgYW5kIFxzZW5kcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMTsKK1NF TEVDVCAkMSBcYmluZCAndmFsMScgXHNlbmRwaXBlbGluZQorU0VMRUNUICQxLCAkMiBcYmluZCAn dmFsMicgJ3ZhbDMnIFxzZW5kcGlwZWxpbmUKK1NFTEVDVCAyOworXGVuZHBpcGVsaW5lCisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgICAgICAgIDEKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyB2YWwyICAgICB8IHZhbDMKKygxIHJvdykKKworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorICAgICAgICAyCisoMSByb3cpCisKKy0tIFBpcGluZyBhIHF1ZXJ5IHdpdGgg JzsnIHdpbGwgcmVwbGFjZSB0aGUgdW5uYW1lZCBwcmVwYXJlZCBzdGF0ZW1lbnQKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgJDEgXHBhcnNlICcnCitTRUxFQ1QgMTsKK1xiaW5kX25hbWVkICcnCitc ZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQor CistLSBBbiBleHRlbmRlZCBxdWVyeSBjYW4gYmUgcGlwZWQgYnkgYSAnOycgYWZ0ZXIgYSBuZXds aW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEKKzsKK1NFTEVDVCAyOworXGVu ZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgICAgICAgIDIKKygxIHJvdykKKworLS0gQ09QWSBGUk9NIFNURElO LCB1c2luZyAnOycKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJ3ZhbDEnOworQ09QWSBwc3FsX3Bp cGVsaW5lIEZST00gU1RESU47CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0K KyB2YWwxCisoMSByb3cpCisKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxmbHVzaHJlcXVlc3Qg KyBcZ2V0cmVzdWx0cywgdXNpbmcgJzsnCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICd2YWwxJzsK K0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOOworXGZsdXNocmVxdWVzdAorXGdldHJlc3Vs dHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKK21lc3NhZ2UgdHlw ZSAweDVhIGFycml2ZWQgZnJvbSBzZXJ2ZXIgd2hpbGUgaWRsZQorXGVuZHBpcGVsaW5lCistLSBD T1BZIEZST00gU1RESU4gd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3VsdHMsIHVzaW5nICc7 JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAndmFsMSc7CitDT1BZIHBzcWxfcGlwZWxpbmUgRlJP TSBTVERJTjsKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCisgP2NvbHVtbj8gCistLS0tLS0t LS0tCisgdmFsMQorKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0tIENPUFkgVE8gU1RET1VULCB1 c2luZyAnOycKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJ3ZhbDEnOworY29weSBwc3FsX3BpcGVs aW5lIFRPIFNURE9VVDsKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZh bDEKKygxIHJvdykKKworMQlcTgorMgl0ZXN0MgorMwl0ZXN0MworNAl0ZXN0NAorMjAJdGVzdDIK KzMwCXRlc3QzCis0MAl0ZXN0NAorLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcZmx1c2hyZXF1ZXN0 ICsgXGdldHJlc3VsdHMsIHVzaW5nICc7JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAndmFsMSc7 Citjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUOworXGZsdXNocmVxdWVzdAorXGdldHJlc3Vs dHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKzEJXE4KKzIJdGVz dDIKKzMJdGVzdDMKKzQJdGVzdDQKKzIwCXRlc3QyCiszMAl0ZXN0MworNDAJdGVzdDQKK1xlbmRw aXBlbGluZQorLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3Vs dHMsIHVzaW5nICc7JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAndmFsMSc7Citjb3B5IHBzcWxf cGlwZWxpbmUgVE8gU1RET1VUOworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKzEJXE4KKzIJdGVzdDIKKzMJdGVzdDMK KzQJdGVzdDQKKzIwCXRlc3QyCiszMAl0ZXN0MworNDAJdGVzdDQKIFxlbmRwaXBlbGluZQogLS0K IC0tIFBpcGVsaW5lIGVycm9ycwpAQCAtMzkzLDE4ICs2NDksNiBAQCBTRUxFQ1QgJDEgXGJpbmQg MyBcc2VuZHBpcGVsaW5lCiAtLSBcZW5kcGlwZWxpbmUgb3V0c2lkZSBvZiBwaXBlbGluZSBzaG91 bGQgZmFpbAogXGVuZHBpcGVsaW5lCiBjYW5ub3Qgc2VuZCBwaXBlbGluZSB3aGVuIG5vdCBpbiBw aXBlbGluZSBtb2RlCi0tLSBRdWVyeSB1c2luZyBzaW1wbGUgcHJvdG9jb2wgc2hvdWxkIG5vdCBi ZSBzZW50IGFuZCBzaG91bGQgbGVhdmUgdGhlCi0tLSBwaXBlbGluZSB1c2FibGUuCi1cc3RhcnRw aXBlbGluZQotU0VMRUNUIDE7Ci1QUXNlbmRRdWVyeSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBt b2RlCi1TRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxzZW5kcGlwZWxpbmUKLVxlbmRwaXBlbGluZQot ID9jb2x1bW4/IAotLS0tLS0tLS0tLQotIHZhbDEKLSgxIHJvdykKLQogLS0gQWZ0ZXIgYW4gYWJv cnRlZCBwaXBlbGluZSwgY29tbWFuZHMgYWZ0ZXIgYSBcc3luY3BpcGVsaW5lIHNob3VsZCBiZQog LS0gZGlzcGxheWVkLgogXHN0YXJ0cGlwZWxpbmUKQEAgLTQyNSw2ICs2NjksMTMgQEAgU0VMRUNU IFxiaW5kICd2YWwxJyBcc2VuZHBpcGVsaW5lCiBTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxzZW5k cGlwZWxpbmUKIFxlbmRwaXBlbGluZQogRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMSBw YXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDAKKy0tIFVzaW5n ICc7JyB3aXRoIGEgcGFyYW1ldGVyIHdpbGwgdHJpZ2dlciBhbiBpbmNvcnJlY3QgcGFyYW1ldGVy IGVycm9yIGFuZAorLS0gYWJvcnQgdGhlIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNU ICQxOworU0VMRUNUIDE7CitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgYmluZCBtZXNzYWdlIHN1cHBs aWVzIDAgcGFyYW1ldGVycywgYnV0IHByZXBhcmVkIHN0YXRlbWVudCAiIiByZXF1aXJlcyAxCiAt LSBBbiBleHBsaWNpdCB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIG5lZWRzIHRvIGJlIHJvbGxi YWNrZWQgYWZ0ZXIKIC0tIHRoZSBwaXBlbGluZS4KIFxzdGFydHBpcGVsaW5lCkBAIC00MzUsMTIg KzY4NiwxMSBAQCBST0xMQkFDSyBcYmluZCBcc2VuZHBpcGVsaW5lCiBFUlJPUjogIGR1cGxpY2F0 ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInBzcWxfcGlwZWxpbmVfcGtl eSIKIERFVEFJTDogIEtleSAoYSk9KDEpIGFscmVhZHkgZXhpc3RzLgogUk9MTEJBQ0s7Ci0tLSBc d2F0Y2ggc2VuZHMgYSBzaW1wbGUgcXVlcnksIHNvbWV0aGluZyBub3QgYWxsb3dlZCB3aXRoaW4g YSBwaXBlbGluZS4KKy0tIFx3YXRjaCBpcyBub3QgYWxsb3dlZCB3aXRoaW4gYSBwaXBlbGluZS4K IFxzdGFydHBpcGVsaW5lCiBTRUxFQ1QgXGJpbmQgXHNlbmRwaXBlbGluZQogXHdhdGNoIDEKLVBR c2VuZFF1ZXJ5IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKLQorXHdhdGNoIG5vdCBhbGxv d2VkIGluIHBpcGVsaW5lIG1vZGUKIFxlbmRwaXBlbGluZQogLS0KICgxIHJvdykKQEAgLTUzMCw3 ICs3ODAsNyBAQCBTRUxFQ1QgQ09VTlQoKikgRlJPTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxzZW5k cGlwZWxpbmUKIAogIGNvdW50IAogLS0tLS0tLQotICAgICA0CisgICAgIDcKICgxIHJvdykKIAog LS0gQWZ0ZXIgYW4gZXJyb3IsIHBpcGVsaW5lIGlzIGFib3J0ZWQgYW5kIHJlcXVpcmVzIFxzeW5j cGlwZWxpbmUgdG8gYmUKQEAgLTYxNywxMSArODY3LDExIEBAIHNlbGVjdCAxOwogLS0gRXJyb3Ig bWVzc2FnZXMgYWNjdW11bGF0ZSBhbmQgYXJlIHJlcGVhdGVkLgogXHN0YXJ0cGlwZWxpbmUKIFNF TEVDVCAxIFxiaW5kIFxzZW5kcGlwZWxpbmUKLVNFTEVDVCAxOwotUFFzZW5kUXVlcnkgbm90IGFs bG93ZWQgaW4gcGlwZWxpbmUgbW9kZQotU0VMRUNUIDE7Ci1QUXNlbmRRdWVyeSBub3QgYWxsb3dl ZCBpbiBwaXBlbGluZSBtb2RlCi1QUXNlbmRRdWVyeSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBt b2RlCitcZ2Rlc2MKK3N5bmNocm9ub3VzIGNvbW1hbmQgZXhlY3V0aW9uIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXGdkZXNjCitzeW5jaHJvbm91cyBjb21tYW5k IGV4ZWN1dGlvbiBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK3N5 bmNocm9ub3VzIGNvbW1hbmQgZXhlY3V0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g cGlwZWxpbmUgbW9kZQogXGVuZHBpcGVsaW5lCiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsX3BpcGVsaW5lLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BzcWxfcGlwZWxpbmUuc3FsCmluZGV4IGU0ZDdlNjE0YWYzLi42Zjc2YWRj YmE4MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbF9waXBlbGluZS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbF9waXBlbGluZS5zcWwKQEAgLTIxMCw2ICsy MTAsMTI1IEBAIFNFTEVDVCAkMSBcYmluZCAzIFxzZW5kcGlwZWxpbmUKIFxnZXRyZXN1bHRzIDAK IFxlbmRwaXBlbGluZQogCistLQorLS0gVGVzdHMgcGlwZWxpbmluZyBxdWVyaWVzIHdpdGggJzsn CistLQorCistLSBTaW5nbGUgcXVlcnkgc2VudCB3aXRoICc7JworXHN0YXJ0cGlwZWxpbmUKK1NF TEVDVCAxOworXGVuZHBpcGVsaW5lCisKKy0tIE11bHRpcGxlIHF1ZXJpZXMgc2VudCB3aXRoICc7 JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAxOworU0VMRUNUIDI7CitTRUxFQ1QgMzsKK1xlbmRw aXBlbGluZQorCistLSBNdWx0aXBsZSBxdWVyaWVzIG9uIHRoZSBzYW1lIGxpbmUgY2FuIGJlIHBp cGVkIHdpdGggJzsnCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIDE7IFNFTEVDVCAyOyBTRUxFQ1Qg MworOworXGVuZHBpcGVsaW5lCisKKy0tIFRlc3QgXGZsdXNoIHdpdGggcXVlcmllcyBwaXBlZCB3 aXRoICc7JworXHN0YXJ0cGlwZWxpbmUKK1xmbHVzaAorU0VMRUNUIDE7CitcZmx1c2gKK1NFTEVD VCAyOworU0VMRUNUIDM7CitcZW5kcGlwZWxpbmUKKworLS0gU2VuZCBtdWx0aXBsZSBzeW5jcyB3 aXRoIHF1ZXJpZXMgcGlwZWQgd2l0aCAnOycKK1xzdGFydHBpcGVsaW5lCitcZWNobyA6UElQRUxJ TkVfQ09NTUFORF9DT1VOVAorXGVjaG8gOlBJUEVMSU5FX1NZTkNfQ09VTlQKK1xlY2hvIDpQSVBF TElORV9SRVNVTFRfQ09VTlQKK1NFTEVDVCAxOworXHN5bmNwaXBlbGluZQorXHN5bmNwaXBlbGlu ZQorU0VMRUNUIDI7Citcc3luY3BpcGVsaW5lCitTRUxFQ1QgMzsKK1xlY2hvIDpQSVBFTElORV9D T01NQU5EX0NPVU5UCitcZWNobyA6UElQRUxJTkVfU1lOQ19DT1VOVAorXGVjaG8gOlBJUEVMSU5F X1JFU1VMVF9DT1VOVAorXGVuZHBpcGVsaW5lCisKKy0tIE1peCBxdWVyaWVzIHBpcGVkIHdpdGgg JzsnIGFuZCBcc2VuZHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIDE7CitTRUxFQ1Qg JDEgXGJpbmQgJ3ZhbDEnIFxzZW5kcGlwZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDIn ICd2YWwzJyBcc2VuZHBpcGVsaW5lCitTRUxFQ1QgMjsKK1xlbmRwaXBlbGluZQorCistLSBQaXBp bmcgYSBxdWVyeSB3aXRoICc7JyB3aWxsIHJlcGxhY2UgdGhlIHVubmFtZWQgcHJlcGFyZWQgc3Rh dGVtZW50Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxwYXJzZSAnJworU0VMRUNUIDE7Citc YmluZF9uYW1lZCAnJworXGVuZHBpcGVsaW5lCisKKy0tIEFuIGV4dGVuZGVkIHF1ZXJ5IGNhbiBi ZSBwaXBlZCBieSBhICc7JyBhZnRlciBhIG5ld2xpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1Qg JDEgXGJpbmQgMQorOworU0VMRUNUIDI7CitcZW5kcGlwZWxpbmUKKworLS0gQ09QWSBGUk9NIFNU RElOLCB1c2luZyAnOycKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJ3ZhbDEnOworQ09QWSBwc3Fs X3BpcGVsaW5lIEZST00gU1RESU47CitcZW5kcGlwZWxpbmUKKzIwCXRlc3QyCitcLgorCistLSBD T1BZIEZST00gU1RESU4gd2l0aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJlc3VsdHMsIHVzaW5nICc7 JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAndmFsMSc7CitDT1BZIHBzcWxfcGlwZWxpbmUgRlJP TSBTVERJTjsKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCiszMAl0ZXN0MworXC4KK1xlbmRw aXBlbGluZQorCistLSBDT1BZIEZST00gU1RESU4gd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJl c3VsdHMsIHVzaW5nICc7JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAndmFsMSc7CitDT1BZIHBz cWxfcGlwZWxpbmUgRlJPTSBTVERJTjsKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCis0MAl0 ZXN0NAorXC4KK1xlbmRwaXBlbGluZQorCistLSBDT1BZIFRPIFNURE9VVCwgdXNpbmcgJzsnCitc c3RhcnRwaXBlbGluZQorU0VMRUNUICd2YWwxJzsKK2NvcHkgcHNxbF9waXBlbGluZSBUTyBTVERP VVQ7CitcZW5kcGlwZWxpbmUKKworLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcZmx1c2hyZXF1ZXN0 ICsgXGdldHJlc3VsdHMsIHVzaW5nICc7JworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAndmFsMSc7 Citjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUOworXGZsdXNocmVxdWVzdAorXGdldHJlc3Vs dHMKK1xlbmRwaXBlbGluZQorCistLSBDT1BZIFRPIFNURE9VVCB3aXRoIFxzeW5jcGlwZWxpbmUg KyBcZ2V0cmVzdWx0cywgdXNpbmcgJzsnCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICd2YWwxJzsK K2NvcHkgcHNxbF9waXBlbGluZSBUTyBTVERPVVQ7Citcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0 cworXGVuZHBpcGVsaW5lCisKIC0tCiAtLSBQaXBlbGluZSBlcnJvcnMKIC0tCkBAIC0yMTcsMTMg KzMzNiw2IEBAIFNFTEVDVCAkMSBcYmluZCAzIFxzZW5kcGlwZWxpbmUKIC0tIFxlbmRwaXBlbGlu ZSBvdXRzaWRlIG9mIHBpcGVsaW5lIHNob3VsZCBmYWlsCiBcZW5kcGlwZWxpbmUKIAotLS0gUXVl cnkgdXNpbmcgc2ltcGxlIHByb3RvY29sIHNob3VsZCBub3QgYmUgc2VudCBhbmQgc2hvdWxkIGxl YXZlIHRoZQotLS0gcGlwZWxpbmUgdXNhYmxlLgotXHN0YXJ0cGlwZWxpbmUKLVNFTEVDVCAxOwot U0VMRUNUICQxIFxiaW5kICd2YWwxJyBcc2VuZHBpcGVsaW5lCi1cZW5kcGlwZWxpbmUKLQogLS0g QWZ0ZXIgYW4gYWJvcnRlZCBwaXBlbGluZSwgY29tbWFuZHMgYWZ0ZXIgYSBcc3luY3BpcGVsaW5l IHNob3VsZCBiZQogLS0gZGlzcGxheWVkLgogXHN0YXJ0cGlwZWxpbmUKQEAgLTIzOSw2ICszNTEs MTMgQEAgU0VMRUNUIFxiaW5kICd2YWwxJyBcc2VuZHBpcGVsaW5lCiBTRUxFQ1QgJDEgXGJpbmQg J3ZhbDEnIFxzZW5kcGlwZWxpbmUKIFxlbmRwaXBlbGluZQogCistLSBVc2luZyAnOycgd2l0aCBh IHBhcmFtZXRlciB3aWxsIHRyaWdnZXIgYW4gaW5jb3JyZWN0IHBhcmFtZXRlciBlcnJvciBhbmQK Ky0tIGFib3J0IHRoZSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMTsKK1NFTEVD VCAxOworXGVuZHBpcGVsaW5lCisKIC0tIEFuIGV4cGxpY2l0IHRyYW5zYWN0aW9uIHdpdGggYW4g ZXJyb3IgbmVlZHMgdG8gYmUgcm9sbGJhY2tlZCBhZnRlcgogLS0gdGhlIHBpcGVsaW5lLgogXHN0 YXJ0cGlwZWxpbmUKQEAgLTI0OCw3ICszNjcsNyBAQCBST0xMQkFDSyBcYmluZCBcc2VuZHBpcGVs aW5lCiBcZW5kcGlwZWxpbmUKIFJPTExCQUNLOwogCi0tLSBcd2F0Y2ggc2VuZHMgYSBzaW1wbGUg cXVlcnksIHNvbWV0aGluZyBub3QgYWxsb3dlZCB3aXRoaW4gYSBwaXBlbGluZS4KKy0tIFx3YXRj aCBpcyBub3QgYWxsb3dlZCB3aXRoaW4gYSBwaXBlbGluZS4KIFxzdGFydHBpcGVsaW5lCiBTRUxF Q1QgXGJpbmQgXHNlbmRwaXBlbGluZQogXHdhdGNoIDEKQEAgLTM3Miw4ICs0OTEsOCBAQCBzZWxl Y3QgMTsKIC0tIEVycm9yIG1lc3NhZ2VzIGFjY3VtdWxhdGUgYW5kIGFyZSByZXBlYXRlZC4KIFxz dGFydHBpcGVsaW5lCiBTRUxFQ1QgMSBcYmluZCBcc2VuZHBpcGVsaW5lCi1TRUxFQ1QgMTsKLVNF TEVDVCAxOworXGdkZXNjCitcZ2Rlc2MKIFxlbmRwaXBlbGluZQogCiAtLQotLSAKMi4zOS41IChB cHBsZSBHaXQtMTU0KQoK --00000000000044da0806309a11ed--