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 1uy24F-003Csy-0D for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 05:47:59 +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 1uy24C-00A1k9-Ss for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 05:47:57 +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 1uy24C-00A1k1-H7 for pgsql-hackers@lists.postgresql.org; Mon, 15 Sep 2025 05:47:57 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uy249-000tPL-1W for pgsql-hackers@postgresql.org; Mon, 15 Sep 2025 05:47:57 +0000 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-b07883a5feeso646766566b.1 for ; Sun, 14 Sep 2025 22:47:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757915274; x=1758520074; 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=NJ/T2h2ZYgosGuyze6LV8c1zkTFTU5NvmGwgcfUpKF8=; b=nAsQqAEYp0zslCgEnBaLG7sklplLB+xvKs/kvhlPWApklLfQPbq+sdt//pNCKk6zsg 5/TuhKasy9jZa/XqTK2sTZ4BpXrJ+YwF/GlPpsqWqltLgNl/nVoCxgsYCnNrXaXf7SJw m//DXmftKbHSTHqUkTzMDQ7oUYDIQDfLB1/Wx3LZxb44H0dFK9uY3arYFb5oTY6IYH0w WyDzb/N5IPXfAwyq6iv0iXb7KGLbacFjMAuy7C0aGOYZq6DCOSXSdXXmcItscQoOk9jB IzkCxBNGg6ovd8r102c+tC1ymm9M6Y0P5ILCJ2IREOh5K8CfU1FCAUNnVDFqP5Y5rlE9 Ip4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757915274; x=1758520074; 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=NJ/T2h2ZYgosGuyze6LV8c1zkTFTU5NvmGwgcfUpKF8=; b=j4NDULM7L9YfmjD0OR94//h59KmGmZUBp8jd0B+rfrkn9Zp5lTFTE2KRGEtna4Q0mE uiAc5CQ6kIuah4WZMSy6Kl49h4xh3fP1ZD55WdrKH554n3XXy5eDr6jmf3D3A9M8zs7w r9rZaOsBRUPOxj65ylJPx1bxoRbo4ytQZh2+h5NHPzaa1TRPq9wROLpLdHBshkE7KgfI tx/HqxaJlEgks2IwLBmZpc/KWRgxd94j6wlRVz+qNILq4j0zXBSWhEW3irMqoT2Pbz/s SuHuN1JmE5Tl1cLjdBMttrrHZ/ROFVDwRy6SuK551QTRmcAMZQ5isdiXnXyJVJsJPgVp elgg== X-Forwarded-Encrypted: i=1; AJvYcCUwR7bmPb+UHISziM9ZJOaZKeI3NsMpXlbnGe7APiOc9rAIJ0/CdsR8eQPYsF7lfRbXb0Jqi2+s68VXhr0p@postgresql.org X-Gm-Message-State: AOJu0YzYKMg33oBVn/pCkk3nMEU12zZqLwRW9NZqy4nwAIbIB8rRC6dh 5xyBm2OycOyz7YqAL5xw5i3bpzKZ1y/D4Grtghylp+UFnf0Kiv1DVG2DKbgpbahHgh9iBv3MB2j LM3WtelKg0bJpne37Qw/T1k2d1m3YScg= X-Gm-Gg: ASbGncvp86OgpsIdo+nLDcDUrCjjfLbUszLrw8RcuYjAHL6pWOOoYJ73qUvcPiy1LzP W8h7mXZ0yvh0bIfr00OxgTsdrLTA80/eneezm5NgltWOyUTxGWDwYEbXl90N6iZgeYcWQjyLfE6 X9oG7qpdYw0IpFJ6rx9BG/TMzR0xJA666yxu5SHKxC/qzlDBH4U277lses3Zxh2wjPtJENRE8sx 45/QJCcBCPHJgUjskLhilnDBMsZHB4bZ7p0bqU= X-Google-Smtp-Source: AGHT+IEMJpdYm5FYvf6F2L8mYbu95iDXwTqGe8pZzjalpRsWd9Sa8xgYHvFbGmgdInbLN26WpoJQHF+dfnTPSxUTjeA= X-Received: by 2002:a17:907:1b12:b0:b04:2f81:5c35 with SMTP id a640c23a62f3a-b07c37fd446mr1036976366b.34.1757915273421; Sun, 14 Sep 2025 22:47:53 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Naga Appani Date: Mon, 15 Sep 2025 00:47:41 -0500 X-Gm-Features: AS18NWAabvzv1EB5kxwrD03O5cX1JjzxvJZd25drLgUf7HuhEdjB-kwm9PeWYtQ Message-ID: Subject: Re: [Proposal] Expose internal MultiXact member count function for efficient monitoring To: Ashutosh Bapat Cc: torikoshia , Michael Paquier , Kirill Reshke , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="0000000000006b1de4063ed08baf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006b1de4063ed08baf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Ashutosh, Thank you for continuing to review the patch. Attached is v9, incorporating the feedback. Please see my responses inline below. On Fri, Sep 12, 2025 at 5:34=E2=80=AFAM Ashutosh Bapat wrote: > + Returns statistics about current multixact usage: > + num_mxids is the total number of multixact IDs > assigned since startup, > + num_members is the total number of multixact > member entries created since startup, > > GetMultiXactInfo() returns following > *members =3D nextOffset - *oldestOffset; > *multixacts =3D nextMultiXactId - *oldestMultiXactId; > They seem to be the numbers that exist in the system at the time of > the call and not since the startup. Am I missing something? You are right, these counts reflect the numbers currently present in the system, not cumulative totals since startup. I have reworded the docs to say =E2=80=9Ccurrently present=E2=80=9D. > + up to approximately 2^32 entries(occupying roughly 20GB in the > > space between s and ( Fixed. > + proallargtypes =3D> '{int4,int8,int8,xid,int8}', > > I think the first parameter should also be int8 since uint32 won't fit > into int4. Updated. > > > + See for further > > > details on multixact wraparound. > > > > > > I don't think we need this reference here. Reference back from that > > > section is enough. > > I kept the cross-reference for now since other multixact function docs > > (such as pg_get_multixact_members()) already use this style, and it hel= ps > > readers who land directly on the function reference page. Please let me > > know if you would prefer that I remove it. > > None of the write up there talks about multixact wraparound so the > reference seems arbitrary to me. I would remove it. Removed. > Thanks for updating the documentation. But the comment in prologue of > pg_get_multixact_stats is not completely correct as mentioned in my > previous reply. I would just say "Returns NULL if the oldest > referenced offset is unknown". Anybody who wants to know when can that > happen, may search relevant code by looking at GetMultiXactInfo(). Simplified the prologue comment as suggested. > I still find the comment at the start of the isolation test a bit > verbose. But I think it's best to leave that to a committer's > judgement. However, the word "locker" is unusual. You want to say the > session that locks a row (or something similar). We may leave exact > words to a committer's judgement. Reworded to remove "locker" and simplified. > I still find think that the specific usage scenarios described in the > documentation are not required. And the computation in > pg_get_multixact_stats() should use macros instead of bare numbers. > But we can leave that for a committer to decide. Once you address > above comments, we may mark the CF entry as RFC. Sounds good! 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. Thank you again for your thorough reviews and thoughtful guidance on this patch =E2=80=94 it has been very helpful. Best regards, Naga --0000000000006b1de4063ed08baf Content-Type: application/octet-stream; name="v9-0001-Add-pg_get_multixact_stats-function-for-monitorin.patch" Content-Disposition: attachment; filename="v9-0001-Add-pg_get_multixact_stats-function-for-monitorin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfkp7xe90 RnJvbSBiNjI2N2JhMWU2NGRhZGY3OWQyNTgyZGRjOWNlY2E2N2M0YzEyODU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWdhIEFwcGFuaSA8bmFnbnJpa0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMTUgU2VwIDIwMjUgMDQ6MTU6MjIgKzAwMDAKU3ViamVjdDogW1BBVENIIHY5XSBBZGQg cGdfZ2V0X211bHRpeGFjdF9zdGF0cygpIGZ1bmN0aW9uIGZvciBtb25pdG9yaW5nCiBNdWx0aVhh Y3QgdXNhZ2UKCkV4cG9zZSBtdWx0aXhhY3Qgc3RhdGUgdmlhIGEgbmV3IFNRTC1jYWxsYWJsZSBm dW5jdGlvbiBwZ19nZXRfbXVsdGl4YWN0X3N0YXRzKCksCnJldHVybmluZzoKLSBudW1fbXhpZHMg ICAgICAgICAgOiBudW1iZXIgb2YgTXVsdGlYYWN0IElEcyBpbiB1c2UKLSBudW1fbWVtYmVycyAg ICAgICAgOiBudW1iZXIgb2YgbWVtYmVyIGVudHJpZXMgaW4gdXNlCi0gbWVtYmVyc19zaXplICAg ICAgIDogYnl0ZXMgdXNlZCBieSBudW1fbWVtYmVycyBpbiBwZ19tdWx0aXhhY3QvbWVtYmVycyBk aXJlY3RvcnkKLSBvbGRlc3RfbXVsdGl4YWN0ICAgOiBvbGRlc3QgTXVsdGlYYWN0IElEIHN0aWxs IG5lZWRlZAotIG9sZGVzdF9vZmZzZXQgICAgICA6IG9sZGVzdCBtZW1iZXIgb2Zmc2V0IHN0aWxs IGluIHVzZQoKVGhpcyBwYXRjaCBhZGRzIHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKSBmdW5jdGlv bgogICAtIFNRTC1jYWxsYWJsZSBpbnRlcmZhY2UgdG8gR2V0TXVsdGlYYWN0SW5mbygpCiAgIC0g UmV0dXJucyBOVUxMcyBpZiBNdWx0aVhhY3Qgc3lzdGVtIG5vdCBpbml0aWFsaXplZAogICAtIElu Y2x1ZGVzIGlzb2xhdGlvbiB0ZXN0cyBmb3IgbW9uaXRvcmluZyBpbnZhcmlhbnRzCgpEb2N1bWVu dGF0aW9uIHVwZGF0ZXM6Ci0gZnVuYy1pbmZvLnNnbWw6IGFkZCBmdW5jdGlvbiBlbnRyeQotIG1h aW50ZW5hbmNlLnNnbWw6IG1lbnRpb24gbW9uaXRvcmluZyBtdWx0aXhhY3QgdXNhZ2UKCkJ1aWxk IGFuZCBjYXRhbG9nOgotIEFkZCBmdW5jdGlvbiB0byBleGlzdGluZyBtdWx0aXhhY3RmdW5jcy5j Ci0gcGdfcHJvYy5kYXQgZW50cnkKCkF1dGhvcjogTmFnYSBBcHBhbmkgPG5hZ25yaWtAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9D QSUyQlFlWSUyQkFBc1lLNld2Qlc0cVl6SHo0YmFoSHljREFZX3E1RUNtSGtFVl9lQjlja3pnJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCAgICAg ICAgICAgICAgfCAgMzUgKysrKysrCiBkb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCAgICAg ICAgICAgICAgICAgfCAgNTggKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGl4 YWN0ZnVuY3MuYyAgICAgICAgfCAgNDYgKysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCAgICAgICAgICAgICAgIHwgIDEwICsrCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL211 bHRpeGFjdF9zdGF0cy5vdXQgICAgfCAgOTIgKysrKysrKysrKysrKysKIHNyYy90ZXN0L2lzb2xh dGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvbXVsdGl4YWN0X3N0YXRzLnNwZWMgfCAxMTkgKysrKysrKysrKysrKysrKysrCiA3 IGZpbGVzIGNoYW5nZWQsIDM1NSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tdWx0aXhhY3Rfc3RhdHMu b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL211bHRpeGFj dF9zdGF0cy5zcGVjCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbAppbmRleCBjMzkzODMyZDk0Yy4u NjIzYjU5MGUzMzggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCkBAIC0yOTc1LDYgKzI5NzUs NDEgQEAgYWNsICAgICAgfCB7cG9zdGdyZXM9YXJ3ZER4dG0vcG9zdGdyZXMsZm9vPXIvcG9zdGdy ZXN9CiAgICAgICAgIG1vZGlmeSBrZXkgY29sdW1ucy4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4K ICAgICAgIDwvcm93PgorCisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRl cm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfbXVsdGl4YWN0X3N0YXRzPC9wcmltYXJ5Pgor ICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9tdWx0aXhhY3Rf c3RhdHM8L2Z1bmN0aW9uPiAoKQorICAgICAgICA8cmV0dXJudmFsdWU+cmVjb3JkPC9yZXR1cm52 YWx1ZT4KKyAgICAgICAgKCA8cGFyYW1ldGVyPm51bV9teGlkczwvcGFyYW1ldGVyPiA8dHlwZT5p bnRlZ2VyPC90eXBlPiwKKyAgICAgICAgICA8cGFyYW1ldGVyPm51bV9tZW1iZXJzPC9wYXJhbWV0 ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAgICAgPHBhcmFtZXRlcj5tZW1iZXJzX3Np emU8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiwKKyAgICAgICAgICA8cGFyYW1ldGVy Pm9sZGVzdF9tdWx0aXhhY3Q8L3BhcmFtZXRlcj4gPHR5cGU+eGlkPC90eXBlPiwKKyAgICAgICAg ICA8cGFyYW1ldGVyPm9sZGVzdF9vZmZzZXQ8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBl PiApCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXR1cm5zIHN0YXRp c3RpY3MgYWJvdXQgY3VycmVudCBtdWx0aXhhY3QgdXNhZ2U6CisgICAgICAgIDxsaXRlcmFsPm51 bV9teGlkczwvbGl0ZXJhbD4gaXMgdGhlIHRvdGFsIG51bWJlciBvZiBtdWx0aXhhY3QgSURzIGN1 cnJlbnRseSBwcmVzZW50IGluIHRoZSBzeXN0ZW0sCisgICAgICAgIDxsaXRlcmFsPm51bV9tZW1i ZXJzPC9saXRlcmFsPiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIG11bHRpeGFjdCBtZW1iZXIgZW50 cmllcyBjdXJyZW50bHkKKyAgICAgICAgcHJlc2VudCBpbiB0aGUgc3lzdGVtLAorICAgICAgICA8 bGl0ZXJhbD5tZW1iZXJzX3NpemU8L2xpdGVyYWw+IGlzIHRoZSBzdG9yYWdlIG9jY3VwaWVkIGJ5 IDxsaXRlcmFsPm51bV9tZW1iZXJzPC9saXRlcmFsPgorICAgICAgICBpbiB0aGUgPGxpdGVyYWw+ cGdfbXVsdGl4YWN0L21lbWJlcnM8L2xpdGVyYWw+IGRpcmVjdG9yeSwKKyAgICAgICAgPGxpdGVy YWw+b2xkZXN0X211bHRpeGFjdDwvbGl0ZXJhbD4gaXMgdGhlIG9sZGVzdCBtdWx0aXhhY3QgSUQg c3RpbGwgaW4gdXNlLCBhbmQKKyAgICAgICAgPGxpdGVyYWw+b2xkZXN0X29mZnNldDwvbGl0ZXJh bD4gaXMgdGhlIG9sZGVzdCBtZW1iZXIgb2Zmc2V0IHN0aWxsIGluIHVzZS4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBmdW5jdGlvbiByZXBvcnRzIHN0YXRpc3Rp Y3MgYXQgdGhlIHRpbWUgaXQgaXMgaW52b2tlZC4gVmFsdWVzIG1heSB2YXJ5IGJldHdlZW4gY2Fs bHMsCisgICAgICAgIGV2ZW4gd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLgorICAgICAgIDwv cGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyA8bGl0ZXJhbD5OVUxMPC9saXRl cmFsPiB3aGVuIG11bHRpeGFjdCBzdGF0aXN0aWNzIGFyZSB1bmF2YWlsYWJsZSwKKyAgICAgICAg c3VjaCBhcyBkdXJpbmcgc3RhcnR1cCBiZWZvcmUgbXVsdGl4YWN0IGluaXRpYWxpemF0aW9uIGNv bXBsZXRlcy4KKyAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGlzIG9jY3VycyB3aGVuIHRoZSBvbGRl c3QgbXVsdGl4YWN0IG9mZnNldAorICAgICAgICBjb3JyZXNwb25kaW5nIHRvIGEgbXVsdGl4YWN0 IHJlZmVyZW5jZWQgYnkgYSByZWxhdGlvbiBpcyBub3Qga25vd24uCisgICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAgIDwv dGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9z cmMvc2dtbC9tYWludGVuYW5jZS5zZ21sCmluZGV4IGU3YTlmNThjMDE1Li5jZjU2MzA3MDkwZCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21haW50ZW5hbmNlLnNnbWwKQEAgLTgxMywxNCArODEzLDYwIEBAIEhJTlQ6ICBFeGVjdXRl IGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gdGhhdCBkYXRhYmFzZS4KICAgICA8cGFyYT4KICAg ICAgQXMgYSBzYWZldHkgZGV2aWNlLCBhbiBhZ2dyZXNzaXZlIHZhY3V1bSBzY2FuIHdpbGwKICAg ICAgb2NjdXIgZm9yIGFueSB0YWJsZSB3aG9zZSBtdWx0aXhhY3QtYWdlIGlzIGdyZWF0ZXIgdGhh biA8eHJlZgotICAgICBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tdWx0aXhhY3QtZnJlZXplLW1h eC1hZ2UiLz4uICBBbHNvLCBpZiB0aGUKLSAgICAgc3RvcmFnZSBvY2N1cGllZCBieSBtdWx0aXhh Y3RzIG1lbWJlcnMgZXhjZWVkcyBhYm91dCAxMEdCLCBhZ2dyZXNzaXZlIHZhY3V1bQotICAgICBz Y2FucyB3aWxsIG9jY3VyIG1vcmUgb2Z0ZW4gZm9yIGFsbCB0YWJsZXMsIHN0YXJ0aW5nIHdpdGgg dGhvc2UgdGhhdAotICAgICBoYXZlIHRoZSBvbGRlc3QgbXVsdGl4YWN0LWFnZS4gIEJvdGggb2Yg dGhlc2Uga2luZHMgb2YgYWdncmVzc2l2ZQotICAgICBzY2FucyB3aWxsIG9jY3VyIGV2ZW4gaWYg YXV0b3ZhY3V1bSBpcyBub21pbmFsbHkgZGlzYWJsZWQuIFRoZSBtZW1iZXJzIHN0b3JhZ2UKLSAg ICAgYXJlYSBjYW4gZ3JvdyB1cCB0byBhYm91dCAyMEdCIGJlZm9yZSByZWFjaGluZyB3cmFwYXJv dW5kLgorICAgICBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tdWx0aXhhY3QtZnJlZXplLW1heC1h Z2UiLz4uIEFsc28sIGlmIHRoZSBudW1iZXIKKyAgICAgb2YgbXVsdGl4YWN0IG1lbWJlciBlbnRy aWVzIGNyZWF0ZWQgZXhjZWVkcyBhcHByb3hpbWF0ZWx5IDJeMzEgZW50cmllcworICAgICAob2Nj dXB5aW5nIHJvdWdobHkgMTBHQiBpbiB0aGUgPGxpdGVyYWw+cGdfbXVsdGl4YWN0L21lbWJlcnM8 L2xpdGVyYWw+IGRpcmVjdG9yeSksCisgICAgIGFnZ3Jlc3NpdmUgdmFjdXVtIHNjYW5zIHdpbGwg b2NjdXIgbW9yZSBvZnRlbiBmb3IgYWxsIHRhYmxlcywgc3RhcnRpbmcgd2l0aCB0aG9zZSB0aGF0 CisgICAgIGhhdmUgdGhlIG9sZGVzdCBtdWx0aXhhY3QtYWdlLiBCb3RoIG9mIHRoZXNlIGtpbmRz IG9mIGFnZ3Jlc3NpdmUKKyAgICAgc2NhbnMgd2lsbCBvY2N1ciBldmVuIGlmIGF1dG92YWN1dW0g aXMgbm9taW5hbGx5IGRpc2FibGVkLiBUaGUgbWVtYmVycyBjYW4gZ3JvdworICAgICB1cCB0byBh cHByb3hpbWF0ZWx5IDJeMzIgZW50cmllcyAob2NjdXB5aW5nIHJvdWdobHkgMjBHQiBpbiB0aGUK KyAgICAgPGxpdGVyYWw+cGdfbXVsdGl4YWN0L21lbWJlcnM8L2xpdGVyYWw+IGRpcmVjdG9yeSkg YmVmb3JlIHJlYWNoaW5nIHdyYXBhcm91bmQuCiAgICAgPC9wYXJhPgogCisgICAgPHBhcmE+Cisg ICAgIFRoZSA8ZnVuY3Rpb24+cGdfZ2V0X211bHRpeGFjdF9zdGF0cygpPC9mdW5jdGlvbj4gZnVu Y3Rpb24gZGVzY3JpYmVkIGluCisgICAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1wZy1zbmFw c2hvdCIvPiBwcm92aWRlcyBhIHdheSB0byBtb25pdG9yCisgICAgIG11bHRpeGFjdCBhbGxvY2F0 aW9uIGFuZCB1c2FnZSBwYXR0ZXJucyBpbiByZWFsIHRpbWUsIGZvciBleGFtcGxlOgorICAgICA8 cHJvZ3JhbWxpc3Rpbmc+Citwb3N0Z3Jlcz0jIFNFTEVDVCAqLHBnX3NpemVfcHJldHR5KG1lbWJl cnNfc2l6ZSkgbWVtYmVyc19zaXplX3ByZXR0eSBGUk9NIHBnX2NhdGFsb2cucGdfZ2V0X211bHRp eGFjdF9zdGF0cygpOworIG51bV9teGlkcyB8IG51bV9tZW1iZXJzIHwgbWVtYmVyc19zaXplIHwg b2xkZXN0X211bHRpeGFjdCB8IG9sZGVzdF9vZmZzZXQgfCBtZW1iZXJzX3NpemVfcHJldHR5Cist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMzExNzQwMjk5IHwgIDI3 ODUyNDExNzYgfCAgMTM5MjYyMDU4ODAgfCAgICAgICAgICAgICAgICAyIHwgICAgICAgICAgICAg MyB8IDEzIEdCCisoMSByb3cpCisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIFRoaXMgb3V0 cHV0IHNob3dzIGEgc3lzdGVtIHdpdGggc2lnbmlmaWNhbnQgbXVsdGl4YWN0IGFjdGl2aXR5OiBh Ym91dCB+MzEyIG1pbGxpb24KKyAgICAgbXVsdGl4YWN0IElEcyBhbmQgfjIuOCBiaWxsaW9uIG1l bWJlciBlbnRyaWVzIGNvbnN1bWluZyAxMyBHQiBvZiBzdG9yYWdlIHNwYWNlLgorICAgICBCeSBs ZXZlcmFnaW5nIHRoaXMgaW5mb3JtYXRpb24sIHRoZSBmdW5jdGlvbiBoZWxwczoKKyAgICAgPG9y ZGVyZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxzaW1wYXJhPgorICAgICAgICBJ ZGVudGlmeSB1bnVzdWFsIG11bHRpeGFjdCBhY3Rpdml0eSBmcm9tIGNvbmN1cnJlbnQgcm93LWxl dmVsIGxvY2tzCisgICAgICAgIG9yIGZvcmVpZ24ga2V5IG9wZXJhdGlvbnMuIEZvciBleGFtcGxl LCBhIHNwaWtlIGluIDxsaXRlcmFsPm51bV9teGlkczwvbGl0ZXJhbD4gbWlnaHQgaW5kaWNhdGUK KyAgICAgICAgbXVsdGlwbGUgc2Vzc2lvbnMgcnVubmluZyA8bGl0ZXJhbD5VUERBVEU8L2xpdGVy YWw+IHN0YXRlbWVudHMgd2l0aCBmb3JlaWduIGtleSBjaGVja3MsCisgICAgICAgIGNvbmN1cnJl bnQgPGxpdGVyYWw+U0VMRUNUIEZPUiBTSEFSRTwvbGl0ZXJhbD4gb3BlcmF0aW9ucywgb3IgZnJl cXVlbnQgdXNlIG9mIHNhdmVwb2ludHMKKyAgICAgICAgY2F1c2luZyBsb2NrIGNvbnRlbnRpb24u CisgICAgICAgPC9zaW1wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8c2ltcGFyYT4KKyAgICAgICAgVHJhY2sgbXVsdGl4YWN0IGNsZWFudXAgZWZmaWNp ZW5jeSBieSBtb25pdG9yaW5nIG9sZGVzdF9tdWx0aXhhY3QuCisgICAgICAgIElmIHRoaXMgdmFs dWUgcmVtYWlucyB1bmNoYW5nZWQgd2hpbGUgPGxpdGVyYWw+bnVtX21lbWJlcnM8L2xpdGVyYWw+ IGdyb3dzLCBpdCBjb3VsZCBpbmRpY2F0ZQorICAgICAgICB0aGF0IGxvbmctcnVubmluZyB0cmFu c2FjdGlvbnMgYXJlIHByZXZlbnRpbmcgY2xlYW51cCwgb3IgYXV0b3ZhY3V1bSBpcworICAgICAg ICBub3Qga2VlcGluZyB1cCB3aXRoIHRoZSB3b3JrbG9hZC4KKyAgICAgICA8L3NpbXBhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxzaW1wYXJhPgorICAg ICAgICBEZXRlY3QgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHMgYmVmb3JlIHRoZXkgYmVj b21lIGNyaXRpY2FsLgorICAgICAgICBGb3IgaW5zdGFuY2UsIGhpZ2ggbXVsdGl4YWN0IHVzYWdl IGZyb20gZnJlcXVlbnQgcm93LWxldmVsIGxvY2tpbmcgb3IKKyAgICAgICAgZm9yZWlnbiBrZXkg b3BlcmF0aW9ucyBjYW4gbGVhZCB0byBpbmNyZWFzZWQgSS9PIGFuZCBDUFUgb3ZlcmhlYWQgZHVy aW5nCisgICAgICAgIHZhY3V1bSBvcGVyYXRpb25zLiBNb25pdG9yaW5nIHRoZXNlIHN0YXRzIGhl bHBzIHR1bmUgYXV0b3ZhY3V1bSBmcmVxdWVuY3kKKyAgICAgICAgYW5kIHRyYW5zYWN0aW9uIHBh dHRlcm5zLgorICAgICAgIDwvc2ltcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvb3Jk ZXJlZGxpc3Q+CisgICAgIDwvcGFyYT4KKwogICAgIDxwYXJhPgogICAgICBTaW1pbGFyIHRvIHRo ZSBYSUQgY2FzZSwgaWYgYXV0b3ZhY3V1bSBmYWlscyB0byBjbGVhciBvbGQgTVhJRHMgZnJvbSBh IHRhYmxlLCB0aGUKICAgICAgc3lzdGVtIHdpbGwgYmVnaW4gdG8gZW1pdCB3YXJuaW5nIG1lc3Nh Z2VzIHdoZW4gdGhlIGRhdGFiYXNlJ3Mgb2xkZXN0IE1YSURzIHJlYWNoIGZvcnR5CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGl4YWN0ZnVuY3MuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tdWx0aXhhY3RmdW5jcy5jCmluZGV4IGU3NGVhOTM4MzQ4Li45YmY3YTUyYTI0 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMKQEAgLTg1LDMgKzg1LDQ5 IEBAIHBnX2dldF9tdWx0aXhhY3RfbWVtYmVycyhQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JF VFVSTl9ET05FKGZ1bmNjeHQpOwogfQorCisvKgorICogcGdfZ2V0X211bHRpeGFjdF9zdGF0cwor ICoKKyAqIFJldHVybnMgc3RhdGlzdGljcyBhYm91dCBjdXJyZW50IG11bHRpeGFjdCB1c2FnZS4K KyAqCisgKiBSZXR1cm5zIE5VTEwgaWYgdGhlIG9sZGVzdCByZWZlcmVuY2VkIG9mZnNldCBpcyB1 bmtub3duLgorICovCitEYXR1bQorcGdfZ2V0X211bHRpeGFjdF9zdGF0cyhQR19GVU5DVElPTl9B UkdTKQoreworCVR1cGxlRGVzYwl0dXBkZXNjOworCURhdHVtCQl2YWx1ZXNbNV07CisJYm9vbAkJ bnVsbHNbNV07CisJTXVsdGlYYWN0T2Zmc2V0CW1lbWJlcnM7CisJTXVsdGlYYWN0SWQJb2xkZXN0 TXVsdGlYYWN0SWQ7CisJdWludDMyCQltdWx0aXhhY3RzOworCU11bHRpWGFjdE9mZnNldAlvbGRl c3RPZmZzZXQ7CisJaW50NjQJCW1lbWJlcnNCeXRlczsKKworCWlmIChnZXRfY2FsbF9yZXN1bHRf dHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCSBlcnJtc2coInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpKSk7CisKKwlp ZiAoR2V0TXVsdGlYYWN0SW5mbygmbXVsdGl4YWN0cywgJm1lbWJlcnMsICZvbGRlc3RNdWx0aVhh Y3RJZCwgJm9sZGVzdE9mZnNldCkpCisJeworCQkvKgorCQkgKiBDYWxjdWxhdGUgc3RvcmFnZSBz cGFjZSBmb3IgbWVtYmVycy4gTWVtYmVycyBhcmUgc3RvcmVkIGluIGdyb3VwcyBvZiA0LAorCQkg KiB3aXRoIGVhY2ggZ3JvdXAgdGFraW5nIDIwIGJ5dGVzLCByZXN1bHRpbmcgaW4gNSBieXRlcyBw ZXIgbWVtYmVyLgorCQkgKiBOb3RlOiBUaGlzIGlnbm9yZXMgc21hbGwgcGFnZSBvdmVyaGVhZCAo MTIgYnl0ZXMgcGVyIDhLQikKKwkJICovCisJCW1lbWJlcnNCeXRlcyA9IChpbnQ2NCkgbWVtYmVy cyAqIDU7CisKKwkJdmFsdWVzWzBdID0gVUludDMyR2V0RGF0dW0obXVsdGl4YWN0cyk7CisJCXZh bHVlc1sxXSA9IFVJbnQzMkdldERhdHVtKG1lbWJlcnMpOworCQl2YWx1ZXNbMl0gPSBJbnQ2NEdl dERhdHVtKG1lbWJlcnNCeXRlcyk7CisJCXZhbHVlc1szXSA9IFVJbnQzMkdldERhdHVtKG9sZGVz dE11bHRpWGFjdElkKTsKKwkJdmFsdWVzWzRdID0gVUludDMyR2V0RGF0dW0ob2xkZXN0T2Zmc2V0 KTsKKwkJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisKKwkJcmV0dXJuIEhl YXBUdXBsZUdldERhdHVtKGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSk7 CisJfQorCisJUEdfUkVUVVJOX05VTEwoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IDAzZTgyZDI4Yzg3Li4zZTkzNzZjODc1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0x MjU4OCw0ICsxMjU4OCwxNCBAQAogICBwcm9hcmduYW1lcyA9PiAne3BpZCxpb19pZCxpb19nZW5l cmF0aW9uLHN0YXRlLG9wZXJhdGlvbixvZmYsbGVuZ3RoLHRhcmdldCxoYW5kbGVfZGF0YV9sZW4s cmF3X3Jlc3VsdCxyZXN1bHQsdGFyZ2V0X2Rlc2MsZl9zeW5jLGZfbG9jYWxtZW0sZl9idWZmZXJl ZH0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9haW9zJyB9LAogCisjIEdldCBtdWx0aXhhY3QgdXNh Z2UKK3sgb2lkID0+ICc5MDAxJywgZGVzY3IgPT4gJ2dldCBjdXJyZW50IG11bHRpeGFjdCB1c2Fn ZSBzdGF0aXN0aWNzJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X211bHRpeGFjdF9zdGF0cycsCisg IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdy ZWNvcmQnLAorICBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tpbnQ4 LGludDgsaW50OCx4aWQsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sb30nLAor ICBwcm9hcmduYW1lcyA9PiAne251bV9teGlkcyxudW1fbWVtYmVycyxtZW1iZXJzX3NpemUsb2xk ZXN0X211bHRpeGFjdCxvbGRlc3Rfb2Zmc2V0fScsCisgIHByb3NyYyA9PiAncGdfZ2V0X211bHRp eGFjdF9zdGF0cyd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0 ZWQvbXVsdGl4YWN0X3N0YXRzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tdWx0 aXhhY3Rfc3RhdHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42 OTg0NWYwNThlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3Rl ZC9tdWx0aXhhY3Rfc3RhdHMub3V0CkBAIC0wLDAgKzEsOTIgQEAKK1BhcnNlZCB0ZXN0IHNwZWMg d2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzbmFwMCBzMV9iZWdpbiBz MV9sb2NrIHNuYXAxIHMyX2JlZ2luIHMyX2xvY2sgc25hcDIgY2hlY2tfd2hpbGVfcGlubmVkIHMx X2NvbW1pdCBzMl9jb21taXQKK3N0ZXAgc25hcDA6IAorICBDUkVBVEUgVEVNUCBUQUJMRSBzbmFw MCBBUworICBTRUxFQ1QgbnVtX214aWRzLCBudW1fbWVtYmVycywgb2xkZXN0X211bHRpeGFjdCwg b2xkZXN0X29mZnNldAorICBGUk9NIHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKTsKKworc3RlcCBz MV9iZWdpbjogQkVHSU47CitzdGVwIHMxX2xvY2s6IFNFTEVDVCAxIEZST00gbXhxIFdIRVJFIGlk PTEgRk9SIEtFWSBTSEFSRTsKKz9jb2x1bW4/CistLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykK Kworc3RlcCBzbmFwMTogCisgIENSRUFURSBURU1QIFRBQkxFIHNuYXAxIEFTCisgIFNFTEVDVCBu dW1fbXhpZHMsIG51bV9tZW1iZXJzLCBvbGRlc3RfbXVsdGl4YWN0LCBvbGRlc3Rfb2Zmc2V0Cisg IEZST00gcGdfZ2V0X211bHRpeGFjdF9zdGF0cygpOworCitzdGVwIHMyX2JlZ2luOiBCRUdJTjsK K3N0ZXAgczJfbG9jazogU0VMRUNUIDEgRlJPTSBteHEgV0hFUkUgaWQ9MSBGT1IgS0VZIFNIQVJF OworP2NvbHVtbj8KKy0tLS0tLS0tCisgICAgICAgMQorKDEgcm93KQorCitzdGVwIHNuYXAyOiAK KyAgQ1JFQVRFIFRFTVAgVEFCTEUgc25hcDIgQVMKKyAgU0VMRUNUIG51bV9teGlkcywgbnVtX21l bWJlcnMsIG9sZGVzdF9tdWx0aXhhY3QsIG9sZGVzdF9vZmZzZXQKKyAgRlJPTSBwZ19nZXRfbXVs dGl4YWN0X3N0YXRzKCk7CisKK3N0ZXAgY2hlY2tfd2hpbGVfcGlubmVkOiAKKyAgU0VMRUNUIHIu YXNzZXJ0aW9uLCByLm9rCisgIEZST00gc25hcDAgczAKKyAgSk9JTiBzbmFwMSBzMSBPTiBUUlVF CisgIEpPSU4gc25hcDIgczIgT04gVFJVRSwKKyAgTEFURVJBTCB1bm5lc3QoCisgICAgQVJSQVlb CisgICAgICAnaXNfaW5pdF9teGlkcycsCisgICAgICAnaXNfaW5pdF9tZW1iZXJzJywKKyAgICAg ICdpc19pbml0X29sZGVzdF9teGlkJywKKyAgICAgICdpc19pbml0X29sZGVzdF9vZmYnLAorICAg ICAgJ2lzX29sZGVzdF9teGlkX25vbmRlY18wMScsCisgICAgICAnaXNfb2xkZXN0X214aWRfbm9u ZGVjXzEyJywKKyAgICAgICdpc19vbGRlc3Rfb2ZmX25vbmRlY18wMScsCisgICAgICAnaXNfb2xk ZXN0X29mZl9ub25kZWNfMTInLAorICAgICAgJ2lzX21lbWJlcnNfaW5jcmVhc2VkX2dlMScsCisg ICAgICAnaXNfbXhpZHNfbm9uZGVjXzAxJywKKyAgICAgICdpc19teGlkc19ub25kZWNfMTInLAor ICAgICAgJ2lzX21lbWJlcnNfbm9uZGVjXzAxJywKKyAgICAgICdpc19tZW1iZXJzX25vbmRlY18x MicKKyAgICBdLAorICAgIEFSUkFZWworICAgICAgKHMyLm51bV9teGlkcyAgICAgICAgSVMgTk9U IE5VTEwpLAorICAgICAgKHMyLm51bV9tZW1iZXJzICAgICAgSVMgTk9UIE5VTEwpLAorICAgICAg KHMyLm9sZGVzdF9tdWx0aXhhY3QgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm9sZGVzdF9vZmZz ZXQgICAgSVMgTk9UIE5VTEwpLAorCisgICAgICAoczEub2xkZXN0X211bHRpeGFjdDo6dGV4dDo6 YmlnaW50ID49IENPQUxFU0NFKHMwLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCwgMCkp LAorICAgICAgKHMyLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCA+PSBDT0FMRVNDRShz MS5vbGRlc3RfbXVsdGl4YWN0Ojp0ZXh0OjpiaWdpbnQsIDApKSwKKyAgICAgIChzMS5vbGRlc3Rf b2Zmc2V0ICAgID49IENPQUxFU0NFKHMwLm9sZGVzdF9vZmZzZXQsICAgIDApKSwKKyAgICAgIChz Mi5vbGRlc3Rfb2Zmc2V0ICAgID49IENPQUxFU0NFKHMxLm9sZGVzdF9vZmZzZXQsICAgIDApKSwK KworICAgICAgKHMyLm51bV9tZW1iZXJzID49IENPQUxFU0NFKHMxLm51bV9tZW1iZXJzLCAwKSAr IDEpLAorCisgICAgICAoczEubnVtX214aWRzICAgPj0gQ09BTEVTQ0UoczAubnVtX214aWRzLCAg IDApKSwKKyAgICAgIChzMi5udW1fbXhpZHMgICA+PSBDT0FMRVNDRShzMS5udW1fbXhpZHMsICAg MCkpLAorICAgICAgKHMxLm51bV9tZW1iZXJzID49IENPQUxFU0NFKHMwLm51bV9tZW1iZXJzLCAw KSksCisgICAgICAoczIubnVtX21lbWJlcnMgPj0gQ09BTEVTQ0UoczEubnVtX21lbWJlcnMsIDAp KQorICAgIF0KKyAgKSBBUyByKGFzc2VydGlvbiwgb2spOworCithc3NlcnRpb24gICAgICAgICAg ICAgICB8b2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLQoraXNfaW5pdF9teGlkcyAgICAg ICAgICAgfHQgCitpc19pbml0X21lbWJlcnMgICAgICAgICB8dCAKK2lzX2luaXRfb2xkZXN0X214 aWQgICAgIHx0IAoraXNfaW5pdF9vbGRlc3Rfb2ZmICAgICAgfHQgCitpc19vbGRlc3RfbXhpZF9u b25kZWNfMDF8dCAKK2lzX29sZGVzdF9teGlkX25vbmRlY18xMnx0IAoraXNfb2xkZXN0X29mZl9u b25kZWNfMDEgfHQgCitpc19vbGRlc3Rfb2ZmX25vbmRlY18xMiB8dCAKK2lzX21lbWJlcnNfaW5j cmVhc2VkX2dlMXx0IAoraXNfbXhpZHNfbm9uZGVjXzAxICAgICAgfHQgCitpc19teGlkc19ub25k ZWNfMTIgICAgICB8dCAKK2lzX21lbWJlcnNfbm9uZGVjXzAxICAgIHx0IAoraXNfbWVtYmVyc19u b25kZWNfMTIgICAgfHQgCisoMTMgcm93cykKKworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0 ZXAgczJfY29tbWl0OiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNv bGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpp bmRleCA1YWZhZTMzZDM3MC4uYmFiOGE4ZWFmMzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xh dGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZQpAQCAtMTIwLDMgKzEyMCw0IEBAIHRlc3Q6IHNlcmlhbGl6YWJsZS1wYXJhbGxl bC0yCiB0ZXN0OiBzZXJpYWxpemFibGUtcGFyYWxsZWwtMwogdGVzdDogbWF0dmlldy13cml0ZS1z a2V3CiB0ZXN0OiBsb2NrLW5vd2FpdAordGVzdDogbXVsdGl4YWN0X3N0YXRzCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbXVsdGl4YWN0X3N0YXRzLnNwZWMgYi9zcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvbXVsdGl4YWN0X3N0YXRzLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdlZjA1ZjFiZmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL211bHRpeGFjdF9zdGF0cy5zcGVjCkBAIC0wLDAgKzEsMTE5 IEBACisjIFRlc3QgaW52YXJpYW50cyBmb3IgcGdfZ2V0X211bHRpeGFjdF9zdGF0cygpCisjIFdl IGNyZWF0ZSBleGFjdGx5IG9uZSBmcmVzaCBNdWx0aVhhY3Qgb24gYSBicmFuZC1uZXcgdGFibGUu IFdoaWxlIGl0IGlzIHBpbm5lZAorIyBieSB0d28gb3BlbiB0cmFuc2FjdGlvbnMsIHdlIGFzc2Vy dCBvbmx5IGludmFyaWFudHMgdGhhdCBiYWNrZ3JvdW5kIFZBQ1VVTS9GUkVFWkUKKyMgY2Fubm90 IHZpb2xhdGU6CisjICAg4oCiIG1lbWJlcnMgaW5jcmVhc2VkIGJ5IOKJpSAxIHdoZW4gdGhlIHNl Y29uZCBzZXNzaW9uIGxvY2tlZCB0aGUgcm93LAorIyAgIOKAoiBudW1fbXhpZHMgLyBudW1fbWVt YmVycyBkaWQgbm90IGRlY3JlYXNlIHZzIGVhcmxpZXIgc25hcHNob3RzLAorIyAgIOKAoiBvbGRl c3RfKiBuZXZlciBkZWNyZWFzZXMuCisjIFdlIG1ha2UgTk8gYXNzZXJ0aW9ucyBhZnRlciByZWxl YXNpbmcgbG9ja3MgKGZyZWV6aW5nL3RydW5jYXRpb24gbWF5IHNocmluayBkZWx0YXMpLgorIwor IyBUZXJtaW5vbG9neSAoZ2xvYmFsIGNvdW50ZXJzKToKKyMgICBudW1fbXhpZHMsIG51bV9tZW1i ZXJzICAgIDogImluLXVzZSIgZGVsdGFzIGRlcml2ZWQgZnJvbSBnbG9iYWwgaG9yaXpvbnMKKyMg ICBvbGRlc3RfbXVsdGl4YWN0LCBvZmZzZXQgIDogb2xkZXN0IGhvcml6b25zOyB0aGV5IG1vdmUg Zm9yd2FyZCwgbmV2ZXIgYmFja3dhcmQKKyMKKyMgQWxsIGFzc2VydGlvbnMgZXhlY3V0ZSB3aGls ZSBvdXIgbXVsdGl4YWN0IGlzIHBpbm5lZCBieSBvcGVuIHR4bnMsIHdoaWNoIHByb3RlY3RzCisj IHRoZSB0cnVuY2F0aW9uIGhvcml6b24gKFZBQ1VVTSBjYW4ndCBhZHZhbmNlIHBhc3Qgb3VyIHBp bm5lZCBtdWx0aSkuCisKK3NldHVwCit7CisgICAgQ1JFQVRFIFRBQkxFIG14cShpZCBpbnQgUFJJ TUFSWSBLRVksIHYgaW50KTsKKyAgICBJTlNFUlQgSU5UTyBteHEgVkFMVUVTICgxLCA0Mik7Cit9 CisKK3RlYXJkb3duCit7CisgICAgRFJPUCBUQUJMRSBteHE7Cit9CisKKyMgVHdvIHNlc3Npb25z IHRoYXQgbG9jayBvbiB0aGUgc2FtZSB0dXBsZSAtPiBvbmUgTXVsdGlYYWN0IHdpdGggPj0gMiBt ZW1iZXJzLgorc2Vzc2lvbiAiczEiCitzZXR1cCB7IFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g d2FybmluZzsgU0VUIGxvY2tfdGltZW91dCA9ICc1cyc7IH0KK3N0ZXAgczFfYmVnaW4gIHsgQkVH SU47IH0KK3N0ZXAgczFfbG9jayAgIHsgU0VMRUNUIDEgRlJPTSBteHEgV0hFUkUgaWQ9MSBGT1Ig S0VZIFNIQVJFOyB9CitzdGVwIHMxX2NvbW1pdCB7IENPTU1JVDsgfQorCitzZXNzaW9uICJzMiIK K3NldHVwIHsgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOyBTRVQgbG9ja190aW1l b3V0ID0gJzVzJzsgfQorc3RlcCBzMl9iZWdpbiAgeyBCRUdJTjsgfQorc3RlcCBzMl9sb2NrICAg eyBTRUxFQ1QgMSBGUk9NIG14cSBXSEVSRSBpZD0xIEZPUiBLRVkgU0hBUkU7IH0KK3N0ZXAgczJf Y29tbWl0IHsgQ09NTUlUOyB9CisKKyMgQmFzZWxpbmUgQkVGT1JFIGFueSBsb2NraW5nOyBtYXkg YmUgTlVMTHMgaWYgbXVsdGl4YWN0IGlzbid0IGluaXRpYWxpemVkIHlldC4KK3N0ZXAgc25hcDAg eworICBDUkVBVEUgVEVNUCBUQUJMRSBzbmFwMCBBUworICBTRUxFQ1QgbnVtX214aWRzLCBudW1f bWVtYmVycywgb2xkZXN0X211bHRpeGFjdCwgb2xkZXN0X29mZnNldAorICBGUk9NIHBnX2dldF9t dWx0aXhhY3Rfc3RhdHMoKTsKK30KKworIyBBZnRlciBzMSBoYXMgbG9ja2VkIHRoZSByb3cuCitz dGVwIHNuYXAxIHsKKyAgQ1JFQVRFIFRFTVAgVEFCTEUgc25hcDEgQVMKKyAgU0VMRUNUIG51bV9t eGlkcywgbnVtX21lbWJlcnMsIG9sZGVzdF9tdWx0aXhhY3QsIG9sZGVzdF9vZmZzZXQKKyAgRlJP TSBwZ19nZXRfbXVsdGl4YWN0X3N0YXRzKCk7Cit9CisKKyMgQWZ0ZXIgczIgam9pbnMgb24gdGhl IFNBTUUgdHVwbGUgLT4gbXVsdGl4YWN0IHdpdGggPj0gMiBtZW1iZXJzLgorc3RlcCBzbmFwMiB7 CisgIENSRUFURSBURU1QIFRBQkxFIHNuYXAyIEFTCisgIFNFTEVDVCBudW1fbXhpZHMsIG51bV9t ZW1iZXJzLCBvbGRlc3RfbXVsdGl4YWN0LCBvbGRlc3Rfb2Zmc2V0CisgIEZST00gcGdfZ2V0X211 bHRpeGFjdF9zdGF0cygpOworfQorCisjIFByZXR0eSwgZGV0ZXJtaW5pc3RpYyBrZXkvdmFsdWUg b3V0cHV0IG9mIGJvb2xlYW4gY2hlY2tzLgorIyBLZXlzOgorIyAgIGlzX2luaXRfbXhpZHMgICAg ICAgICAgICA6IG51bV9teGlkcyBpcyBub24tTlVMTAorIyAgIGlzX2luaXRfbWVtYmVycyAgICAg ICAgICA6IG51bV9tZW1iZXJzIGlzIG5vbi1OVUxMCisjICAgaXNfaW5pdF9vbGRlc3RfbXhpZCAg ICAgIDogb2xkZXN0X211bHRpeGFjdCBpcyBub24tTlVMTAorIyAgIGlzX2luaXRfb2xkZXN0X29m ZiAgICAgICA6IG9sZGVzdF9vZmZzZXQgaXMgbm9uLU5VTEwKKyMgICBpc19vbGRlc3RfbXhpZF9u b25kZWNfMDEgOiBvbGRlc3RfbXVsdGl4YWN0IGRpZCBub3QgZGVjcmVhc2UgKHNuYXAw4oaSc25h cDEpCisjICAgaXNfb2xkZXN0X214aWRfbm9uZGVjXzEyIDogb2xkZXN0X211bHRpeGFjdCBkaWQg bm90IGRlY3JlYXNlIChzbmFwMeKGknNuYXAyKQorIyAgIGlzX29sZGVzdF9vZmZfbm9uZGVjXzAx ICA6IG9sZGVzdF9vZmZzZXQgZGlkIG5vdCBkZWNyZWFzZSAoc25hcDDihpJzbmFwMSkKKyMgICBp c19vbGRlc3Rfb2ZmX25vbmRlY18xMiAgOiBvbGRlc3Rfb2Zmc2V0IGRpZCBub3QgZGVjcmVhc2Ug KHNuYXAx4oaSc25hcDIpCisjICAgaXNfbWVtYmVyc19pbmNyZWFzZWRfZ2UxIDogbWVtYmVycyBp bmNyZWFzZWQgYnkgYXQgbGVhc3QgMSB3aGVuIHMyIGpvaW5lZAorIyAgIGlzX214aWRzX25vbmRl Y18wMSAgICAgICA6IG51bV9teGlkcyBkaWQgbm90IGRlY3JlYXNlIChzbmFwMOKGknNuYXAxKQor IyAgIGlzX214aWRzX25vbmRlY18xMiAgICAgICA6IG51bV9teGlkcyBkaWQgbm90IGRlY3JlYXNl IChzbmFwMeKGknNuYXAyKQorIyAgIGlzX21lbWJlcnNfbm9uZGVjXzAxICAgICA6IG51bV9tZW1i ZXJzIGRpZCBub3QgZGVjcmVhc2UgKHNuYXAw4oaSc25hcDEpCisjICAgaXNfbWVtYmVyc19ub25k ZWNfMTIgICAgIDogbnVtX21lbWJlcnMgZGlkIG5vdCBkZWNyZWFzZSAoc25hcDHihpJzbmFwMikK K3N0ZXAgY2hlY2tfd2hpbGVfcGlubmVkIHsKKyAgU0VMRUNUIHIuYXNzZXJ0aW9uLCByLm9rCisg IEZST00gc25hcDAgczAKKyAgSk9JTiBzbmFwMSBzMSBPTiBUUlVFCisgIEpPSU4gc25hcDIgczIg T04gVFJVRSwKKyAgTEFURVJBTCB1bm5lc3QoCisgICAgQVJSQVlbCisgICAgICAnaXNfaW5pdF9t eGlkcycsCisgICAgICAnaXNfaW5pdF9tZW1iZXJzJywKKyAgICAgICdpc19pbml0X29sZGVzdF9t eGlkJywKKyAgICAgICdpc19pbml0X29sZGVzdF9vZmYnLAorICAgICAgJ2lzX29sZGVzdF9teGlk X25vbmRlY18wMScsCisgICAgICAnaXNfb2xkZXN0X214aWRfbm9uZGVjXzEyJywKKyAgICAgICdp c19vbGRlc3Rfb2ZmX25vbmRlY18wMScsCisgICAgICAnaXNfb2xkZXN0X29mZl9ub25kZWNfMTIn LAorICAgICAgJ2lzX21lbWJlcnNfaW5jcmVhc2VkX2dlMScsCisgICAgICAnaXNfbXhpZHNfbm9u ZGVjXzAxJywKKyAgICAgICdpc19teGlkc19ub25kZWNfMTInLAorICAgICAgJ2lzX21lbWJlcnNf bm9uZGVjXzAxJywKKyAgICAgICdpc19tZW1iZXJzX25vbmRlY18xMicKKyAgICBdLAorICAgIEFS UkFZWworICAgICAgKHMyLm51bV9teGlkcyAgICAgICAgSVMgTk9UIE5VTEwpLAorICAgICAgKHMy Lm51bV9tZW1iZXJzICAgICAgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm9sZGVzdF9tdWx0aXhh Y3QgSVMgTk9UIE5VTEwpLAorICAgICAgKHMyLm9sZGVzdF9vZmZzZXQgICAgSVMgTk9UIE5VTEwp LAorCisgICAgICAoczEub2xkZXN0X211bHRpeGFjdDo6dGV4dDo6YmlnaW50ID49IENPQUxFU0NF KHMwLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCwgMCkpLAorICAgICAgKHMyLm9sZGVz dF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCA+PSBDT0FMRVNDRShzMS5vbGRlc3RfbXVsdGl4YWN0 Ojp0ZXh0OjpiaWdpbnQsIDApKSwKKyAgICAgIChzMS5vbGRlc3Rfb2Zmc2V0ICAgID49IENPQUxF U0NFKHMwLm9sZGVzdF9vZmZzZXQsICAgIDApKSwKKyAgICAgIChzMi5vbGRlc3Rfb2Zmc2V0ICAg ID49IENPQUxFU0NFKHMxLm9sZGVzdF9vZmZzZXQsICAgIDApKSwKKworICAgICAgKHMyLm51bV9t ZW1iZXJzID49IENPQUxFU0NFKHMxLm51bV9tZW1iZXJzLCAwKSArIDEpLAorCisgICAgICAoczEu bnVtX214aWRzICAgPj0gQ09BTEVTQ0UoczAubnVtX214aWRzLCAgIDApKSwKKyAgICAgIChzMi5u dW1fbXhpZHMgICA+PSBDT0FMRVNDRShzMS5udW1fbXhpZHMsICAgMCkpLAorICAgICAgKHMxLm51 bV9tZW1iZXJzID49IENPQUxFU0NFKHMwLm51bV9tZW1iZXJzLCAwKSksCisgICAgICAoczIubnVt X21lbWJlcnMgPj0gQ09BTEVTQ0UoczEubnVtX21lbWJlcnMsIDApKQorICAgIF0KKyAgKSBBUyBy KGFzc2VydGlvbiwgb2spOworfQorCitwZXJtdXRhdGlvbiBzbmFwMCBzMV9iZWdpbiBzMV9sb2Nr IHNuYXAxIHMyX2JlZ2luIHMyX2xvY2sgc25hcDIgY2hlY2tfd2hpbGVfcGlubmVkIHMxX2NvbW1p dCBzMl9jb21taXQKLS0gCjIuNDcuMwoK --0000000000006b1de4063ed08baf--