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 1vweZg-0047Ls-1e for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 11:03:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vweZe-00Coqo-1c for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 11:02:58 +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.96) (envelope-from ) id 1vweZe-00Coqg-0D for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 11:02:58 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vweZY-00000001rTP-2aMp for pgsql-hackers@postgresql.org; Sun, 01 Mar 2026 11:02:57 +0000 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c6e77ace76aso1304391a12.3 for ; Sun, 01 Mar 2026 03:02:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772362971; cv=none; d=google.com; s=arc-20240605; b=HwejdQUFtt1WPrRL7NlS6EEI58tkRtrBH+NcDJsGqV67NxXXVttjaH8OM49bjc27EK Lhn/Slw08voCw7TtyEtavVPGSemziKJxxq9GiA1mqWtk5MuqjrHMxYZt6jBcRljhG/52 XGOlET0HUzP+G2QuCaUtsn3Pyamq29+ppW2qlZ4IYaiyEh1CeOtpCrglYyWG0B2p9N0w KQgSV/Qp9armjX0OEH+kDtD+Sd+4NFMzH8c0S1qLPgVkd/axgjgsxp1fHIwxC5SIJLGe N+kubKQQl1282YXUaS5n//naHmILsjWZee3JCOcgAJn2xH8JwnPBmXWO26hVERWEzPgo U++w== 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:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=2HnmHYUbLNGz7XrDg5nwLAqrZqvoxFl8pJ9Tl1J6GlY=; fh=xB4CJiTOeRxAc1F2rBq/y/66uW3x44nmwnJ3jomSOh8=; b=g0xLhzcudfUTaG2sYbzuWcvLhl7dqvmkdoUou25wygRw5Asp605IP8LJqA0wc18bxU mbfigSigJR+1QTWCwmXVgPiA4DSGTI1cndxhru6DcYg1KHsbsEGW26Cinrm/4YNXw1dF S20b/ZMl9V9E/MShKBnnHDdxISxjMhguE2MZYZiyvxFXA6pUKu10q+wSJ+8awUyWqA1e 6u2Lw116XCMIVIZdstV/uGnTOlBSpx/MZLBmG/h4dBFaAdy24BDyVepi+S/02zUH75PH mA0+pnbJE64ZVXrIvBz5qNDtv5jFrBCvX9sjgAdEPMjxitbYJbe2I1WHdUDyfo3dAT1a JuKQ==; darn=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=1772362971; x=1772967771; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2HnmHYUbLNGz7XrDg5nwLAqrZqvoxFl8pJ9Tl1J6GlY=; b=lwWRFb5nvXJpzTL6d1AjRGkJ47khP4UFwjmWBDigfCHaQ+FxjFpNkng/4U7Op1JLfS c57WDuxyjvGUMANXEo4JURD84NNGU95/kjKUn9A+l+aAyz7w0J8zlgjjmMWyKiU2hPi9 BAL76tO2czbYO9Rk6PrVG8ceYdhfUoL7mezPqL0wursO90Oqy9lyWVkKIeu1wsqSwlq6 ZsamDLnkmlAIs8SruWSnxXRnstszJxR1ydW+fCAUF93IiqX/ftj3zZQ4seuzWhaHKEfj JFlpykd/EJUyS0MRJ8Kx4mnlOqjH/lyqnE3T33FBcMWGCWJ2tsQavWuuzdbehkoqsss9 zYAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772362971; x=1772967771; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2HnmHYUbLNGz7XrDg5nwLAqrZqvoxFl8pJ9Tl1J6GlY=; b=QLCm72j4SGQCAiLxhwE0PdHoll2dIojIffGwWErvoc5ootmAlheUiVb0j/4qtnXC+F ZBv/ZkmC2vmqwP9fNawIMk1BzTp7WSc9D3H9cNVVTQWLp/uDr+b6qqGsGQ6V/vgHRBbv L4N9fVpqfv22G85cyaPyUzShNNrnqqFJirAemLY43Z8KSOrkAMIOrUgtAlipjqBzscZf d/P/NN2RhpZnaYubqV1kkBXdSEStnqN59jkuOPXdxoqg/k9vWfBIRaIXfR+QYbY1Ck9o bI1H0x7SZlE16+Qp8HTCMTBOLninGJKe09lzC653i5cQH/GHUTNtWBW7FIIWPxVwLBf6 4XnA== X-Forwarded-Encrypted: i=1; AJvYcCW2Qeg6h8qy6/GTDGvIcx1DKhk8x8EOt+BjskTVh7Ql1jTl5erW6KZyaMFad3rb0Z+JWyDb7Mopd2IX3wf4@postgresql.org X-Gm-Message-State: AOJu0YxLI4vRiEA0yqa6sZwrrBFQ/9Kq4y4aigVIHO77ldqF4Vgt1Hbt 5F0gMwfkRJcFWdwAQZAwfEoIvHwx6rwokmCf5qBxUqnE21sPwhtgYUQtSVdoIDVb3R+y8KyG/8u c0LXA/CyeuiN3XbWNJmz6j3UhRHedSAs= X-Gm-Gg: ATEYQzyNJWi2fcElI2B6Sjt2WyjTDHJuRLfJgiLquhpO6rppFa7CEGCfJooT3VrUxsh 9Zdwgu6LRKcEGIWgsIgXvZfz7v9QG4wBw72+cDsM8yNExsVmU01hsl9PKRRWuQu8NcR881wH54R tFcskSNOcJW6hjLGB1NCaffxQd9ZZJj/0z+OPd8DFarsShIaxGlQsBjTzOslhP6ZhoASRLrSEs9 +OUPuZSQDuYJk2O2QDVExJLzF0Pj1OU8nvMCgqqIczFAT75vP8SA6b1ldDRTVFNBb1L0D/Zv6vP uWKTVoTBbuG9XgtDbNLcxwmMw2ezvKZLheyL4Sfa X-Received: by 2002:a17:90b:5843:b0:354:a57c:65dd with SMTP id 98e67ed59e1d1-35965cd0e68mr8654224a91.24.1772362971353; Sun, 01 Mar 2026 03:02:51 -0800 (PST) MIME-Version: 1.0 References: <20260224.140927.1828965853586507533.ishii@postgresql.org> <20260224.204417.914253025244188300.ishii@postgresql.org> <20260227.225456.33226875991025537.ishii@postgresql.org> In-Reply-To: Reply-To: assam258@gmail.com From: Henson Choi Date: Sun, 1 Mar 2026 20:02:38 +0900 X-Gm-Features: AaiRm53a0eqWiu1o13dRJRmYxEkdsPzhQIlAoR2LSzN0csQOTbA7kr_fIzgb9KA Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000522db7064bf46984" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000522db7064bf46984 Content-Type: multipart/alternative; boundary="000000000000522db6064bf46982" --000000000000522db6064bf46982 Content-Type: text/plain; charset="UTF-8" Hi Tatsuo, Attached are two more incremental patches (nocfbot-0011, nocfbot-0012) on top of v43, continuing the nocfbot-0001..0010 series. nocfbot-0011: Add RPR DEFINE expression cost to WindowAgg cost estimation Revised version of your cost estimation patch [1]. Fixes the `(char *)` cast and moves DEFINE cost outside the windowFuncs loop. nocfbot-0012: Reject qualified column references in RPR DEFINE clause Revised version of your qualified column reference patch [2]. Exposes `patternVarNames` via `ParseState.p_rpr_pattern_vars` to distinguish pattern variable qualifiers ("not supported") from FROM-clause range variable qualifiers ("not allowed"). Variables appearing only in DEFINE (not in PATTERN) are also collected into `p_rpr_pattern_vars` so they get the "not supported" message, but the RPR_VARID_MAX count check still applies only to PATTERN variables. [1] https://www.postgresql.org/message-id/20260227.225456.33226875991025537.ishii@postgresql.org [2] https://www.postgresql.org/message-id/20260227.145539.1921177948671828231.ishii@postgresql.org Attachment: nocfbot-0011-define-cost.txt nocfbot-0012-qualified-refs.txt Best regards, Henson --000000000000522db6064bf46982 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Attached are two more incremental patche= s (nocfbot-0011, nocfbot-0012)
on top of v43, continuing the nocfbot-000= 1..0010 series.

nocfbot-0011: Add RPR DEFINE expression cost to Wind= owAgg cost estimation

=C2=A0 Revised version of your cost estimation= patch [1].=C2=A0 Fixes the
=C2=A0 `(char *)` cast and moves DEFINE cost= outside the windowFuncs loop.

nocfbot-0012: Reject qualified column= references in RPR DEFINE clause

=C2=A0 Revised version of your qual= ified column reference patch [2].
=C2=A0 Exposes `patternVarNames` via `= ParseState.p_rpr_pattern_vars` to
=C2=A0 distinguish pattern variable qu= alifiers ("not supported") from
=C2=A0 FROM-clause range varia= ble qualifiers ("not allowed").

=C2=A0 Variables appearing= only in DEFINE (not in PATTERN) are also
=C2=A0 collected into `p_rpr_p= attern_vars` so they get the "not supported"
=C2=A0 message, b= ut the RPR_VARID_MAX count check still applies only to
=C2=A0 PATTERN va= riables.

[1] https://www.postgresql.or= g/message-id/20260227.225456.33226875991025537.ishii@postgresql.org
= [2] https://www.postgresql.org/message-id/2= 0260227.145539.1921177948671828231.ishii@postgresql.org

Attachme= nt:
=C2=A0 nocfbot-0011-define-cost.txt
=C2=A0 nocfbot-0012-qualified= -refs.txt

Best regards,
Henson
--000000000000522db6064bf46982-- --000000000000522db7064bf46984 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0011-define-cost.txt" Content-Disposition: attachment; filename="nocfbot-0011-define-cost.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7n04ac0 RnJvbSA2MTNkMmI5Y2MzMTBmOWU1NWM3MWVmMTY1NTViOWM0MjQwMWM0NmI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTdW4sIDEgTWFyIDIwMjYgMTk6MDk6MjcgKzA5MDAKU3ViamVjdDogW1BBVENIXSBBZGQgUlBS IERFRklORSBleHByZXNzaW9uIGNvc3QgdG8gV2luZG93QWdnIGNvc3QgZXN0aW1hdGlvbgoKLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIHwgMjkgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDg5Y2E0ZTA4YmYxLi5hMTBmYjgwMmQw ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBAIC0xMDMsNiArMTAzLDcg QEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvcGxhbmNhdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKKyNpbmNs dWRlICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCkBA IC0zMjI3LDcgKzMyMjgsMzUgQEAgY29zdF93aW5kb3dhZ2coUGF0aCAqcGF0aCwgUGxhbm5lcklu Zm8gKnJvb3QsCiAJICogbWFueSByb3dzIHRoZSB3aW5kb3cgZnVuY3Rpb24gd2lsbCBmZXRjaCwg aXQncyBoYXJkIHRvIGRvIGJldHRlci4gIEluCiAJICogYW55IGNhc2UsIGl0J3MgYSBnb29kIGVz dGltYXRlIGZvciBhbGwgdGhlIGJ1aWx0LWluIHdpbmRvdyBmdW5jdGlvbnMsCiAJICogc28gd2Un bGwganVzdCBkbyB0aGlzIGZvciBub3cuCisJICoKKwkgKiBNb3Jlb3ZlciwgaWYgcm93IHBhdHRl cm4gcmVjb2duaXRpb24gaXMgdXNlZCwgd2UgY2hhcmdlIHRoZSBERUZJTkUKKwkgKiBleHByZXNz aW9ucyBvbmNlIHBlciB0dXBsZSBmb3IgZWFjaCB2YXJpYWJsZSB0aGF0IGFwcGVhcnMgaW4gUEFU VEVSTi4KIAkgKi8KKwlpZiAod2luY2xhdXNlLT5ycFBhdHRlcm4pCisJeworCQlMaXN0CSAgICpw YXR0ZXJuX3ZhcnM7CisJCUxpc3RDZWxsICAgKmxjMjsKKwkJUXVhbENvc3QJZGVmY29zdHM7CisK KwkJcGF0dGVybl92YXJzID0gY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMod2luY2xhdXNlLT5ycFBh dHRlcm4pOworCisJCWZvcmVhY2gobGMyLCBwYXR0ZXJuX3ZhcnMpCisJCXsKKwkJCWNoYXIJICAg KnB0bmFtZSA9IHN0clZhbChsZmlyc3QobGMyKSk7CisKKwkJCWZvcmVhY2hfbm9kZShUYXJnZXRF bnRyeSwgZGVmLCB3aW5jbGF1c2UtPmRlZmluZUNsYXVzZSkKKwkJCXsKKwkJCQlpZiAoIXN0cmNt cChwdG5hbWUsIGRlZi0+cmVzbmFtZSkpCisJCQkJeworCQkJCQljb3N0X3F1YWxfZXZhbF9ub2Rl KCZkZWZjb3N0cywgKE5vZGUgKikgZGVmLT5leHByLCByb290KTsKKwkJCQkJc3RhcnR1cF9jb3N0 ICs9IGRlZmNvc3RzLnN0YXJ0dXA7CisJCQkJCXRvdGFsX2Nvc3QgKz0gZGVmY29zdHMucGVyX3R1 cGxlICogaW5wdXRfdHVwbGVzOworCQkJCX0KKwkJCX0KKwkJfQorCQlsaXN0X2ZyZWVfZGVlcChw YXR0ZXJuX3ZhcnMpOworCX0KKwogCWZvcmVhY2gobGMsIHdpbmRvd0Z1bmNzKQogCXsKIAkJV2lu ZG93RnVuYyAqd2Z1bmMgPSBsZmlyc3Rfbm9kZShXaW5kb3dGdW5jLCBsYyk7Ci0tIAoyLjUwLjEg KEFwcGxlIEdpdC0xNTUpCgo= --000000000000522db7064bf46984 Content-Type: text/plain; charset="UTF-8"; name="nocfbot-0012-qualified-refs.txt" Content-Disposition: attachment; filename="nocfbot-0012-qualified-refs.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7n06lf1 RnJvbSBmNTA4MTA0MjY3ZTBjMzk5ZmE0ODM3M2U4MGFjNTFjOGY0OTk2MTAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTdW4sIDEgTWFyIDIwMjYgMTk6MjQ6NTMgKzA5MDAKU3ViamVjdDogW1BBVENIXSBSZWplY3Qg cXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2VzIGluIFJQUiBERUZJTkUgY2xhdXNlCgotLS0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgIHwgMzYgKysrKysrKysrKysrKysK IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyAgICAgICAgIHwgNjkgKysrKysrKysrKysr KysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgIHwg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgfCA2MCArKysrKysr KysrKysrKysrKy0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAgICB8 IDUyICsrKysrKysrKysrKysrLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTc4IGluc2VydGlvbnMo KyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDIxOTY4MWQ2 ZTg4Li45OWI3ZTQ3NjNhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC02MTMsNiArNjEz LDQyIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZikKIAkJCXJldHVybiBub2RlOwogCX0KIAorCS8qCisJICogUXVhbGlmaWVkIGNvbHVtbiBy ZWZlcmVuY2VzIGluIERFRklORSBhcmUgbm90IHN1cHBvcnRlZC4gIFRoaXMgY292ZXJzCisJICog Ym90aCBGUk9NLWNsYXVzZSByYW5nZSB2YXJpYWJsZXMgKHByb2hpYml0ZWQgYnkgwqc2LjUpIGFu ZCBwYXR0ZXJuCisJICogdmFyaWFibGUgcXVhbGlmaWVkIG5hbWVzIChlLmcuIFVQLnByaWNlKSwg d2hpY2ggYXJlIHZhbGlkIHBlciDCpzQuMTYKKwkgKiBidXQgbm90IHlldCBpbXBsZW1lbnRlZC4K KwkgKi8KKwlpZiAocHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUlBSX0RFRklORSAm JgorCQlsaXN0X2xlbmd0aChjcmVmLT5maWVsZHMpICE9IDEpCisJeworCQljaGFyCSAgICpxdWFs aWZpZXIgPSBzdHJWYWwobGluaXRpYWwoY3JlZi0+ZmllbGRzKSk7CisJCUxpc3RDZWxsICAgKmxj OworCQlib29sCQlpc19wYXR0ZXJuX3ZhciA9IGZhbHNlOworCisJCWZvcmVhY2gobGMsIHBzdGF0 ZS0+cF9ycHJfcGF0dGVybl92YXJzKQorCQl7CisJCQlpZiAoc3RyY21wKHN0clZhbChsZmlyc3Qo bGMpKSwgcXVhbGlmaWVyKSA9PSAwKQorCQkJeworCQkJCWlzX3BhdHRlcm5fdmFyID0gdHJ1ZTsK KwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChpc19wYXR0ZXJuX3ZhcikKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJIGVycm1zZygicGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5j ZSBcIiVzXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBERUZJTkUgY2xhdXNlIiwKKwkJCQkJCQlOYW1l TGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygicmFuZ2UgdmFy aWFibGUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIG5vdCBhbGxvd2VkIGlu IERFRklORSBjbGF1c2UiLAorCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSks CisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwl9 CisKIAkvKi0tLS0tLS0tLS0KIAkgKiBUaGUgYWxsb3dlZCBzeW50YXhlcyBhcmU6CiAJICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9ycHIuYwppbmRleCAwMjdhM2QyNTAwYS4uZGZmOTFlNDM5ZDIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfcnByLmMKQEAgLTM3LDcgKzM3LDcgQEAKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlv bnMgKi8KIHN0YXRpYyB2b2lkIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUg KnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCi0JCQkJCQkJCQkgICBMaXN0ICoqdmFyTmFt ZXMpOworCQkJCQkJCQkJICAgTGlzdCAqcnBEZWZzLCBMaXN0ICoqdmFyTmFtZXMpOwogc3RhdGlj IExpc3QgKnRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Ns YXVzZSAqd2MsCiAJCQkJCQkJCSAgIFdpbmRvd0RlZiAqd2luZGVmLCBMaXN0ICoqdGFyZ2V0bGlz dCk7CiAKQEAgLTE2MCwxMSArMTYwLDE1IEBAIHRyYW5zZm9ybVJQUihQYXJzZVN0YXRlICpwc3Rh dGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogICogUmVjdXJzaXZlbHkg dHJhdmVyc2VzIHRoZSBwYXR0ZXJuIHRyZWUsIGNvbGxlY3RpbmcgdW5pcXVlIHZhcmlhYmxlIG5h bWVzLgogICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBudW1iZXIgb2YgdW5pcXVlIHZhcmlhYmxl cyBleGNlZWRzIFJQUl9WQVJJRF9NQVguCiAgKgorICogSWYgcnBEZWZzIGlzIG5vbi1OVUxMLCBE RUZJTkUgdmFyaWFibGUgbmFtZXMgYXJlIGFsc28gY29sbGVjdGVkIGludG8KKyAqIHZhck5hbWVz IHNvIHRoYXQgdHJhbnNmb3JtQ29sdW1uUmVmIGNhbiBkaXN0aW5ndWlzaCBwYXR0ZXJuIHZhcmlh YmxlCisgKiBxdWFsaWZpZXJzIGZyb20gRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGVzLgorICoK ICAqIHZhck5hbWVzIGlzIGJvdGggaW5wdXQgYW5kIG91dHB1dDogZXhpc3RpbmcgbmFtZXMgYXJl IHByZXNlcnZlZCwgbmV3IG9uZXMgYWRkZWQuCiAgKi8KIHN0YXRpYyB2b2lkCiB2YWxpZGF0ZVJQ UlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2Rl LAotCQkJCQkJICAgTGlzdCAqKnZhck5hbWVzKQorCQkJCQkJICAgTGlzdCAqcnBEZWZzLCBMaXN0 ICoqdmFyTmFtZXMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTIwOSwxOCArMjEzLDQ4IEBA IHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVy bk5vZGUgKm5vZGUsCiAJCQlmb3JlYWNoKGxjLCBub2RlLT5jaGlsZHJlbikKIAkJCXsKIAkJCQl2 YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChwc3RhdGUsIChSUFJQYXR0ZXJuTm9kZSAqKSBsZmly c3QobGMpLAotCQkJCQkJCQkJCSAgIHZhck5hbWVzKTsKKwkJCQkJCQkJCQkgICBOVUxMLCB2YXJO YW1lcyk7CiAJCQl9CiAJCQlicmVhazsKIAl9CisKKwkvKgorCSAqIEFmdGVyIHRoZSB0b3AtbGV2 ZWwgY2FsbCwgYWxzbyBjb2xsZWN0IERFRklORSB2YXJpYWJsZSBuYW1lcyB0aGF0IGFyZQorCSAq IG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0LiAgVGhpcyBpcyBvbmx5IGRvbmUgb25jZSBhdCB0aGUg b3V0ZXJtb3N0CisJICogcmVjdXJzaW9uIGxldmVsLCBkZXRlY3RlZCBieSBycERlZnMgYmVpbmcg bm9uLU5VTEwgKHJlY3Vyc2l2ZSBjYWxscworCSAqIHBhc3MgTlVMTCkuCisJICovCisJaWYgKHJw RGVmcykKKwl7CisJCWZvcmVhY2gobGMsIHJwRGVmcykKKwkJeworCQkJUmVzVGFyZ2V0ICAqcnQg PSAoUmVzVGFyZ2V0ICopIGxmaXJzdChsYyk7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQlib29s CQlmb3VuZCA9IGZhbHNlOworCisJCQlmb3JlYWNoKGxjMiwgKnZhck5hbWVzKQorCQkJeworCQkJ CWlmIChzdHJjbXAoc3RyVmFsKGxmaXJzdChsYzIpKSwgcnQtPm5hbWUpID09IDApCisJCQkJewor CQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmICghZm91 bmQpCisJCQkJKnZhck5hbWVzID0gbGFwcGVuZCgqdmFyTmFtZXMsCisJCQkJCQkJCQltYWtlU3Ry aW5nKHBzdHJkdXAocnQtPm5hbWUpKSk7CisJCX0KKwl9CiB9CiAKIC8qCiAgKiB0cmFuc2Zvcm1E ZWZpbmVDbGF1c2UKICAqCQlQcm9jZXNzIERFRklORSBjbGF1c2UgYW5kIHRyYW5zZm9ybSBSZXNU YXJnZXQgaW50byBsaXN0IG9mIFRhcmdldEVudHJ5LgogICoKLSAqIEZvciBlYWNoIERFRklORSB2 YXJpYWJsZToKLSAqICAgMS4gVmFsaWRhdGVzIFBBVFRFUk4gdmFyaWFibGUgY291bnQgdmlhIHZh bGlkYXRlUlBSUGF0dGVyblZhckNvdW50CisgKiBGaXJzdDoKKyAqICAgMS4gVmFsaWRhdGVzIFBB VFRFUk4gdmFyaWFibGUgY291bnQgYW5kIGNvbGxlY3RzIFJQUiB2YXJpYWJsZSBuYW1lcworICoK KyAqIFRoZW4gZm9yIGVhY2ggREVGSU5FIHZhcmlhYmxlOgogICogICAyLiBDaGVja3MgZm9yIGR1 cGxpY2F0ZSB2YXJpYWJsZSBuYW1lcyBpbiBERUZJTkUgY2xhdXNlCiAgKiAgIDMuIFRyYW5zZm9y bXMgZXhwcmVzc2lvbnMgYW5kIGFkZHMgdG8gdGFyZ2V0bGlzdCB2aWEgZmluZFRhcmdldGxpc3RF bnRyeVNRTDk5CiAgKiAgIDQuIENyZWF0ZXMgZGVmaW5lQ2xhdXNlIGVudHJ5IHdpdGggcHJvcGVy IHJlc25hbWUgKHBhdHRlcm4gdmFyaWFibGUgbmFtZSkKQEAgLTIzMCw5ICsyNjQsOSBAQCB2YWxp ZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2Rl ICpub2RlLAogICogTm90ZTogVmFyaWFibGVzIG5vdCBpbiBERUZJTkUgYXJlIGV2YWx1YXRlZCBh cyBUUlVFIGJ5IHRoZSBleGVjdXRvci4KICAqIFZhcmlhYmxlcyBpbiBERUZJTkUgYnV0IG5vdCBp biBQQVRURVJOIGFyZSBmaWx0ZXJlZCBvdXQgYnkgdGhlIHBsYW5uZXIuCiAgKgotICogWFhYIHdl IG9ubHkgc3VwcG9ydCBjb2x1bW4gcmVmZXJlbmNlIGluIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24g c2VhcmNoCi0gKiBjb25kaXRpb24sIGUuZy4gInByaWNlIi4gPHJvdyBwYXR0ZXJuIGRlZmluaXRp b24gdmFyaWFibGUgbmFtZT4uPGNvbHVtbgotICogcmVmZXJlbmNlPiBpcyBub3Qgc3VwcG9ydGVk LCBlLmcuICJBLnByaWNlIi4KKyAqIFhYWCBQYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1 bW4gcmVmZXJlbmNlcyBpbiBERUZJTkUgKGUuZy4KKyAqICJBLnByaWNlIikgYXJlIG5vdCB5ZXQg c3VwcG9ydGVkLiAgQ3VycmVudGx5IHJlamVjdGVkIGJ5CisgKiB0cmFuc2Zvcm1Db2x1bW5SZWYg aW4gcGFyc2VfZXhwci5jIHZpYSB0aGUgcF9ycHJfcGF0dGVybl92YXJzIGNoZWNrLgogICovCiBz dGF0aWMgTGlzdCAqCiB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBX aW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKQEAgLTI1Myw5ICsyODcsMTQgQEAg dHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3 YywgV2luZG93RGVmICp3aW5kZWYsCiAJICovCiAJQXNzZXJ0KHdpbmRlZi0+cnBDb21tb25TeW50 YXgtPnJwRGVmcyAhPSBOVUxMKTsKIAotCS8qIFZhbGlkYXRlIFBBVFRFUk4gdmFyaWFibGUgY291 bnQgKG1heCBSUFJfVkFSSURfTUFYKSAqLworCS8qCisJICogVmFsaWRhdGUgUEFUVEVSTiB2YXJp YWJsZSBjb3VudCBhbmQgY29sbGVjdCBhbGwgUlBSIHZhcmlhYmxlIG5hbWVzCisJICogKFBBVFRF Uk4gKyBERUZJTkUpIGZvciB1c2UgaW4gdHJhbnNmb3JtQ29sdW1uUmVmLgorCSAqLwogCXZhbGlk YXRlUlBSUGF0dGVyblZhckNvdW50KHBzdGF0ZSwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBQ YXR0ZXJuLAorCQkJCQkJCSAgIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcywKIAkJCQkJ CQkgICAmcGF0dGVyblZhck5hbWVzKTsKKwlwc3RhdGUtPnBfcnByX3BhdHRlcm5fdmFycyA9IHBh dHRlcm5WYXJOYW1lczsKIAogCS8qCiAJICogQ2hlY2sgZm9yIGR1cGxpY2F0ZSByb3cgcGF0dGVy biBkZWZpbml0aW9uIHZhcmlhYmxlcy4gIFRoZSBzdGFuZGFyZApAQCAtMjkwLDEzICszMjksMTIg QEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNl ICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAJCXJlc3RhcmdldHMgPSBsYXBwZW5kKHJlc3Rhcmdl dHMsIHJlc3RhcmdldCk7CiAKIAkJLyoKLQkJICogQWRkIERFRklORSBleHByZXNzaW9uIChSZXN0 YXJnZXQtPnZhbCkgdG8gdGhlIHRhcmdldGxpc3QgYXMgYQotCQkgKiBUYXJnZXRFbnRyeSBpZiBp dCBkb2VzIG5vdCBleGlzdCB5ZXQuIFBsYW5uZXIgd2lsbCBhZGQgdGhlIGNvbHVtbgotCQkgKiBy ZWYgdmFyIG5vZGUgdG8gdGhlIG91dGVyIHBsYW4ncyB0YXJnZXQgbGlzdCBsYXRlciBvbi4gVGhp cyBtYWtlcwotCQkgKiBERUZJTkUgZXhwcmVzc2lvbiBjb3VsZCBhY2Nlc3MgdGhlIG91dGVyIHR1 cGxlIHdoaWxlIGV2YWx1YXRpbmcKLQkJICogUEFUVEVSTi4KKwkJICogVHJhbnNmb3JtIHRoZSBE RUZJTkUgZXhwcmVzc2lvbiAocmVzdGFyZ2V0LT52YWwpIGFuZCBhZGQgaXQgdG8gdGhlCisJCSAq IHRhcmdldGxpc3QgYXMgYSBUYXJnZXRFbnRyeSBpZiBub3QgYWxyZWFkeSBwcmVzZW50LCBzbyB0 aGUgcGxhbm5lcgorCQkgKiBjYW4gcHJvcGFnYXRlIHRoZSByZWZlcmVuY2VkIGNvbHVtbnMgdG8g dGhlIG91dGVyIHBsYW4ncworCQkgKiB0YXJnZXRsaXN0LgogCQkgKgotCQkgKiBOb3RlOiBmaW5k VGFyZ2V0bGlzdEVudHJ5U1FMOTkgZG9lcyBFeHByIHRyYW5zZm9ybWF0aW9uIGFuZCBjbG9iYmVy CisJCSAqIE5vdGU6IGZpbmRUYXJnZXRsaXN0RW50cnlTUUw5OSB0cmFuc2Zvcm1zIGFuZCBjbG9i YmVycwogCQkgKiByZXN0YXJnZXQtPnZhbC4KIAkJICovCiAKQEAgLTM0Nyw2ICszODUsNyBAQCB0 cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndj LCBXaW5kb3dEZWYgKndpbmRlZiwKIAkJZGVmaW5lQ2xhdXNlID0gbGFwcGVuZChkZWZpbmVDbGF1 c2UsIHRlRGVmaW5lKTsKIAl9CiAJbGlzdF9mcmVlKHJlc3RhcmdldHMpOworCXBzdGF0ZS0+cF9y cHJfcGF0dGVybl92YXJzID0gTklMOwogCiAJLyoKIAkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgcm93 IHBhdHRlcm4gZGVmaW5pdGlvbiBzZWFyY2ggY29uZGl0aW9uIGlzIGEgYm9vbGVhbgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9ub2RlLmgKaW5kZXggNGRjN2U1NzM4YWUuLmY1NWQ0YzE0YjBhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9ub2RlLmgKQEAgLTIwOCw2ICsyMDgsNyBAQCBzdHJ1Y3QgUGFyc2VTdGF0ZQogCVBh cnNlTmFtZXNwYWNlSXRlbSAqcF9ncm91cGluZ19uc2l0ZW07CS8qIE5TSXRlbSBmb3IgZ3JvdXBp bmcsIG9yIE5VTEwgKi8KIAlMaXN0CSAgICpwX3dpbmRvd2RlZnM7CS8qIHJhdyByZXByZXNlbnRh dGlvbnMgb2Ygd2luZG93IGNsYXVzZXMgKi8KIAlQYXJzZUV4cHJLaW5kIHBfZXhwcl9raW5kOwkv KiB3aGF0IGtpbmQgb2YgZXhwcmVzc2lvbiB3ZSdyZSBwYXJzaW5nICovCisJTGlzdAkgICAqcF9y cHJfcGF0dGVybl92YXJzOyAvKiBSUFIgdmFyaWFibGUgbmFtZXMgZm9yIERFRklORSBjbGF1c2Ug Ki8KIAlpbnQJCQlwX25leHRfcmVzbm87CS8qIG5leHQgdGFyZ2V0bGlzdCByZXNubyB0byBhc3Np Z24gKi8KIAlMaXN0CSAgICpwX211bHRpYXNzaWduX2V4cHJzOwkvKiBqdW5rIHRsaXN0IGVudHJp ZXMgZm9yIG11bHRpYXNzaWduICovCiAJTGlzdAkgICAqcF9sb2NraW5nX2NsYXVzZTsJLyogcmF3 IEZPUiBVUERBVEUvRk9SIFNIQVJFIGluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf YmFzZS5vdXQKaW5kZXggNDNlZWEzMjEzMGYuLmFiODc4NDQzMzc5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtMjY4Miw5ICsyNjgyLDcgQEAgTElORSA2OiAgICAg REVGSU5FIEEgQVMgdmFsID4gMAogICAgICAgICAgICAgXgogLS0gRXhwZWN0ZWQ6IFN5bnRheCBl cnJvcgogLS0gUXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2VzIChOT1QgU1VQUE9SVEVEKQotLS0g UGF0dGVybiB2YXJpYWJsZXMgaW4gREVGSU5FIGNsYXVzZSBjYW5ub3QgdXNlIHF1YWxpZmllZCBy ZWZlcmVuY2VzIChBLnByaWNlKQotLS0gVGhpcyBnaXZlcyBhIGNvbmZ1c2luZyBlcnJvciBhYm91 dCBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5Ci0tLSBRdWFsaWZpZWQgcmVmZXJlbmNlIGluIERF RklORSBjbGF1c2UKKy0tIFBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5vdCBzdXBw b3J0ZWQgKHZhbGlkIHBlciDCpzQuMTYsIG5vdCB5ZXQgaW1wbGVtZW50ZWQpCiBTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CiBGUk9NIHJwcl9lcnIKIFdJTkRPVyB3IEFTICgKQEAgLTI2OTMsMTAgKzI2 OTEsNDUgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErKQogICAgIERFRklORSBBIEFT IEEudmFsID4gMAogKTsKLUVSUk9SOiAgbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFi bGUgImEiCitFUlJPUjogIHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVu Y2UgImEudmFsIiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UKIExJTkUgNzogICAg IERFRklORSBBIEFTIEEudmFsID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhw ZWN0ZWQ6IEVSUk9SOiBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAiYSIKKy0t IFBBVFRFUk4tb25seSB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRlZCBldmVu IHdpdGhvdXQgREVGSU5FIGVudHJ5CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9l cnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIrKQorICAg IERFRklORSBBIEFTIEIudmFsID4gMAorKTsKK0VSUk9SOiAgcGF0dGVybiB2YXJpYWJsZSBxdWFs aWZpZWQgY29sdW1uIHJlZmVyZW5jZSAiYi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5F IGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgQi52YWwgPiAwCisgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBERUZJTkUtb25seSB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogc3Rp bGwgYSBwYXR0ZXJuIHZhcmlhYmxlLCBub3QgYSByYW5nZSB2YXJpYWJsZQorU0VMRUNUIENPVU5U KCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIEIudmFsID4gMAor KTsKK0VSUk9SOiAgcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAi Yi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVG SU5FIEEgQVMgdmFsID4gMCwgQiBBUyBCLnZhbCA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVk IG5hbWU6IG5vdCBhbGxvd2VkIChwcm9oaWJpdGVkIGJ5IMKnNi41KQorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBycHJfZXJyLnZhbCA+IDAKKyk7CitFUlJPUjog IHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlICJycHJfZXJyLnZhbCIg aXMgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMg cnByX2Vyci52YWwgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBTZW1hbnRpYyBl cnJvcnMKIC0tIFVuZGVmaW5lZCBjb2x1bW4gaW4gREVGSU5FCiBTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CkBAIC00Njc0LDggKzQ3MDcsOCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgT1JERVIgQlkgdDEu aWQKICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK ICAgICBQQVRURVJOIChBKyBCKQotICAgIERFRklORSBBIEFTIHQxLnZhbDEgPiAyMCwKLSAgICAg ICAgICAgQiBBUyB0Mi52YWwyID4gMjAwCisgICAgREVGSU5FIEEgQVMgdmFsMSA+IDIwLAorICAg ICAgICAgICBCIEFTIHZhbDIgPiAyMDAKICkKIE9SREVSIEJZIHQxLmlkOwogIGlkIHwgdmFsMSB8 IHZhbDIgfCBjbnQgCkBAIC00NzA5LDE3ICs0NzQyLDE4IEBAIE9SREVSIEJZIHQxLmlkLCB0Mi5p ZDsKICg0IHJvd3MpCiAKIC0tIFNlbGYtSm9pbiB3aXRoIFJQUgotU0VMRUNUIGEuaWQsIGEudmFs MSwgYi52YWwxIGFzIHZhbDFfbmV4dCwKK1NFTEVDVCBpZCwgdmFsMSwgdmFsMV9uZXh0LAogICAg ICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKLUZST00gcnByX2pvaW4xIGEKLUlOTkVSIEpPSU4g cnByX2pvaW4xIGIgT04gYS5pZCArIDEgPSBiLmlkCitGUk9NIChTRUxFQ1QgYS5pZCwgYS52YWwx LCBiLnZhbDEgYXMgdmFsMV9uZXh0CisgICAgICBGUk9NIHJwcl9qb2luMSBhCisgICAgICBJTk5F UiBKT0lOIHJwcl9qb2luMSBiIE9OIGEuaWQgKyAxID0gYi5pZCkgc3ViCiBXSU5ET1cgdyBBUyAo Ci0gICAgT1JERVIgQlkgYS5pZAorICAgIE9SREVSIEJZIGlkCiAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgUEFUVEVSTiAoWCspCi0gICAg REVGSU5FIFggQVMgYS52YWwxIDwgYi52YWwxCisgICAgREVGSU5FIFggQVMgdmFsMSA8IHZhbDFf bmV4dAogKQotT1JERVIgQlkgYS5pZDsKK09SREVSIEJZIGlkOwogIGlkIHwgdmFsMSB8IHZhbDFf bmV4dCB8IGNudCAKIC0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tCiAgIDEgfCAgIDEwIHwg ICAgICAgIDIwIHwgICA0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFz ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKaW5kZXggOTkyYzA4MTIw NWEuLjk3YjYyYTczYTBlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFz ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCkBAIC0xODkxLDEw ICsxODkxLDggQEAgV0lORE9XIHcgQVMgKAogLS0gRXhwZWN0ZWQ6IFN5bnRheCBlcnJvcgogCiAt LSBRdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZXMgKE5PVCBTVVBQT1JURUQpCi0tLSBQYXR0ZXJu IHZhcmlhYmxlcyBpbiBERUZJTkUgY2xhdXNlIGNhbm5vdCB1c2UgcXVhbGlmaWVkIHJlZmVyZW5j ZXMgKEEucHJpY2UpCi0tLSBUaGlzIGdpdmVzIGEgY29uZnVzaW5nIGVycm9yIGFib3V0IG1pc3Np bmcgRlJPTS1jbGF1c2UgZW50cnkKIAotLS0gUXVhbGlmaWVkIHJlZmVyZW5jZSBpbiBERUZJTkUg Y2xhdXNlCistLSBQYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3Qgc3VwcG9ydGVk ICh2YWxpZCBwZXIgwqc0LjE2LCBub3QgeWV0IGltcGxlbWVudGVkKQogU0VMRUNUIENPVU5UKCop IE9WRVIgdwogRlJPTSBycHJfZXJyCiBXSU5ET1cgdyBBUyAoCkBAIC0xOTAzLDcgKzE5MDEsMzYg QEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErKQogICAgIERFRklORSBBIEFTIEEudmFs ID4gMAogKTsKLS0tIEV4cGVjdGVkOiBFUlJPUjogbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBm b3IgdGFibGUgImEiCisKKy0tIFBBVFRFUk4tb25seSB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTog bm90IHN1cHBvcnRlZCBldmVuIHdpdGhvdXQgREVGSU5FIGVudHJ5CitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErIEIrKQorICAgIERFRklORSBBIEFTIEIudmFsID4gMAorKTsKKworLS0gREVGSU5F LW9ubHkgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IHN0aWxsIGEgcGF0dGVybiB2YXJpYWJsZSwg bm90IGEgcmFuZ2UgdmFyaWFibGUKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2Vy cgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdmFsID4gMCwgQiBBUyBCLnZhbCA+IDAKKyk7CisKKy0tIEZST00tY2xhdXNlIHJh bmdlIHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3QgYWxsb3dlZCAocHJvaGliaXRlZCBieSDC pzYuNSkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcnByX2Vy ci52YWwgPiAwCispOwogCiAtLSBTZW1hbnRpYyBlcnJvcnMKIApAQCAtMjk4Myw4ICszMDEwLDgg QEAgV0lORE9XIHcgQVMgKAogICAgIE9SREVSIEJZIHQxLmlkCiAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgUEFUVEVSTiAoQSsgQikKLSAg ICBERUZJTkUgQSBBUyB0MS52YWwxID4gMjAsCi0gICAgICAgICAgIEIgQVMgdDIudmFsMiA+IDIw MAorICAgIERFRklORSBBIEFTIHZhbDEgPiAyMCwKKyAgICAgICAgICAgQiBBUyB2YWwyID4gMjAw CiApCiBPUkRFUiBCWSB0MS5pZDsKIApAQCAtMzAwNSwxNyArMzAzMiwxOCBAQCBPUkRFUiBCWSB0 MS5pZCwgdDIuaWQ7CiAKIC0tIFNlbGYtSm9pbiB3aXRoIFJQUgogCi1TRUxFQ1QgYS5pZCwgYS52 YWwxLCBiLnZhbDEgYXMgdmFsMV9uZXh0LAorU0VMRUNUIGlkLCB2YWwxLCB2YWwxX25leHQsCiAg ICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAotRlJPTSBycHJfam9pbjEgYQotSU5ORVIgSk9J TiBycHJfam9pbjEgYiBPTiBhLmlkICsgMSA9IGIuaWQKK0ZST00gKFNFTEVDVCBhLmlkLCBhLnZh bDEsIGIudmFsMSBhcyB2YWwxX25leHQKKyAgICAgIEZST00gcnByX2pvaW4xIGEKKyAgICAgIElO TkVSIEpPSU4gcnByX2pvaW4xIGIgT04gYS5pZCArIDEgPSBiLmlkKSBzdWIKIFdJTkRPVyB3IEFT ICgKLSAgICBPUkRFUiBCWSBhLmlkCisgICAgT1JERVIgQlkgaWQKICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICAgICBQQVRURVJOIChYKykKLSAg ICBERUZJTkUgWCBBUyBhLnZhbDEgPCBiLnZhbDEKKyAgICBERUZJTkUgWCBBUyB2YWwxIDwgdmFs MV9uZXh0CiApCi1PUkRFUiBCWSBhLmlkOworT1JERVIgQlkgaWQ7CiAKIERST1AgVEFCTEUgcnBy X2pvaW4xLCBycHJfam9pbjI7CiAKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000522db7064bf46984--