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 1v9ZvL-002mhq-DW for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Oct 2025 02:10:30 +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 1v9ZvK-00GgHp-1g for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Oct 2025 02:10:29 +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 1v9ZvJ-00GgHh-Lr for pgsql-hackers@lists.postgresql.org; Fri, 17 Oct 2025 02:10:28 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v9ZvG-002dLW-0h for pgsql-hackers@postgresql.org; Fri, 17 Oct 2025 02:10:28 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b40f11a1027so258195166b.2 for ; Thu, 16 Oct 2025 19:10:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760667024; x=1761271824; 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=NsM/cVKjvZz41mO4IjbShCXJ9AtNBaqTHbyZd4CMMiw=; b=j90OlkrCryJzfTmc5mVOAL3oEIx5qvNRQb+gj4SS3Vz3bbrOOuVuEadq0Djmvjt9wX XLLopz8xG+G8iUCDd4BNFFKFRKK2Y71gyJizllAWIXqSx9/H6uSH7N35LCKT3s6vBpPc H/X/j8g9hRzRIYT9/ia3T+1MmhCOg7WSxqZc6/wPl9WQNpXYMoImSOXpjS44v/VL6y0I z7eTSheXkHzgXqayOpXsh4e9FR3xShbzCYB03zLSk2i/VroqI/r0cX7nTXXWUfhgZ3SZ 2ZtjOd5d+MFD2VGfE9wQSDlzrK7CUSrwypxSLk1dq/i3iJqEL5x8+DPQhzWhfFqRIagD BEFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760667024; x=1761271824; 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=NsM/cVKjvZz41mO4IjbShCXJ9AtNBaqTHbyZd4CMMiw=; b=qRFEAg54Fnk/hz8j7mwqNEg4xg9fgKMLJnqFISqK+EzSL33j0d/iwp18dEBGgN1Nbv 01YVw9+zy7UC+6gDRzpCNoO3lL92PlSl/i8QyehL0i+x8wrAkffuOzdC9GhakJtql41o bY1QlPByxirDUaSDGPybeS84oN/mfh1EcooOXyIaxz5TkvHj9ex6HU4OhqQurmk06kHZ GQfni4jffClaG82wKpjLDNQM/XKIGKsFfyL/nB+3Ak6Kf88n++OanJ6GJ7T9+/4Ung0o aItYh9MH5yoUMx9oEUwYLqXaP+dZV38wuHAjWNe1XiYhmpck1zfTRko9vdvObRju4Izo /eOg== X-Forwarded-Encrypted: i=1; AJvYcCWCEsVaSGiB8dcktKAFrHKctO2Djy6PPvmI79B6Af3SLbNvYOdhx/pftM4F/ROgof6QT7jQqCCUPMm1V95j@postgresql.org X-Gm-Message-State: AOJu0Yz934QrdBEA4JNK9oXEnF1HruDred7ilWVWg3/b4qSKZLFMDal6 6lLdNHC/9xlbUW2jdbOqIZ6v64bXSVMd9K/3ci2tcHGFITHalCJvOtej+TNpZ3dh5RoonZjkn4m cb2BHjBzhl24+XsrKm0kkdJFuchRSrnU= X-Gm-Gg: ASbGncuh9mk8QzFfsg/dB6iFIB2bTFBZ3IU4JaDQ6PuudjiCqe5PnDVfPLzfv8t6mFf DyGMMqTPqc7YBVuaEaBOrgztSTJXvNxSnYfkoZBzPGviVRTKifZ/Tgr1BqG2edOZ8WncFfXoM4B GWqMSF5BLATPWAVn/ghVYIPqkRm301Z1g7qy8qlSISmEgA1oNAl5zeWFqpKeEqculV7YEpNW1Iu 3Xc8YOW22MivalQ3QDOTNyvT0NLPSsbVCMSsmMKrOJRROZP2Pj8GpifYl2FK6la6QzM3OB53R5H 9E98sjFfcBj2e+HadiOeN2I46AbmZvba9K1nJCe2ZSCwAAJtnUssMzgwDNJi X-Google-Smtp-Source: AGHT+IEhh2BNVErw2nuZytFukc1+0ryNni6gpKys2rbqxsmghCFoTDjjhv3Dmjti8AJ0JeOnGbpSWr32MjRyVI8tN1Q= X-Received: by 2002:a17:907:bb49:b0:b4b:4f7:7a51 with SMTP id a640c23a62f3a-b6475706fc2mr223065766b.62.1760667024100; Thu, 16 Oct 2025 19:10:24 -0700 (PDT) MIME-Version: 1.0 References: <29f9e7abc90c3a4fe4a44026141c0d6c@oss.nttdata.com> In-Reply-To: <29f9e7abc90c3a4fe4a44026141c0d6c@oss.nttdata.com> From: Xuneng Zhou Date: Fri, 17 Oct 2025 10:10:12 +0800 X-Gm-Features: AS18NWDdZg8AqQY9ByWKgowOsolxYuxagVyD3r-a7Q1l6-n6WO3aAf2lUrMYdOA Message-ID: Subject: Re: [Proposal] Expose internal MultiXact member count function for efficient monitoring To: torikoshia , Naga Appani Cc: Ashutosh Bapat , Michael Paquier , Kirill Reshke , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="0000000000008a45c80641513c3d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008a45c80641513c3d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Fri, Oct 17, 2025 at 8:28=E2=80=AFAM torikoshia wrote: > > On 2025-09-15 14:47, Naga Appani wrote: > > > With these updates in v9, I believe the patch is now in good shape to > > be marked RFC. I=E2=80=99ll go ahead and update the CommitFest entry. > > As shown in the commitfest app, v9 patch fails to build: > > multixactfuncs.c:129:28: error: call to undeclared function > 'heap_form_tuple'; ISO C99 and later do not support implicit function > declarations [-Wimplicit-function-declaration] > 129 | return > HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls)); > | ^ > multixactfuncs.c:129:28: note: did you mean 'brin_form_tuple'? > ../../../../src/include/access/brin_tuple.h:96:19: note: > 'brin_form_tuple' declared here > 96 | extern BrinTuple *brin_form_tuple(BrinDesc *brdesc, BlockNumber > blkno, > | ^ > multixactfuncs.c:129:28: error: incompatible integer to pointer > conversion passing 'int' to parameter of type 'const HeapTupleData *' > (aka 'const struct HeapTupleData *') [-Wint-conversion] > 129 | return > HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls)); > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../../../../src/include/funcapi.h:230:40: note: passing argument to > parameter 'tuple' here > 230 | HeapTupleGetDatum(const HeapTupleData *tuple) > | ^ > 2 errors generated. > > Could you please update the patch to fix this? Here=E2=80=99s the updated v10 patch, now including access/htup_details.h i= n src/backend/utils/adt/multixactfuncs.c. I=E2=80=99m also interested in this patch and plan to review it. Best, Xuneng --0000000000008a45c80641513c3d Content-Type: application/octet-stream; name="v10-0001-Add-pg_get_multixact_stats-function-for-monitori.patch" Content-Disposition: attachment; filename="v10-0001-Add-pg_get_multixact_stats-function-for-monitori.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgu7mmrc0 RnJvbSAyMDhmZmRlMmRmZWJmZGVlZDU5ODkwYmJiMTE3ODJiYmQ3ZGFmOGMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog RnJpLCAxNyBPY3QgMjAyNSAxMDowMjowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEwXSBBZGQg cGdfZ2V0X211bHRpeGFjdF9zdGF0cygpIGZ1bmN0aW9uIGZvciBtb25pdG9yaW5nIAogTXVsdGlY YWN0IHVzYWdlCgpFeHBvc2UgbXVsdGl4YWN0IHN0YXRlIHZpYSBhIG5ldyBTUUwtY2FsbGFibGUg ZnVuY3Rpb24gcGdfZ2V0X211bHRpeGFjdF9zdGF0cygpLApyZXR1cm5pbmc6Ci0gbnVtX214aWRz ICAgICAgICAgIDogbnVtYmVyIG9mIE11bHRpWGFjdCBJRHMgaW4gdXNlCi0gbnVtX21lbWJlcnMg ICAgICAgIDogbnVtYmVyIG9mIG1lbWJlciBlbnRyaWVzIGluIHVzZQotIG1lbWJlcnNfc2l6ZSAg ICAgICA6IGJ5dGVzIHVzZWQgYnkgbnVtX21lbWJlcnMgaW4gcGdfbXVsdGl4YWN0L21lbWJlcnMg ZGlyZWN0b3J5Ci0gb2xkZXN0X211bHRpeGFjdCAgIDogb2xkZXN0IE11bHRpWGFjdCBJRCBzdGls bCBuZWVkZWQKLSBvbGRlc3Rfb2Zmc2V0ICAgICAgOiBvbGRlc3QgbWVtYmVyIG9mZnNldCBzdGls bCBpbiB1c2UKClRoaXMgcGF0Y2ggYWRkcyBwZ19nZXRfbXVsdGl4YWN0X3N0YXRzKCkgZnVuY3Rp b24KICAgLSBTUUwtY2FsbGFibGUgaW50ZXJmYWNlIHRvIEdldE11bHRpWGFjdEluZm8oKQogICAt IFJldHVybnMgTlVMTHMgaWYgTXVsdGlYYWN0IHN5c3RlbSBub3QgaW5pdGlhbGl6ZWQKICAgLSBJ bmNsdWRlcyBpc29sYXRpb24gdGVzdHMgZm9yIG1vbml0b3JpbmcgaW52YXJpYW50cwoKRG9jdW1l bnRhdGlvbiB1cGRhdGVzOgotIGZ1bmMtaW5mby5zZ21sOiBhZGQgZnVuY3Rpb24gZW50cnkKLSBt YWludGVuYW5jZS5zZ21sOiBtZW50aW9uIG1vbml0b3JpbmcgbXVsdGl4YWN0IHVzYWdlCgpCdWls ZCBhbmQgY2F0YWxvZzoKLSBBZGQgZnVuY3Rpb24gdG8gZXhpc3RpbmcgbXVsdGl4YWN0ZnVuY3Mu YwotIHBnX3Byb2MuZGF0IGVudHJ5CgpBdXRob3I6IE5hZ2EgQXBwYW5pIDxuYWducmlrQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogTWljaGFlbCBQYXF1aWVyIDxtaWNoYWVsQHBhcXVpZXIueHl6 PgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv Q0ElMkJRZVklMkJBQXNZSzZXdkJXNHFZekh6NGJhaEh5Y0RBWV9xNUVDbUhrRVZfZUI5Y2t6ZyU0 MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwgICAg ICAgICAgICAgIHwgIDM1ICsrKysrKwogZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAg ICAgICAgICAgICAgIHwgIDU4ICsrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRp eGFjdGZ1bmNzLmMgICAgICAgIHwgIDQ3ICsrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgICAgICAgICAgICAgICB8ICAxMCArKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9t dWx0aXhhY3Rfc3RhdHMub3V0ICAgIHwgIDkyICsrKysrKysrKysrKysrCiBzcmMvdGVzdC9pc29s YXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL211bHRpeGFjdF9zdGF0cy5zcGVjIHwgMTE5ICsrKysrKysrKysrKysrKysrKwog NyBmaWxlcyBjaGFuZ2VkLCAzNTYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbXVsdGl4YWN0X3N0YXRz Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9tdWx0aXhh Y3Rfc3RhdHMuc3BlYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5z Z21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5kZXggYzM5MzgzMmQ5NGMu LjYyM2I1OTBlMzM4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbApAQCAtMjk3NSw2ICsyOTc1 LDQxIEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3Rn cmVzfQogICAgICAgICBtb2RpZnkga2V5IGNvbHVtbnMuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+ CiAgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0X211bHRpeGFjdF9zdGF0czwvcHJpbWFyeT4K KyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfbXVsdGl4YWN0 X3N0YXRzPC9mdW5jdGlvbj4gKCkKKyAgICAgICAgPHJldHVybnZhbHVlPnJlY29yZDwvcmV0dXJu dmFsdWU+CisgICAgICAgICggPHBhcmFtZXRlcj5udW1fbXhpZHM8L3BhcmFtZXRlcj4gPHR5cGU+ aW50ZWdlcjwvdHlwZT4sCisgICAgICAgICAgPHBhcmFtZXRlcj5udW1fbWVtYmVyczwvcGFyYW1l dGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+LAorICAgICAgICAgIDxwYXJhbWV0ZXI+bWVtYmVyc19z aXplPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAgICAgPHBhcmFtZXRl cj5vbGRlc3RfbXVsdGl4YWN0PC9wYXJhbWV0ZXI+IDx0eXBlPnhpZDwvdHlwZT4sCisgICAgICAg ICAgPHBhcmFtZXRlcj5vbGRlc3Rfb2Zmc2V0PC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlw ZT4gKQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyBzdGF0 aXN0aWNzIGFib3V0IGN1cnJlbnQgbXVsdGl4YWN0IHVzYWdlOgorICAgICAgICA8bGl0ZXJhbD5u dW1fbXhpZHM8L2xpdGVyYWw+IGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgbXVsdGl4YWN0IElEcyBj dXJyZW50bHkgcHJlc2VudCBpbiB0aGUgc3lzdGVtLAorICAgICAgICA8bGl0ZXJhbD5udW1fbWVt YmVyczwvbGl0ZXJhbD4gaXMgdGhlIHRvdGFsIG51bWJlciBvZiBtdWx0aXhhY3QgbWVtYmVyIGVu dHJpZXMgY3VycmVudGx5CisgICAgICAgIHByZXNlbnQgaW4gdGhlIHN5c3RlbSwKKyAgICAgICAg PGxpdGVyYWw+bWVtYmVyc19zaXplPC9saXRlcmFsPiBpcyB0aGUgc3RvcmFnZSBvY2N1cGllZCBi eSA8bGl0ZXJhbD5udW1fbWVtYmVyczwvbGl0ZXJhbD4KKyAgICAgICAgaW4gdGhlIDxsaXRlcmFs PnBnX211bHRpeGFjdC9tZW1iZXJzPC9saXRlcmFsPiBkaXJlY3RvcnksCisgICAgICAgIDxsaXRl cmFsPm9sZGVzdF9tdWx0aXhhY3Q8L2xpdGVyYWw+IGlzIHRoZSBvbGRlc3QgbXVsdGl4YWN0IElE IHN0aWxsIGluIHVzZSwgYW5kCisgICAgICAgIDxsaXRlcmFsPm9sZGVzdF9vZmZzZXQ8L2xpdGVy YWw+IGlzIHRoZSBvbGRlc3QgbWVtYmVyIG9mZnNldCBzdGlsbCBpbiB1c2UuCisgICAgICAgPC9w YXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZnVuY3Rpb24gcmVwb3J0cyBzdGF0aXN0 aWNzIGF0IHRoZSB0aW1lIGl0IGlzIGludm9rZWQuIFZhbHVlcyBtYXkgdmFyeSBiZXR3ZWVuIGNh bGxzLAorICAgICAgICBldmVuIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4KKyAgICAgICA8 L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJldHVybnMgPGxpdGVyYWw+TlVMTDwvbGl0 ZXJhbD4gd2hlbiBtdWx0aXhhY3Qgc3RhdGlzdGljcyBhcmUgdW5hdmFpbGFibGUsCisgICAgICAg IHN1Y2ggYXMgZHVyaW5nIHN0YXJ0dXAgYmVmb3JlIG11bHRpeGFjdCBpbml0aWFsaXphdGlvbiBj b21wbGV0ZXMuCisgICAgICAgIFNwZWNpZmljYWxseSwgdGhpcyBvY2N1cnMgd2hlbiB0aGUgb2xk ZXN0IG11bHRpeGFjdCBvZmZzZXQKKyAgICAgICAgY29ycmVzcG9uZGluZyB0byBhIG11bHRpeGFj dCByZWZlcmVuY2VkIGJ5IGEgcmVsYXRpb24gaXMgbm90IGtub3duLgorICAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+CiAgICA8 L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgYi9kb2Mv c3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAppbmRleCBlN2E5ZjU4YzAxNS4uY2Y1NjMwNzA5MGQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9tYWludGVuYW5jZS5zZ21sCkBAIC04MTMsMTQgKzgxMyw2MCBAQCBISU5UOiAgRXhlY3V0 ZSBhIGRhdGFiYXNlLXdpZGUgVkFDVVVNIGluIHRoYXQgZGF0YWJhc2UuCiAgICAgPHBhcmE+CiAg ICAgIEFzIGEgc2FmZXR5IGRldmljZSwgYW4gYWdncmVzc2l2ZSB2YWN1dW0gc2NhbiB3aWxsCiAg ICAgIG9jY3VyIGZvciBhbnkgdGFibGUgd2hvc2UgbXVsdGl4YWN0LWFnZSBpcyBncmVhdGVyIHRo YW4gPHhyZWYKLSAgICAgbGlua2VuZD0iZ3VjLWF1dG92YWN1dW0tbXVsdGl4YWN0LWZyZWV6ZS1t YXgtYWdlIi8+LiAgQWxzbywgaWYgdGhlCi0gICAgIHN0b3JhZ2Ugb2NjdXBpZWQgYnkgbXVsdGl4 YWN0cyBtZW1iZXJzIGV4Y2VlZHMgYWJvdXQgMTBHQiwgYWdncmVzc2l2ZSB2YWN1dW0KLSAgICAg c2NhbnMgd2lsbCBvY2N1ciBtb3JlIG9mdGVuIGZvciBhbGwgdGFibGVzLCBzdGFydGluZyB3aXRo IHRob3NlIHRoYXQKLSAgICAgaGF2ZSB0aGUgb2xkZXN0IG11bHRpeGFjdC1hZ2UuICBCb3RoIG9m IHRoZXNlIGtpbmRzIG9mIGFnZ3Jlc3NpdmUKLSAgICAgc2NhbnMgd2lsbCBvY2N1ciBldmVuIGlm IGF1dG92YWN1dW0gaXMgbm9taW5hbGx5IGRpc2FibGVkLiBUaGUgbWVtYmVycyBzdG9yYWdlCi0g ICAgIGFyZWEgY2FuIGdyb3cgdXAgdG8gYWJvdXQgMjBHQiBiZWZvcmUgcmVhY2hpbmcgd3JhcGFy b3VuZC4KKyAgICAgbGlua2VuZD0iZ3VjLWF1dG92YWN1dW0tbXVsdGl4YWN0LWZyZWV6ZS1tYXgt YWdlIi8+LiBBbHNvLCBpZiB0aGUgbnVtYmVyCisgICAgIG9mIG11bHRpeGFjdCBtZW1iZXIgZW50 cmllcyBjcmVhdGVkIGV4Y2VlZHMgYXBwcm94aW1hdGVseSAyXjMxIGVudHJpZXMKKyAgICAgKG9j Y3VweWluZyByb3VnaGx5IDEwR0IgaW4gdGhlIDxsaXRlcmFsPnBnX211bHRpeGFjdC9tZW1iZXJz PC9saXRlcmFsPiBkaXJlY3RvcnkpLAorICAgICBhZ2dyZXNzaXZlIHZhY3V1bSBzY2FucyB3aWxs IG9jY3VyIG1vcmUgb2Z0ZW4gZm9yIGFsbCB0YWJsZXMsIHN0YXJ0aW5nIHdpdGggdGhvc2UgdGhh dAorICAgICBoYXZlIHRoZSBvbGRlc3QgbXVsdGl4YWN0LWFnZS4gQm90aCBvZiB0aGVzZSBraW5k cyBvZiBhZ2dyZXNzaXZlCisgICAgIHNjYW5zIHdpbGwgb2NjdXIgZXZlbiBpZiBhdXRvdmFjdXVt IGlzIG5vbWluYWxseSBkaXNhYmxlZC4gVGhlIG1lbWJlcnMgY2FuIGdyb3cKKyAgICAgdXAgdG8g YXBwcm94aW1hdGVseSAyXjMyIGVudHJpZXMgKG9jY3VweWluZyByb3VnaGx5IDIwR0IgaW4gdGhl CisgICAgIDxsaXRlcmFsPnBnX211bHRpeGFjdC9tZW1iZXJzPC9saXRlcmFsPiBkaXJlY3Rvcnkp IGJlZm9yZSByZWFjaGluZyB3cmFwYXJvdW5kLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgor ICAgICBUaGUgPGZ1bmN0aW9uPnBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKTwvZnVuY3Rpb24+IGZ1 bmN0aW9uIGRlc2NyaWJlZCBpbgorICAgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtcGctc25h cHNob3QiLz4gcHJvdmlkZXMgYSB3YXkgdG8gbW9uaXRvcgorICAgICBtdWx0aXhhY3QgYWxsb2Nh dGlvbiBhbmQgdXNhZ2UgcGF0dGVybnMgaW4gcmVhbCB0aW1lLCBmb3IgZXhhbXBsZToKKyAgICAg PHByb2dyYW1saXN0aW5nPgorcG9zdGdyZXM9IyBTRUxFQ1QgKixwZ19zaXplX3ByZXR0eShtZW1i ZXJzX3NpemUpIG1lbWJlcnNfc2l6ZV9wcmV0dHkgRlJPTSBwZ19jYXRhbG9nLnBnX2dldF9tdWx0 aXhhY3Rfc3RhdHMoKTsKKyBudW1fbXhpZHMgfCBudW1fbWVtYmVycyB8IG1lbWJlcnNfc2l6ZSB8 IG9sZGVzdF9tdWx0aXhhY3QgfCBvbGRlc3Rfb2Zmc2V0IHwgbWVtYmVyc19zaXplX3ByZXR0eQor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDMxMTc0MDI5OSB8ICAy Nzg1MjQxMTc2IHwgIDEzOTI2MjA1ODgwIHwgICAgICAgICAgICAgICAgMiB8ICAgICAgICAgICAg IDMgfCAxMyBHQgorKDEgcm93KQorICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICBUaGlzIG91 dHB1dCBzaG93cyBhIHN5c3RlbSB3aXRoIHNpZ25pZmljYW50IG11bHRpeGFjdCBhY3Rpdml0eTog YWJvdXQgfjMxMiBtaWxsaW9uCisgICAgIG11bHRpeGFjdCBJRHMgYW5kIH4yLjggYmlsbGlvbiBt ZW1iZXIgZW50cmllcyBjb25zdW1pbmcgMTMgR0Igb2Ygc3RvcmFnZSBzcGFjZS4KKyAgICAgQnkg bGV2ZXJhZ2luZyB0aGlzIGluZm9ybWF0aW9uLCB0aGUgZnVuY3Rpb24gaGVscHM6CisgICAgIDxv cmRlcmVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8c2ltcGFyYT4KKyAgICAgICAg SWRlbnRpZnkgdW51c3VhbCBtdWx0aXhhY3QgYWN0aXZpdHkgZnJvbSBjb25jdXJyZW50IHJvdy1s ZXZlbCBsb2NrcworICAgICAgICBvciBmb3JlaWduIGtleSBvcGVyYXRpb25zLiBGb3IgZXhhbXBs ZSwgYSBzcGlrZSBpbiA8bGl0ZXJhbD5udW1fbXhpZHM8L2xpdGVyYWw+IG1pZ2h0IGluZGljYXRl CisgICAgICAgIG11bHRpcGxlIHNlc3Npb25zIHJ1bm5pbmcgPGxpdGVyYWw+VVBEQVRFPC9saXRl cmFsPiBzdGF0ZW1lbnRzIHdpdGggZm9yZWlnbiBrZXkgY2hlY2tzLAorICAgICAgICBjb25jdXJy ZW50IDxsaXRlcmFsPlNFTEVDVCBGT1IgU0hBUkU8L2xpdGVyYWw+IG9wZXJhdGlvbnMsIG9yIGZy ZXF1ZW50IHVzZSBvZiBzYXZlcG9pbnRzCisgICAgICAgIGNhdXNpbmcgbG9jayBjb250ZW50aW9u LgorICAgICAgIDwvc2ltcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHNpbXBhcmE+CisgICAgICAgIFRyYWNrIG11bHRpeGFjdCBjbGVhbnVwIGVmZmlj aWVuY3kgYnkgbW9uaXRvcmluZyBvbGRlc3RfbXVsdGl4YWN0LgorICAgICAgICBJZiB0aGlzIHZh bHVlIHJlbWFpbnMgdW5jaGFuZ2VkIHdoaWxlIDxsaXRlcmFsPm51bV9tZW1iZXJzPC9saXRlcmFs PiBncm93cywgaXQgY291bGQgaW5kaWNhdGUKKyAgICAgICAgdGhhdCBsb25nLXJ1bm5pbmcgdHJh bnNhY3Rpb25zIGFyZSBwcmV2ZW50aW5nIGNsZWFudXAsIG9yIGF1dG92YWN1dW0gaXMKKyAgICAg ICAgbm90IGtlZXBpbmcgdXAgd2l0aCB0aGUgd29ya2xvYWQuCisgICAgICAgPC9zaW1wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8c2ltcGFyYT4KKyAg ICAgICAgRGV0ZWN0IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBhY3RzIGJlZm9yZSB0aGV5IGJl Y29tZSBjcml0aWNhbC4KKyAgICAgICAgRm9yIGluc3RhbmNlLCBoaWdoIG11bHRpeGFjdCB1c2Fn ZSBmcm9tIGZyZXF1ZW50IHJvdy1sZXZlbCBsb2NraW5nIG9yCisgICAgICAgIGZvcmVpZ24ga2V5 IG9wZXJhdGlvbnMgY2FuIGxlYWQgdG8gaW5jcmVhc2VkIEkvTyBhbmQgQ1BVIG92ZXJoZWFkIGR1 cmluZworICAgICAgICB2YWN1dW0gb3BlcmF0aW9ucy4gTW9uaXRvcmluZyB0aGVzZSBzdGF0cyBo ZWxwcyB0dW5lIGF1dG92YWN1dW0gZnJlcXVlbmN5CisgICAgICAgIGFuZCB0cmFuc2FjdGlvbiBw YXR0ZXJucy4KKyAgICAgICA8L3NpbXBhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L29y ZGVyZWRsaXN0PgorICAgICA8L3BhcmE+CisKICAgICA8cGFyYT4KICAgICAgU2ltaWxhciB0byB0 aGUgWElEIGNhc2UsIGlmIGF1dG92YWN1dW0gZmFpbHMgdG8gY2xlYXIgb2xkIE1YSURzIGZyb20g YSB0YWJsZSwgdGhlCiAgICAgIHN5c3RlbSB3aWxsIGJlZ2luIHRvIGVtaXQgd2FybmluZyBtZXNz YWdlcyB3aGVuIHRoZSBkYXRhYmFzZSdzIG9sZGVzdCBNWElEcyByZWFjaCBmb3J0eQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbXVsdGl4YWN0ZnVuY3MuYwppbmRleCBlNzRlYTkzODM0OC4uNzgyMDQ1YWEy YzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXhhY3RmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXhhY3RmdW5jcy5jCkBAIC0xNCw2ICsxNCw3 IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTg1LDMgKzg2LDQ5IEBAIHBnX2dl dF9tdWx0aXhhY3RfbWVtYmVycyhQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JFVFVSTl9ET05F KGZ1bmNjeHQpOwogfQorCisvKgorICogcGdfZ2V0X211bHRpeGFjdF9zdGF0cworICoKKyAqIFJl dHVybnMgc3RhdGlzdGljcyBhYm91dCBjdXJyZW50IG11bHRpeGFjdCB1c2FnZS4KKyAqCisgKiBS ZXR1cm5zIE5VTEwgaWYgdGhlIG9sZGVzdCByZWZlcmVuY2VkIG9mZnNldCBpcyB1bmtub3duLgor ICovCitEYXR1bQorcGdfZ2V0X211bHRpeGFjdF9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQorewor CVR1cGxlRGVzYwl0dXBkZXNjOworCURhdHVtCQl2YWx1ZXNbNV07CisJYm9vbAkJbnVsbHNbNV07 CisJTXVsdGlYYWN0T2Zmc2V0CW1lbWJlcnM7CisJTXVsdGlYYWN0SWQJb2xkZXN0TXVsdGlYYWN0 SWQ7CisJdWludDMyCQltdWx0aXhhY3RzOworCU11bHRpWGFjdE9mZnNldAlvbGRlc3RPZmZzZXQ7 CisJaW50NjQJCW1lbWJlcnNCeXRlczsKKworCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2lu Zm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBl cnJtc2coInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpKSk7CisKKwlpZiAoR2V0TXVs dGlYYWN0SW5mbygmbXVsdGl4YWN0cywgJm1lbWJlcnMsICZvbGRlc3RNdWx0aVhhY3RJZCwgJm9s ZGVzdE9mZnNldCkpCisJeworCQkvKgorCQkgKiBDYWxjdWxhdGUgc3RvcmFnZSBzcGFjZSBmb3Ig bWVtYmVycy4gTWVtYmVycyBhcmUgc3RvcmVkIGluIGdyb3VwcyBvZiA0LAorCQkgKiB3aXRoIGVh Y2ggZ3JvdXAgdGFraW5nIDIwIGJ5dGVzLCByZXN1bHRpbmcgaW4gNSBieXRlcyBwZXIgbWVtYmVy LgorCQkgKiBOb3RlOiBUaGlzIGlnbm9yZXMgc21hbGwgcGFnZSBvdmVyaGVhZCAoMTIgYnl0ZXMg cGVyIDhLQikKKwkJICovCisJCW1lbWJlcnNCeXRlcyA9IChpbnQ2NCkgbWVtYmVycyAqIDU7CisK KwkJdmFsdWVzWzBdID0gVUludDMyR2V0RGF0dW0obXVsdGl4YWN0cyk7CisJCXZhbHVlc1sxXSA9 IFVJbnQzMkdldERhdHVtKG1lbWJlcnMpOworCQl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKG1l bWJlcnNCeXRlcyk7CisJCXZhbHVlc1szXSA9IFVJbnQzMkdldERhdHVtKG9sZGVzdE11bHRpWGFj dElkKTsKKwkJdmFsdWVzWzRdID0gVUludDMyR2V0RGF0dW0ob2xkZXN0T2Zmc2V0KTsKKwkJbWVt c2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisKKwkJcmV0dXJuIEhlYXBUdXBsZUdl dERhdHVtKGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSk7CisJfQorCisJ UEdfUkVUVVJOX05VTEwoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGI1MWQyYjE3 Mzc5Li5mZDU2OWY5Yzc2MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjYwMSw0ICsx MjYwMSwxNCBAQAogICBwcm9hcmduYW1lcyA9PiAne3BpZCxpb19pZCxpb19nZW5lcmF0aW9uLHN0 YXRlLG9wZXJhdGlvbixvZmYsbGVuZ3RoLHRhcmdldCxoYW5kbGVfZGF0YV9sZW4scmF3X3Jlc3Vs dCxyZXN1bHQsdGFyZ2V0X2Rlc2MsZl9zeW5jLGZfbG9jYWxtZW0sZl9idWZmZXJlZH0nLAogICBw cm9zcmMgPT4gJ3BnX2dldF9haW9zJyB9LAogCisjIEdldCBtdWx0aXhhY3QgdXNhZ2UKK3sgb2lk ID0+ICc5MDAxJywgZGVzY3IgPT4gJ2dldCBjdXJyZW50IG11bHRpeGFjdCB1c2FnZSBzdGF0aXN0 aWNzJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X211bHRpeGFjdF9zdGF0cycsCisgIHByb3ZvbGF0 aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLAor ICBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tpbnQ4LGludDgsaW50 OCx4aWQsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sb30nLAorICBwcm9hcmdu YW1lcyA9PiAne251bV9teGlkcyxudW1fbWVtYmVycyxtZW1iZXJzX3NpemUsb2xkZXN0X211bHRp eGFjdCxvbGRlc3Rfb2Zmc2V0fScsCisgIHByb3NyYyA9PiAncGdfZ2V0X211bHRpeGFjdF9zdGF0 cyd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbXVsdGl4 YWN0X3N0YXRzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tdWx0aXhhY3Rfc3Rh dHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OTg0NWYwNThl NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tdWx0aXhh Y3Rfc3RhdHMub3V0CkBAIC0wLDAgKzEsOTIgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNl c3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzbmFwMCBzMV9iZWdpbiBzMV9sb2NrIHNu YXAxIHMyX2JlZ2luIHMyX2xvY2sgc25hcDIgY2hlY2tfd2hpbGVfcGlubmVkIHMxX2NvbW1pdCBz Ml9jb21taXQKK3N0ZXAgc25hcDA6IAorICBDUkVBVEUgVEVNUCBUQUJMRSBzbmFwMCBBUworICBT RUxFQ1QgbnVtX214aWRzLCBudW1fbWVtYmVycywgb2xkZXN0X211bHRpeGFjdCwgb2xkZXN0X29m ZnNldAorICBGUk9NIHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKTsKKworc3RlcCBzMV9iZWdpbjog QkVHSU47CitzdGVwIHMxX2xvY2s6IFNFTEVDVCAxIEZST00gbXhxIFdIRVJFIGlkPTEgRk9SIEtF WSBTSEFSRTsKKz9jb2x1bW4/CistLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykKKworc3RlcCBz bmFwMTogCisgIENSRUFURSBURU1QIFRBQkxFIHNuYXAxIEFTCisgIFNFTEVDVCBudW1fbXhpZHMs IG51bV9tZW1iZXJzLCBvbGRlc3RfbXVsdGl4YWN0LCBvbGRlc3Rfb2Zmc2V0CisgIEZST00gcGdf Z2V0X211bHRpeGFjdF9zdGF0cygpOworCitzdGVwIHMyX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczJf bG9jazogU0VMRUNUIDEgRlJPTSBteHEgV0hFUkUgaWQ9MSBGT1IgS0VZIFNIQVJFOworP2NvbHVt bj8KKy0tLS0tLS0tCisgICAgICAgMQorKDEgcm93KQorCitzdGVwIHNuYXAyOiAKKyAgQ1JFQVRF IFRFTVAgVEFCTEUgc25hcDIgQVMKKyAgU0VMRUNUIG51bV9teGlkcywgbnVtX21lbWJlcnMsIG9s ZGVzdF9tdWx0aXhhY3QsIG9sZGVzdF9vZmZzZXQKKyAgRlJPTSBwZ19nZXRfbXVsdGl4YWN0X3N0 YXRzKCk7CisKK3N0ZXAgY2hlY2tfd2hpbGVfcGlubmVkOiAKKyAgU0VMRUNUIHIuYXNzZXJ0aW9u LCByLm9rCisgIEZST00gc25hcDAgczAKKyAgSk9JTiBzbmFwMSBzMSBPTiBUUlVFCisgIEpPSU4g c25hcDIgczIgT04gVFJVRSwKKyAgTEFURVJBTCB1bm5lc3QoCisgICAgQVJSQVlbCisgICAgICAn aXNfaW5pdF9teGlkcycsCisgICAgICAnaXNfaW5pdF9tZW1iZXJzJywKKyAgICAgICdpc19pbml0 X29sZGVzdF9teGlkJywKKyAgICAgICdpc19pbml0X29sZGVzdF9vZmYnLAorICAgICAgJ2lzX29s ZGVzdF9teGlkX25vbmRlY18wMScsCisgICAgICAnaXNfb2xkZXN0X214aWRfbm9uZGVjXzEyJywK KyAgICAgICdpc19vbGRlc3Rfb2ZmX25vbmRlY18wMScsCisgICAgICAnaXNfb2xkZXN0X29mZl9u b25kZWNfMTInLAorICAgICAgJ2lzX21lbWJlcnNfaW5jcmVhc2VkX2dlMScsCisgICAgICAnaXNf bXhpZHNfbm9uZGVjXzAxJywKKyAgICAgICdpc19teGlkc19ub25kZWNfMTInLAorICAgICAgJ2lz X21lbWJlcnNfbm9uZGVjXzAxJywKKyAgICAgICdpc19tZW1iZXJzX25vbmRlY18xMicKKyAgICBd LAorICAgIEFSUkFZWworICAgICAgKHMyLm51bV9teGlkcyAgICAgICAgSVMgTk9UIE5VTEwpLAor ICAgICAgKHMyLm51bV9tZW1iZXJzICAgICAgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm9sZGVz dF9tdWx0aXhhY3QgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm9sZGVzdF9vZmZzZXQgICAgSVMg Tk9UIE5VTEwpLAorCisgICAgICAoczEub2xkZXN0X211bHRpeGFjdDo6dGV4dDo6YmlnaW50ID49 IENPQUxFU0NFKHMwLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCwgMCkpLAorICAgICAg KHMyLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCA+PSBDT0FMRVNDRShzMS5vbGRlc3Rf bXVsdGl4YWN0Ojp0ZXh0OjpiaWdpbnQsIDApKSwKKyAgICAgIChzMS5vbGRlc3Rfb2Zmc2V0ICAg ID49IENPQUxFU0NFKHMwLm9sZGVzdF9vZmZzZXQsICAgIDApKSwKKyAgICAgIChzMi5vbGRlc3Rf b2Zmc2V0ICAgID49IENPQUxFU0NFKHMxLm9sZGVzdF9vZmZzZXQsICAgIDApKSwKKworICAgICAg KHMyLm51bV9tZW1iZXJzID49IENPQUxFU0NFKHMxLm51bV9tZW1iZXJzLCAwKSArIDEpLAorCisg ICAgICAoczEubnVtX214aWRzICAgPj0gQ09BTEVTQ0UoczAubnVtX214aWRzLCAgIDApKSwKKyAg ICAgIChzMi5udW1fbXhpZHMgICA+PSBDT0FMRVNDRShzMS5udW1fbXhpZHMsICAgMCkpLAorICAg ICAgKHMxLm51bV9tZW1iZXJzID49IENPQUxFU0NFKHMwLm51bV9tZW1iZXJzLCAwKSksCisgICAg ICAoczIubnVtX21lbWJlcnMgPj0gQ09BTEVTQ0UoczEubnVtX21lbWJlcnMsIDApKQorICAgIF0K KyAgKSBBUyByKGFzc2VydGlvbiwgb2spOworCithc3NlcnRpb24gICAgICAgICAgICAgICB8b2sK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLQoraXNfaW5pdF9teGlkcyAgICAgICAgICAgfHQg Citpc19pbml0X21lbWJlcnMgICAgICAgICB8dCAKK2lzX2luaXRfb2xkZXN0X214aWQgICAgIHx0 IAoraXNfaW5pdF9vbGRlc3Rfb2ZmICAgICAgfHQgCitpc19vbGRlc3RfbXhpZF9ub25kZWNfMDF8 dCAKK2lzX29sZGVzdF9teGlkX25vbmRlY18xMnx0IAoraXNfb2xkZXN0X29mZl9ub25kZWNfMDEg fHQgCitpc19vbGRlc3Rfb2ZmX25vbmRlY18xMiB8dCAKK2lzX21lbWJlcnNfaW5jcmVhc2VkX2dl MXx0IAoraXNfbXhpZHNfbm9uZGVjXzAxICAgICAgfHQgCitpc19teGlkc19ub25kZWNfMTIgICAg ICB8dCAKK2lzX21lbWJlcnNfbm9uZGVjXzAxICAgIHx0IAoraXNfbWVtYmVyc19ub25kZWNfMTIg ICAgfHQgCisoMTMgcm93cykKKworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfY29t bWl0OiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCA1YWZh ZTMzZDM3MC4uYmFiOGE4ZWFmMzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVs ZQpAQCAtMTIwLDMgKzEyMCw0IEBAIHRlc3Q6IHNlcmlhbGl6YWJsZS1wYXJhbGxlbC0yCiB0ZXN0 OiBzZXJpYWxpemFibGUtcGFyYWxsZWwtMwogdGVzdDogbWF0dmlldy13cml0ZS1za2V3CiB0ZXN0 OiBsb2NrLW5vd2FpdAordGVzdDogbXVsdGl4YWN0X3N0YXRzCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvbXVsdGl4YWN0X3N0YXRzLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvbXVsdGl4YWN0X3N0YXRzLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjdlZjA1ZjFiZmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL3NwZWNzL211bHRpeGFjdF9zdGF0cy5zcGVjCkBAIC0wLDAgKzEsMTE5IEBACisjIFRl c3QgaW52YXJpYW50cyBmb3IgcGdfZ2V0X211bHRpeGFjdF9zdGF0cygpCisjIFdlIGNyZWF0ZSBl eGFjdGx5IG9uZSBmcmVzaCBNdWx0aVhhY3Qgb24gYSBicmFuZC1uZXcgdGFibGUuIFdoaWxlIGl0 IGlzIHBpbm5lZAorIyBieSB0d28gb3BlbiB0cmFuc2FjdGlvbnMsIHdlIGFzc2VydCBvbmx5IGlu dmFyaWFudHMgdGhhdCBiYWNrZ3JvdW5kIFZBQ1VVTS9GUkVFWkUKKyMgY2Fubm90IHZpb2xhdGU6 CisjICAg4oCiIG1lbWJlcnMgaW5jcmVhc2VkIGJ5IOKJpSAxIHdoZW4gdGhlIHNlY29uZCBzZXNz aW9uIGxvY2tlZCB0aGUgcm93LAorIyAgIOKAoiBudW1fbXhpZHMgLyBudW1fbWVtYmVycyBkaWQg bm90IGRlY3JlYXNlIHZzIGVhcmxpZXIgc25hcHNob3RzLAorIyAgIOKAoiBvbGRlc3RfKiBuZXZl ciBkZWNyZWFzZXMuCisjIFdlIG1ha2UgTk8gYXNzZXJ0aW9ucyBhZnRlciByZWxlYXNpbmcgbG9j a3MgKGZyZWV6aW5nL3RydW5jYXRpb24gbWF5IHNocmluayBkZWx0YXMpLgorIworIyBUZXJtaW5v bG9neSAoZ2xvYmFsIGNvdW50ZXJzKToKKyMgICBudW1fbXhpZHMsIG51bV9tZW1iZXJzICAgIDog ImluLXVzZSIgZGVsdGFzIGRlcml2ZWQgZnJvbSBnbG9iYWwgaG9yaXpvbnMKKyMgICBvbGRlc3Rf bXVsdGl4YWN0LCBvZmZzZXQgIDogb2xkZXN0IGhvcml6b25zOyB0aGV5IG1vdmUgZm9yd2FyZCwg bmV2ZXIgYmFja3dhcmQKKyMKKyMgQWxsIGFzc2VydGlvbnMgZXhlY3V0ZSB3aGlsZSBvdXIgbXVs dGl4YWN0IGlzIHBpbm5lZCBieSBvcGVuIHR4bnMsIHdoaWNoIHByb3RlY3RzCisjIHRoZSB0cnVu Y2F0aW9uIGhvcml6b24gKFZBQ1VVTSBjYW4ndCBhZHZhbmNlIHBhc3Qgb3VyIHBpbm5lZCBtdWx0 aSkuCisKK3NldHVwCit7CisgICAgQ1JFQVRFIFRBQkxFIG14cShpZCBpbnQgUFJJTUFSWSBLRVks IHYgaW50KTsKKyAgICBJTlNFUlQgSU5UTyBteHEgVkFMVUVTICgxLCA0Mik7Cit9CisKK3RlYXJk b3duCit7CisgICAgRFJPUCBUQUJMRSBteHE7Cit9CisKKyMgVHdvIHNlc3Npb25zIHRoYXQgbG9j ayBvbiB0aGUgc2FtZSB0dXBsZSAtPiBvbmUgTXVsdGlYYWN0IHdpdGggPj0gMiBtZW1iZXJzLgor c2Vzc2lvbiAiczEiCitzZXR1cCB7IFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gd2FybmluZzsg U0VUIGxvY2tfdGltZW91dCA9ICc1cyc7IH0KK3N0ZXAgczFfYmVnaW4gIHsgQkVHSU47IH0KK3N0 ZXAgczFfbG9jayAgIHsgU0VMRUNUIDEgRlJPTSBteHEgV0hFUkUgaWQ9MSBGT1IgS0VZIFNIQVJF OyB9CitzdGVwIHMxX2NvbW1pdCB7IENPTU1JVDsgfQorCitzZXNzaW9uICJzMiIKK3NldHVwIHsg U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOyBTRVQgbG9ja190aW1lb3V0ID0gJzVz JzsgfQorc3RlcCBzMl9iZWdpbiAgeyBCRUdJTjsgfQorc3RlcCBzMl9sb2NrICAgeyBTRUxFQ1Qg MSBGUk9NIG14cSBXSEVSRSBpZD0xIEZPUiBLRVkgU0hBUkU7IH0KK3N0ZXAgczJfY29tbWl0IHsg Q09NTUlUOyB9CisKKyMgQmFzZWxpbmUgQkVGT1JFIGFueSBsb2NraW5nOyBtYXkgYmUgTlVMTHMg aWYgbXVsdGl4YWN0IGlzbid0IGluaXRpYWxpemVkIHlldC4KK3N0ZXAgc25hcDAgeworICBDUkVB VEUgVEVNUCBUQUJMRSBzbmFwMCBBUworICBTRUxFQ1QgbnVtX214aWRzLCBudW1fbWVtYmVycywg b2xkZXN0X211bHRpeGFjdCwgb2xkZXN0X29mZnNldAorICBGUk9NIHBnX2dldF9tdWx0aXhhY3Rf c3RhdHMoKTsKK30KKworIyBBZnRlciBzMSBoYXMgbG9ja2VkIHRoZSByb3cuCitzdGVwIHNuYXAx IHsKKyAgQ1JFQVRFIFRFTVAgVEFCTEUgc25hcDEgQVMKKyAgU0VMRUNUIG51bV9teGlkcywgbnVt X21lbWJlcnMsIG9sZGVzdF9tdWx0aXhhY3QsIG9sZGVzdF9vZmZzZXQKKyAgRlJPTSBwZ19nZXRf bXVsdGl4YWN0X3N0YXRzKCk7Cit9CisKKyMgQWZ0ZXIgczIgam9pbnMgb24gdGhlIFNBTUUgdHVw bGUgLT4gbXVsdGl4YWN0IHdpdGggPj0gMiBtZW1iZXJzLgorc3RlcCBzbmFwMiB7CisgIENSRUFU RSBURU1QIFRBQkxFIHNuYXAyIEFTCisgIFNFTEVDVCBudW1fbXhpZHMsIG51bV9tZW1iZXJzLCBv bGRlc3RfbXVsdGl4YWN0LCBvbGRlc3Rfb2Zmc2V0CisgIEZST00gcGdfZ2V0X211bHRpeGFjdF9z dGF0cygpOworfQorCisjIFByZXR0eSwgZGV0ZXJtaW5pc3RpYyBrZXkvdmFsdWUgb3V0cHV0IG9m IGJvb2xlYW4gY2hlY2tzLgorIyBLZXlzOgorIyAgIGlzX2luaXRfbXhpZHMgICAgICAgICAgICA6 IG51bV9teGlkcyBpcyBub24tTlVMTAorIyAgIGlzX2luaXRfbWVtYmVycyAgICAgICAgICA6IG51 bV9tZW1iZXJzIGlzIG5vbi1OVUxMCisjICAgaXNfaW5pdF9vbGRlc3RfbXhpZCAgICAgIDogb2xk ZXN0X211bHRpeGFjdCBpcyBub24tTlVMTAorIyAgIGlzX2luaXRfb2xkZXN0X29mZiAgICAgICA6 IG9sZGVzdF9vZmZzZXQgaXMgbm9uLU5VTEwKKyMgICBpc19vbGRlc3RfbXhpZF9ub25kZWNfMDEg OiBvbGRlc3RfbXVsdGl4YWN0IGRpZCBub3QgZGVjcmVhc2UgKHNuYXAw4oaSc25hcDEpCisjICAg aXNfb2xkZXN0X214aWRfbm9uZGVjXzEyIDogb2xkZXN0X211bHRpeGFjdCBkaWQgbm90IGRlY3Jl YXNlIChzbmFwMeKGknNuYXAyKQorIyAgIGlzX29sZGVzdF9vZmZfbm9uZGVjXzAxICA6IG9sZGVz dF9vZmZzZXQgZGlkIG5vdCBkZWNyZWFzZSAoc25hcDDihpJzbmFwMSkKKyMgICBpc19vbGRlc3Rf b2ZmX25vbmRlY18xMiAgOiBvbGRlc3Rfb2Zmc2V0IGRpZCBub3QgZGVjcmVhc2UgKHNuYXAx4oaS c25hcDIpCisjICAgaXNfbWVtYmVyc19pbmNyZWFzZWRfZ2UxIDogbWVtYmVycyBpbmNyZWFzZWQg YnkgYXQgbGVhc3QgMSB3aGVuIHMyIGpvaW5lZAorIyAgIGlzX214aWRzX25vbmRlY18wMSAgICAg ICA6IG51bV9teGlkcyBkaWQgbm90IGRlY3JlYXNlIChzbmFwMOKGknNuYXAxKQorIyAgIGlzX214 aWRzX25vbmRlY18xMiAgICAgICA6IG51bV9teGlkcyBkaWQgbm90IGRlY3JlYXNlIChzbmFwMeKG knNuYXAyKQorIyAgIGlzX21lbWJlcnNfbm9uZGVjXzAxICAgICA6IG51bV9tZW1iZXJzIGRpZCBu b3QgZGVjcmVhc2UgKHNuYXAw4oaSc25hcDEpCisjICAgaXNfbWVtYmVyc19ub25kZWNfMTIgICAg IDogbnVtX21lbWJlcnMgZGlkIG5vdCBkZWNyZWFzZSAoc25hcDHihpJzbmFwMikKK3N0ZXAgY2hl Y2tfd2hpbGVfcGlubmVkIHsKKyAgU0VMRUNUIHIuYXNzZXJ0aW9uLCByLm9rCisgIEZST00gc25h cDAgczAKKyAgSk9JTiBzbmFwMSBzMSBPTiBUUlVFCisgIEpPSU4gc25hcDIgczIgT04gVFJVRSwK KyAgTEFURVJBTCB1bm5lc3QoCisgICAgQVJSQVlbCisgICAgICAnaXNfaW5pdF9teGlkcycsCisg ICAgICAnaXNfaW5pdF9tZW1iZXJzJywKKyAgICAgICdpc19pbml0X29sZGVzdF9teGlkJywKKyAg ICAgICdpc19pbml0X29sZGVzdF9vZmYnLAorICAgICAgJ2lzX29sZGVzdF9teGlkX25vbmRlY18w MScsCisgICAgICAnaXNfb2xkZXN0X214aWRfbm9uZGVjXzEyJywKKyAgICAgICdpc19vbGRlc3Rf b2ZmX25vbmRlY18wMScsCisgICAgICAnaXNfb2xkZXN0X29mZl9ub25kZWNfMTInLAorICAgICAg J2lzX21lbWJlcnNfaW5jcmVhc2VkX2dlMScsCisgICAgICAnaXNfbXhpZHNfbm9uZGVjXzAxJywK KyAgICAgICdpc19teGlkc19ub25kZWNfMTInLAorICAgICAgJ2lzX21lbWJlcnNfbm9uZGVjXzAx JywKKyAgICAgICdpc19tZW1iZXJzX25vbmRlY18xMicKKyAgICBdLAorICAgIEFSUkFZWworICAg ICAgKHMyLm51bV9teGlkcyAgICAgICAgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm51bV9tZW1i ZXJzICAgICAgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm9sZGVzdF9tdWx0aXhhY3QgSVMgTk9U IE5VTEwpLAorICAgICAgKHMyLm9sZGVzdF9vZmZzZXQgICAgSVMgTk9UIE5VTEwpLAorCisgICAg ICAoczEub2xkZXN0X211bHRpeGFjdDo6dGV4dDo6YmlnaW50ID49IENPQUxFU0NFKHMwLm9sZGVz dF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCwgMCkpLAorICAgICAgKHMyLm9sZGVzdF9tdWx0aXhh Y3Q6OnRleHQ6OmJpZ2ludCA+PSBDT0FMRVNDRShzMS5vbGRlc3RfbXVsdGl4YWN0Ojp0ZXh0Ojpi aWdpbnQsIDApKSwKKyAgICAgIChzMS5vbGRlc3Rfb2Zmc2V0ICAgID49IENPQUxFU0NFKHMwLm9s ZGVzdF9vZmZzZXQsICAgIDApKSwKKyAgICAgIChzMi5vbGRlc3Rfb2Zmc2V0ICAgID49IENPQUxF U0NFKHMxLm9sZGVzdF9vZmZzZXQsICAgIDApKSwKKworICAgICAgKHMyLm51bV9tZW1iZXJzID49 IENPQUxFU0NFKHMxLm51bV9tZW1iZXJzLCAwKSArIDEpLAorCisgICAgICAoczEubnVtX214aWRz ICAgPj0gQ09BTEVTQ0UoczAubnVtX214aWRzLCAgIDApKSwKKyAgICAgIChzMi5udW1fbXhpZHMg ICA+PSBDT0FMRVNDRShzMS5udW1fbXhpZHMsICAgMCkpLAorICAgICAgKHMxLm51bV9tZW1iZXJz ID49IENPQUxFU0NFKHMwLm51bV9tZW1iZXJzLCAwKSksCisgICAgICAoczIubnVtX21lbWJlcnMg Pj0gQ09BTEVTQ0UoczEubnVtX21lbWJlcnMsIDApKQorICAgIF0KKyAgKSBBUyByKGFzc2VydGlv biwgb2spOworfQorCitwZXJtdXRhdGlvbiBzbmFwMCBzMV9iZWdpbiBzMV9sb2NrIHNuYXAxIHMy X2JlZ2luIHMyX2xvY2sgc25hcDIgY2hlY2tfd2hpbGVfcGlubmVkIHMxX2NvbW1pdCBzMl9jb21t aXQKLS0gCjIuNTEuMAoK --0000000000008a45c80641513c3d--