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 1wEMWe-003vIb-2b for pgpool-hackers@arkaria.postgresql.org; Sun, 19 Apr 2026 07:25:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEMWe-00EUUI-0L for pgpool-hackers@arkaria.postgresql.org; Sun, 19 Apr 2026 07:25:04 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEMWd-00EUU9-2D for pgpool-hackers@lists.postgresql.org; Sun, 19 Apr 2026 07:25:03 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wEMWZ-00000001k5R-2Ir1 for pgpool-hackers@lists.postgresql.org; Sun, 19 Apr 2026 07:25:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=uA5ZGSnaJn7xkIQFnW0LTwztC/KRhMCBOEX/pYCMtUw=; b=iwc55ocY0vAogQhiQi6Uo9IyWH V9h22nUWuhIr9VEnAuc4gFF74SpRBfgnM6RRCXnc9vbAX7y3rO70ZP3915zKNBqpTqErv1MXH6ATP 7crRE2i3QydpWq+J0mZfIP9S/aBSIFkd/8uC15LfL4cBl/87XNjZ39Yh6H+xkor3W0G8tvRN+JddW GpCXM65NiIXXIRjp4jBLAkUlwR4B+ElZKA/PUj/wYSWJtrLQtKCkWy8jDNzarEN6me0RN6RChk9IA oXtZsHEm5iurx1XF6vBj7pYL2oAnGptAFWpBihJQROcVlTGO1edflWFqMYmpnOjJIAL+f7zkxmORX k/A0FxkQ==; Received: from [2409:11:4120:300:9ff6:5f8d:26ec:f095] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEMWW-004hZA-0M; Sun, 19 Apr 2026 07:24:58 +0000 Date: Sun, 19 Apr 2026 16:24:44 +0900 (JST) Message-Id: <20260419.162444.1985634870518309110.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: Recent mutated table tracking in memory From: Tatsuo Ishii In-Reply-To: References: <20260415.074316.165236259583247685.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:9ff6:5f8d:26ec:f095 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk PiBIaSBUYXRzdW8sDQo+IA0KPiBoYW5rIHlvdSBmb3IgdGhlIGRldGFpbGVkIHJldmlldy4gQXR0 YWNoZWQgcGF0Y2ggYWRkcmVzc2VzIGFsbCBpdGVtcy4NCg0KSSBndWVzcyB0aGUgYXR0YWNoZWQg cGF0Y2ggaXMgb24gdG9wIG9mDQp2MS0wMDAxLUZlYXR1cmUtbG9hZC1iYWxhbmNpbmctY29udHJv bC1ieS10YWJsZS10cmFja2luZy5wYXRjaC4gIFRvDQphcHBseSB2Mi0wMDAxLWFkZHJlc3MtcmV2 aWV3LnBhdGNoLCB3ZSBuZWVkIHRvIGFwcGx5DQp2MS0wMDAxLUZlYXR1cmUtbG9hZC1iYWxhbmNp bmctY29udHJvbC1ieS10YWJsZS10cmFja2luZy5wYXRjaCBmaXJzdC4NClVuZm9ydHVuYXRlbHkg ZHVlIHRvIHJlY2VudCBjb21taXQsIGl0IGRvZXMgbm90IGFwcGx5IGFueW1vcmUuIENhbiB5b3UN CnBsZWFzZSBwcm92aWRlIHYxICsgdjIgdGhhdCBhcmUgcmViYXNlZCBhZ2FpbnN0IGxhdGVzdCBt YXN0ZXIgYnJhbmNoPw0KQWxzbyAwNDIgcmVncmVzc2lvbiB0ZXN0IGlzIGFscmVhZHkgdXNlZCBi eSByZWNlbnQgY29tbWl0LiBDYW4geW91DQpyZW51bWJlciAwNDIudHJhY2tfdGFibGVfbXV0YXRp b24gYW5kDQowNDMudHJhY2tfdGFibGVfbXV0YXRpb25fd2F0Y2hkb2cgdG8gMDQzLnRyYWNrX3Rh YmxlX211dGF0aW9uIGFuZA0KMDQ0LnRyYWNrX3RhYmxlX211dGF0aW9uX3dhdGNoZG9nIGFjY29y ZGluZ2x5Pw0KDQpMb29raW5nIGZvcndhcmQgdG8gc2VlaW5nIG5ldyBwYXRjaC4NCg0KUmVnYXJk cywNCi0tDQpUYXRzdW8gSXNoaWkNClNSQSBPU1MgSy5LLg0KRW5nbGlzaDogaHR0cDovL3d3dy5z cmFvc3MuY28uanAvaW5kZXhfZW4vDQpKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0K DQoNCj4gbWVtcWNhY2hlIGJ1ZyBmaXgNCj4gLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IEdvb2Qg Y2F0Y2guIFRoZSByb290IGNhdXNlOiBwb29sX3NldF93cml0aW5nX3RyYW5zYWN0aW9uKCkgd2Fz DQo+IGV4cGxpY2l0bHkgc2tpcHBpbmcgZG1sX2FkYXB0aXZlX2dsb2JhbCwgc28NCj4gcG9vbF9p c193cml0aW5nX3RyYW5zYWN0aW9uKCkgYWx3YXlzIHJldHVybmVkIGZhbHNlIGluIHRoaXMgbW9k ZS4NCj4gVGhlIHF1ZXJ5IGNhY2hlIGZldGNoIGd1YXJkIGF0IHBvb2xfcHJvdG9fbW9kdWxlcy5j OjI3MA0KPiAoIXBvb2xfaXNfd3JpdGluZ190cmFuc2FjdGlvbigpKSB0aGVuIHNlcnZlZCBzdGFs ZSBjYWNoZWQgcmVzdWx0cw0KPiBhZnRlciBETUwgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uDQo+ IA0KPiBGaXg6IHBvb2xfc2V0X3dyaXRpbmdfdHJhbnNhY3Rpb24oKSBub3cgc2V0cyB0aGUgZmxh ZyBmb3INCj4gZG1sX2FkYXB0aXZlX2dsb2JhbCAob25seSAnb2ZmJyBhbmQgJ2RtbF9hZGFwdGl2 ZScgc2tpcCBpdCkuIFRoaXMNCj4gZW5zdXJlcyB0aGUgcXVlcnkgY2FjaGUgaXMgcHJvcGVybHkg YnlwYXNzZWQgYWZ0ZXIgd3JpdGVzIHdpdGhpbg0KPiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4NCj4g DQo+IFJlbW92ZWQgZGVhZCBxdWVyeSBwYXJzZSBjYWNoZSBjb2RlICh+NzAwIGxpbmVzKQ0KPiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBZ b3UncmUgcmlnaHQgLS0gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbl9nZXRfY2FjaGVkX3BhcnNl LA0KPiBwb29sX3RyYWNrX3RhYmxlX211dGF0aW9uX2NhY2hlX3BhcnNlLCBhbmQNCj4gcG9vbF90 cmFja190YWJsZV9tdXRhdGlvbl9ub3JtYWxpemVfYW5kX2hhc2ggd2VyZSBuZXZlciBjYWxsZWQu DQo+IFRoZXNlIHdlcmUgbGVmdG92ZXIgZnJvbSBhbiBlYXJsaWVyIGRlc2lnbiB3aGVyZSB3ZSBw bGFubmVkIHRvDQo+IGNhY2hlIFNRTCBwYXJzZSByZXN1bHRzIGluIHNoYXJlZCBtZW1vcnkuIFRo ZSBmZWF0dXJlIGVuZGVkIHVwDQo+IHVzaW5nIHBncG9vbCdzIGV4aXN0aW5nIHBhcnNlciBkaXJl Y3RseSwgYW5kIHRoaXMgY29kZSB3YXMgbmV2ZXINCj4gd2lyZWQgdXAuDQo+IA0KPiBSZW1vdmVk OiBRdWVyeVBhcnNlQ2FjaGUgYW5kIFF1ZXJ5UGFyc2VFbnRyeSBzdHJ1Y3RzLCBhbGwgcmVsYXRl ZA0KPiBzdGF0aWMgZnVuY3Rpb25zLCB0aGUgVFJBQ0tfVEFCTEVfTVVUQVRJT05fUVVFUllfU0VN IHNlbWFwaG9yZSwNCj4gYW5kIHRoZSB0cmFja190YWJsZV9tdXRhdGlvbl9xdWVyeV9idWNrZXRz IC8NCj4gdHJhY2tfdGFibGVfbXV0YXRpb25fcXVlcnlfcGFyc2VfY2FjaGVfc2l6ZSBjb25maWd1 cmF0aW9uDQo+IHBhcmFtZXRlcnMuIFRoaXMgYWxzbyByZWR1Y2VzIHNoYXJlZCBtZW1vcnkgdXNh Z2UgZnJvbSB+Ni40IE1CDQo+IHRvIH44MCBLQiB3aXRoIGRlZmF1bHQgc2V0dGluZ3MuDQo+IA0K PiBjaGVja19vYmplY3RfcmVsYXRpb25zaGlwX2xpc3Qgc2NvcGUNCj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gWW91J3JlIGNvcnJlY3QgLS0gZG1sX2FkYXB0 aXZlX2dsb2JhbCBkb2VzIG5vdCB1c2UNCj4gZG1sX2FkYXB0aXZlX29iamVjdF9yZWxhdGlvbnNo aXBfbGlzdC4gQ2hhbmdlZA0KPiBjaGVja19vYmplY3RfcmVsYXRpb25zaGlwX2xpc3QoKSB0byBj aGVjayBmb3IgRExCT1dfRE1MX0FEQVBUSVZFDQo+IG9ubHksIG5vdCBETEJPV19JU19ETUxfQURB UFRJVkUgKHdoaWNoIGluY2x1ZGVzIGdsb2JhbCkuDQo+IA0KPiBEb2N1bWVudGF0aW9uIGZpeGVz DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IC0gUmVtb3ZlZCAiKExhZ2xlc3MgUmVwbGlj YSBSZWFkcykiIGZyb20gc2VjdGlvbiB0aXRsZSBhbmQNCj4gICAibGFnbGVzcyIgbGFuZ3VhZ2Ug ZnJvbSBkZXNjcmlwdGlvbi4NCj4gDQo+IC0gRGVzY3JpYmVkIGZhbGxiYWNrIGJlaGF2aW9yIHdo ZW4gbmVpdGhlcg0KPiAgIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgbm9yIGRlbGF5X3Ro cmVzaG9sZF9ieV90aW1lIGlzDQo+ICAgY29uZmlndXJlZCAoVFRMIHN0YXlzIGF0IDEwMG1zIGRl ZmF1bHQgbWluaW11bSkuDQo+IA0KPiAtICJxdWVyeSBjYWNoZSIgcmVmZXJlbmNlcyByZW1vdmVk ICh0aGUgcXVlcnkgcGFyc2UgY2FjaGUgaXMgZ29uZSkuDQo+IA0KPiAtIEFkZGVkIDEyOC10YWJs ZS1wZXItU0VMRUNUIGxpbWl0IHRvIExpbWl0YXRpb25zIHNlY3Rpb24NCj4gICAodXNlcyBQT09M X01BWF9TRUxFQ1RfT0lEUykuDQo+IA0KPiBDb2RlIHN0eWxlIGZpeGVzDQo+IC0tLS0tLS0tLS0t LS0tLS0NCj4gDQo+IC0gRExCT1dfSVNfRE1MX0FEQVBUSVZFKCkgY2FsbHMgbm8gbG9uZ2VyIHNw bGl0IGFjcm9zcyBsaW5lcy4NCj4gDQo+IC0gU3BsaXQgdGhlIGxvbmcgZXJybXNnIGxpbmUgaW4N Cj4gICBpc19zZWxlY3Rfb2JqZWN0X2luX3RlbXBfd3JpdGVfbGlzdC4NCj4gDQo+IC0gUmVtb3Zl ZCByZWR1bmRhbnQgaXNfYWRhcHRpdmUgdmFyaWFibGUgaW4NCj4gICBpc19zZWxlY3Rfb2JqZWN0 X2luX3RlbXBfd3JpdGVfbGlzdCAodGhlIGNoZWNrIGF0IGZ1bmN0aW9uDQo+ICAgZW50cnkgYWxy ZWFkeSBndWFyYW50ZWVzIGl0KS4NCj4gDQo+IFRoYW5rcyENCj4gDQo+IE9uIFdlZCwgQXByIDE1 LCAyMDI2IGF0IDE6NDPigK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPiB3 cm90ZToNCj4gDQo+PiBIaSBOYWRhdiwNCj4+DQo+PiA+IEhpIFRhdHN1bywNCj4+ID4NCj4+ID4g TG9va3MgZ29vZCB0byBtZSB0aGFua3MhDQo+PiA+DQo+PiA+IFBsZWFzZSBnbyBhaGVhZCB3aXRo IHlvdXIgcmV2aWV3LiB3YWl0aW5nIHRvIGhlYXIgYmFjayBmcm9tIHlvdS4NCj4+DQo+PiBIZXJl IGFyZSB0aGUgY29kZSByZXZpZXcgcmVzdWx0cy4NCj4+DQo+PiBkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2xvYWRiYWxhbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9hZGJhbGFuY2Uuc2dtbA0K Pj4gaW5kZXggOWUxZTdiMzliLi43Mzg0Y2U4MWEgMTAwNjQ0DQo+PiAtLS0gYS9kb2Mvc3JjL3Nn bWwvbG9hZGJhbGFuY2Uuc2dtbA0KPj4gKysrIGIvZG9jL3NyYy9zZ21sL2xvYWRiYWxhbmNlLnNn bWwNCj4+IDoNCj4+ICsgPHNlY3QyIGlkPSJydW50aW1lLWNvbmZpZy10YWJsZS1tdXRhdGlvbi1t YXAiPg0KPj4gKyAgPHRpdGxlPlRhYmxlIE11dGF0aW9uIE1hcCBDb25maWd1cmF0aW9uIChMYWds ZXNzIFJlcGxpY2EgUmVhZHMpPC90aXRsZT4NCj4+DQo+PiAiKExhZ2xlc3MgUmVwbGljYSBSZWFk cykiIHNvdW5kcyBsaWtlIGFuIGFkdmVydGlzZW1lbnQgdG8gbWUuIEl0DQo+PiBzaG91bGQgYmUg cmVtb3ZlZC4NCj4+DQo+PiArICA8cGFyYT4NCj4+ICsgICBUaGVzZSBwYXJhbWV0ZXJzIGNvbmZp Z3VyZSB0aGUgdHJhY2sgdGFibGUgbXV0YXRpb24gZmVhdHVyZSwgd2hpY2ggaXMNCj4+IGFjdGl2 YXRlZCBieSBzZXR0aW5nDQo+PiArICAgPHhyZWYgbGlua2VuZD0iZ3VjLWRpc2FibGUtbG9hZC1i YWxhbmNlLW9uLXdyaXRlIj4gdG8NCj4+IDxsaXRlcmFsPmRtbF9hZGFwdGl2ZV9nbG9iYWw8L2xp dGVyYWw+Lg0KPj4gKyAgIFRoZSBmZWF0dXJlIHRyYWNrcyByZWNlbnRseSB3cml0dGVuIHRhYmxl cyB0byBwcmV2ZW50IHN0YWxlIHJlYWRzIGZyb20NCj4+IHJlcGxpY2Egbm9kZXMgZHVyaW5nDQo+ PiArICAgcmVwbGljYXRpb24gbGFnLCBpbXBsZW1lbnRpbmcgdGhlICJsYWdsZXNzIiBhcmNoaXRl Y3R1cmUgcGF0dGVybiBmb3INCj4+IGRpc3RyaWJ1dGVkIHN5c3RlbXMNCj4+ICsgICB3aXRoIHJl YWQgcmVwbGljYXMuDQo+Pg0KPj4gSSB0aGluayB0aGUgZmVhdHVyZSBkb2VzIG5vdCBndWFyYW50 ZWUgImxhZ2xlc3MiIGFueXRpbWUsIGluIGFsbCBjYXNlcy4NCj4+DQo+PiArICA8cGFyYT4NCj4+ ICsgICBUaGlzIGZlYXR1cmUgcmVxdWlyZXMgdGltZS1iYXNlZCByZXBsaWNhdGlvbiBkZWxheSBt b25pdG9yaW5nLiBUaGlzDQo+PiBjYW4gYmUgcHJvdmlkZWQgYnkgZWl0aGVyDQo+PiArICAgPHhy ZWYgbGlua2VuZD0iZ3VjLXJlcGxpY2F0aW9uLWRlbGF5LXNvdXJjZS1jbWQiPiAoZXh0ZXJuYWwg Y29tbWFuZA0KPj4gbW9kZSkgb3IgYnkgc2V0dGluZw0KPj4gKyAgIDx4cmVmIGxpbmtlbmQ9Imd1 Yy1kZWxheS10aHJlc2hvbGQtYnktdGltZSI+ICh3aGljaCB1c2VzDQo+PiA8bGl0ZXJhbD5wZ19z dGF0X3JlcGxpY2F0aW9uLnJlcGxheV9sYWc8L2xpdGVyYWw+DQo+PiArICAgZnJvbSBQb3N0Z3Jl U1FMIDEwKykuIEF0IGxlYXN0IG9uZSBvZiB0aGVzZSBtdXN0IGJlIGNvbmZpZ3VyZWQgZm9yIHRo ZQ0KPj4gVFRMIGNhbGN1bGF0aW9uIHRvIHdvcmsuDQo+Pg0KPj4gSWYgb25lIG9mIHRoZXNlIGlz IG5vdCBzZXQsIHdoYXQgaGFwcGVucz8gRXJyb3I/IE5lZWQgdG8gZGVzY3JpYmUgaXQuDQo+Pg0K Pj4gKyAgPC9wYXJhPg0KPj4gKw0KPj4gKyAgPHdhcm5pbmc+DQo+PiArICAgPHBhcmE+DQo+PiAr ICAgIEVuYWJsaW5nIDxsaXRlcmFsPmRtbF9hZGFwdGl2ZV9nbG9iYWw8L2xpdGVyYWw+IGluY3Jl YXNlcyBzaGFyZWQNCj4+IG1lbW9yeSBjb25zdW1wdGlvbi4gV2l0aCBkZWZhdWx0IHNldHRpbmdz LA0KPj4gKyAgICB0aGUgZmVhdHVyZSByZXF1aXJlcyBhcHByb3hpbWF0ZWx5IDYuNCBNQiBvZiBz aGFyZWQgbWVtb3J5ICgwLjEgTUINCj4+IGZvciB0YWJsZSB0cmFja2luZyArIDYuMyBNQiBmb3Ig cXVlcnkgY2FjaGUpLg0KPj4NCj4+ICJxdWVyeSBjYWNoZSIgc2hvdWxkIGJlICJxdWVyeSBwYXJz ZSBjYWNoZSIuDQo+Pg0KPj4gKyAgICBNZW1vcnkgdXNhZ2Ugc2NhbGVzIHdpdGggY29uZmlndXJh dGlvbiBwYXJhbWV0ZXJzOg0KPj4gKyAgIDwvcGFyYT4NCj4+ICsgICA8aXRlbWl6ZWRsaXN0Pg0K Pj4gKyAgICA8bGlzdGl0ZW0+DQo+PiArICAgICA8cGFyYT4NCj4+ICsgICAgICBUYWJsZSB0cmFj a2luZzogPGxpdGVyYWw+dHJhY2tfdGFibGVfbXV0YXRpb25fdGFibGVfc2l6ZSAqIDQwDQo+PiBi eXRlczwvbGl0ZXJhbD4gKGRlZmF1bHQ6IDIwNDggKiA0MCA9IH44MCBLQikNCj4+ICsgICAgIDwv cGFyYT4NCj4+ICsgICAgPC9saXN0aXRlbT4NCj4+ICsgICAgPGxpc3RpdGVtPg0KPj4gKyAgICAg PHBhcmE+DQo+PiArICAgICAgUXVlcnkgY2FjaGU6IDxsaXRlcmFsPnRyYWNrX3RhYmxlX211dGF0 aW9uX3F1ZXJ5X3BhcnNlX2NhY2hlX3NpemUgKg0KPj4gNjQwIGJ5dGVzPC9saXRlcmFsPiAoZGVm YXVsdDogMTAwMDAgKiA2NDAgPSB+Ni4zIE1CKQ0KPj4NCj4+ICJxdWVyeSBjYWNoZSIgc2hvdWxk IGJlICJxdWVyeSBwYXJzZSBjYWNoZSIuDQo+Pg0KPj4gKyAgIDx0aXRsZT5MaW1pdGF0aW9uczwv dGl0bGU+DQo+Pg0KPj4gSSB0aGluayBudW1iZXIgb2YgdGFibGVzIHRhY2tlZCBpbiBhIFNFTEVD VCBpcyBsaW1pdGVkIHRvIDguIEl0IHNob3VsZA0KPj4gYmUgbWVudGlvbmVkLg0KPj4NCj4+IGRp ZmYgLS1naXQgYS9zcmMvY29udGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYw0KPj4gYi9zcmMvY29u dGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYw0KPj4gaW5kZXggYTA1NmFjNTk2Li4wMTkwZDM2NzMg MTAwNjQ0DQo+PiAtLS0gYS9zcmMvY29udGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYw0KPj4gKysr IGIvc3JjL2NvbnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMNCj4+IEBAIC0xODI4LDE1ICsxODI5 LDIzIEBAIGlzX2luX2xpc3QoY2hhciAqbmFtZSwgTGlzdCAqbGlzdCkNCj4+ICBzdGF0aWMgYm9v bA0KPj4gIGlzX3NlbGVjdF9vYmplY3RfaW5fdGVtcF93cml0ZV9saXN0KE5vZGUgKm5vZGUsIHZv aWQgKmNvbnRleHQpDQo+PiAgew0KPj4gLSAgICAgICBpZiAobm9kZSA9PSBOVUxMIHx8IHBvb2xf Y29uZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9vbl93cml0ZSAhPQ0KPj4gRExCT1dfRE1MX0FE QVBUSVZFKQ0KPj4gKyAgICAgICBpZiAobm9kZSA9PSBOVUxMIHx8DQo+PiArICAgICAgICAgICAg ICAgIURMQk9XX0lTX0RNTF9BREFQVElWRSgNCj4+ICsNCj4+IHBvb2xfY29uZmlnLT5kaXNhYmxl X2xvYWRfYmFsYW5jZV9vbl93cml0ZSkpDQo+Pg0KPj4gWW91IGRvbid0IG5lZWQgdG8gc3BsaXQg dGhlIGxpbmUuDQo+Pg0KPj4gKyAgICAgICAgICAgICAgIGlzX2FkYXB0aXZlID0gRExCT1dfSVNf RE1MX0FEQVBUSVZFKA0KPj4gKw0KPj4gICAgICAgICAgICAgIHBvb2xfY29uZmlnLT5kaXNhYmxl X2xvYWRfYmFsYW5jZV9vbl93cml0ZSk7DQo+Pg0KPj4gWW91IGRvbid0IG5lZWQgdG8gc3BsaXQg dGhlIGxpbmUuDQo+Pg0KPj4gLSAgICAgICAgICAgICAgIGlmIChwb29sX2NvbmZpZy0+ZGlzYWJs ZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUgPT0NCj4+IERMQk9XX0RNTF9BREFQVElWRSAmJiBzZXNz aW9uX2NvbnRleHQtPmlzX2luX3RyYW5zYWN0aW9uKQ0KPj4gKyAgICAgICAgICAgICAgIGlmIChp c19hZGFwdGl2ZSAmJg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9jb250ZXh0 LT5pc19pbl90cmFuc2FjdGlvbikNCj4+ICAgICAgICAgICAgICAgICB7DQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBlcmVwb3J0KERFQlVHMSwNCj4+DQo+PiAoZXJybXNnKCJpc19zZWxlY3Rf b2JqZWN0X2luX3RlbXBfd3JpdGVfbGlzdDogXCIlc1wiLCBmb3VuZCByZWxhdGlvbg0KPj4gXCIl c1wiIiwgKGNoYXIgKikgY29udGV4dCwgcmd2LT5yZWxuYW1lKSkpOw0KPj4gVGhpcyBsaW5lIGlz IHRvbyBsb25nLiBQbGVhc2Ugc3BsaXQuDQo+Pg0KPj4gQEAgLTE4ODAsNyArMTg4OSwxMyBAQCBz dGF0aWMgY2hhcg0KPj4gKmdldF9hc3NvY2lhdGVkX29iamVjdF9mcm9tX2RtbF9hZGFwdGl2ZV9y ZWxhdGlvbnMNCj4+ICB2b2lkDQo+PiAgY2hlY2tfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0KGNo YXIgKm5hbWUsIGJvb2wgaXNfZnVuY19uYW1lKQ0KPj4gIHsNCj4+IC0gICAgICAgaWYgKHBvb2xf Y29uZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9vbl93cml0ZSA9PQ0KPj4gRExCT1dfRE1MX0FE QVBUSVZFICYmDQo+PiBwb29sX2NvbmZpZy0+cGFyc2VkX2RtbF9hZGFwdGl2ZV9vYmplY3RfcmVs YXRpb25zaGlwX2xpc3QpDQo+PiArICAgICAgIGJvb2wgICAgICAgICAgICBpc19hZGFwdGl2ZTsN Cj4+ICsNCj4+ICsgICAgICAgaXNfYWRhcHRpdmUgPSBETEJPV19JU19ETUxfQURBUFRJVkUoDQo+ PiArDQo+PiAgICAgIHBvb2xfY29uZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9vbl93cml0ZSk7 DQo+Pg0KPj4gSSB3cm90ZSBpbiB0aGUgY29tbWl0IG1lc3NhZ2U6DQo+Pg0KPj4gbW9kaWZpY2F0 aW9ucyBhcmUgb25seSBkZXRlY3RlZCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbikuIE5vdGUsDQo+ PiBob3dldmVyLCB5b3UgY2Fubm90IHVzZSBkbWxfYWRhcHRpdmVfb2JqZWN0X3JlbGF0aW9uc2hp cF9saXN0IHRvIHRyYWNrDQo+PiBkZXBlbmRlbmN5IGFtb25nIHRhYmxlIGFuZCBvdGhlciBvYmpl Y3RzLg0KPj4NCj4+IEluIG15IHVuZGVyc3RhbmRpbmcgdGhlIGZlYXR1cmUgZG9lcyBub3QgdXNl DQo+PiBkbWxfYWRhcHRpdmVfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0LiBJZiB0aGlzIGlzIGNv cnJlY3QsIHdoeQ0KPj4gY2hlY2tfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0KCkgaXMgY2FsbGVk IGhlcmUgaW4gY2FzZQ0KPj4gZG1sX2FkYXB0aXZlX2dsb2JhbD8gIElmIHRoZSBmZWF0dXJlIHVz ZXMNCj4+IGRtbF9hZGFwdGl2ZV9vYmplY3RfcmVsYXRpb25zaGlwX2xpc3QsIHRlc3QgY2FzZXMg c2hvdWxkIGJlIGluY2x1ZGVkLg0KPj4NCj4+IGRpZmYgLS1naXQgYS9zcmMvdXRpbHMvcG9vbF90 cmFja190YWJsZV9tdXRhdGlvbi5jDQo+PiBiL3NyYy91dGlscy9wb29sX3RyYWNrX3RhYmxlX211 dGF0aW9uLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAuLjli ZTQ2YjI4Zg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvc3JjL3V0aWxzL3Bvb2xfdHJhY2tf dGFibGVfbXV0YXRpb24uYw0KPj4NCj4+IEl0IHNlZW1zIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJl IG5vdCB1c2VkIGFueXdoZXJlLiBJIHdvbmRlciBpZiB0aGlzDQo+PiBmZWF0dXJlIGFjdHVhbGx5 IHVzZSAicXVlcnkgcGFyc2UgY2FjaGUiLg0KPj4NCj4+IHBvb2xfdHJhY2tfdGFibGVfbXV0YXRp b25fZ2V0X2NhY2hlZF9wYXJzZQ0KPj4gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbl9jYWNoZV9w YXJzZQ0KPj4gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbl9ub3JtYWxpemVfYW5kX2hhc2gNCj4+ DQo+PiBCZXNpZGVzIHRoZSBjb2RlIHJldmlldywgSSBtdXRhdGVkIG9uZSBvZiByZWdyZXNzaW9u IHRlc3RzIHRvIGNoZWNrDQo+PiB3aGV0aGVyIHRoZSBmZWF0dXJlIGNvIGV4aXN0cyB3aXRoIGlu IHRoZSBleGlzdGluZyBtZW1vcnkgcXVlcnkgY2FjaGUNCj4+IGZlYXR1cmUuIEFmdGVyIGF0dGFj aGVkIHBhdGNoIGFwcGxpZWQsIEkgcmFuIDAwNi5tZW1xY2FjaGUgYW5kIGdvdCB0aGUNCj4+IGZv bGxvd2luZyByZXN1bHQuDQo+Pg0KPj4gY2Qgc3JjL3Rlc3QvcmVncmVzc2lvbg0KPj4gLi9yZWdy ZXNzLnNoIDAwNg0KPj4gY3JlYXRpbmcgcGdwb29sLUlJIHRlbXBvcmFyeSBpbnN0YWxsYXRpb24g Li4uDQo+PiBtb3ZpbmcgcGdwb29sX3NldHVwIHRvIHRlbXBvcmFyeSBpbnN0YWxsYXRpb24gcGF0 aCAuLi4NCj4+IG1vdmluZyB3YXRjaGRvZ19zZXR1cCB0byB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9u IHBhdGggLi4uDQo+PiB1c2luZyBwZ3Bvb2wtSUkgYXQNCj4+IC9ob21lL3QtaXNoaWkvd29yay9Q Z3Bvb2wtSUkvY3VycmVudC9wZ3Bvb2wyL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVtcC9pbnN0YWxs ZWQNCj4+ICoqKioqKioqKioqKioqKioqKioqKioqKioNCj4+IFJFR1JFU1NJT04gTU9ERSAgICAg ICAgICA6IGluc3RhbGwNCj4+IFBncG9vbC1JSSB2ZXJzaW9uICAgICAgICA6IHBncG9vbC1JSSB2 ZXJzaW9uIDQuOGRldmVsIChtaXRzdWtha2Vib3NoaSkNCj4+IFBncG9vbC1JSSBpbnN0YWxsIHBh dGggICA6DQo+PiAvaG9tZS90LWlzaGlpL3dvcmsvUGdwb29sLUlJL2N1cnJlbnQvcGdwb29sMi9z cmMvdGVzdC9yZWdyZXNzaW9uL3RlbXAvaW5zdGFsbGVkDQo+PiBQb3N0Z3JlU1FMIGJpbiAgICAg ICAgICAgOiAvdXNyL2xvY2FsL3Bnc3FsL2Jpbg0KPj4gUG9zdGdyZVNRTCBNYWpvciB2ZXJzaW9u IDogMTgNCj4+IHBnYmVuY2ggICAgICAgICAgICAgICAgICA6IC91c3IvbG9jYWwvcGdzcWwvYmlu L3BnYmVuY2gNCj4+IFBvc3RncmVTUUwgamRiYyAgICAgICAgICA6DQo+PiAvdXNyL2xvY2FsL3Bn c3FsL3NoYXJlL3Bvc3RncmVzcWwtOS4yLTEwMDMuamRiYzQuamFyDQo+PiAqKioqKioqKioqKioq KioqKioqKioqKioqDQo+PiB0ZXN0aW5nIDAwNi5tZW1xY2FjaGUuLi5mYWlsZWQuDQo+PiBvdXQg b2YgMSBvazowIGZhaWxlZDoxIHRpbWVvdXQ6MA0KPj4NCj4+IGxvZy8wMDYubWVtcWNhY2hlIHNo b3dzOg0KPj4NCj4+IC4uL2V4cGVjdGVkLnR4dCByZXN1bHQudHh0IGRpZmZlcjogY2hhciAxLCBs aW5lIDENCj4+DQo+PiBTbyBJIGNoZWNrZWQgdGhlIHRlc3Qgc2NyaXB0IGFuZCBmb3VuZCB0aGUg ZXJyb3Igd2FzIGdlbmVyYXRlZCBieSBhDQo+PiBKYXZhIHByb2dyYW0gdGVzdC4NCj4+DQo+PiAg ICAgICAgIGphdmEgamRiY3Rlc3QgPiByZXN1bHQudHh0IDI+JjENCj4+ICAgICAgICAgY21wIC4u L2V4cGVjdGVkLnR4dCByZXN1bHQudHh0DQo+PiAgICAgICAgIGlmIFsgJD8gIT0gMCBdO3RoZW4N Cj4+ICAgICAgICAgICAgICAgICAuL3NodXRkb3duYWxsDQo+PiAgICAgICAgICAgICAgICAgZXhp dCAxDQo+PiAgICAgICAgIGZpDQo+Pg0KPj4gSW4gamRiY3Rlc3QuamF2YToNCj4+DQo+PiAgICAg ICAgICAgICAgICAgLyoNCj4+ICAgICAgICAgICAgICAgICAgKiBDYWNoZSB0ZXN0IGluIGFuIGV4 cGxpY2l0IHRyYW5zYWN0aW9uDQo+PiAgICAgICAgICAgICAgICAgICovDQo+PiAgICAgICAgICAg ICAgICAgY29ubi5zZXRBdXRvQ29tbWl0KGZhbHNlKTsNCj4+ICAgICAgICAgICAgICAgICAvLyBl eGVjdXRlIERNTC4gVGhpcyBzaG91bGQgcHJldmVudCBTRUxFQ1RzIGZyb20gdXNpbmcNCj4+IHF1 ZXJ5IGNhY2hlIGluIHRoZSB0cmFuc2FjdGlvbi4NCj4+ICAgICAgICAgICAgICAgICBzcWwgPSAi VVBEQVRFIHQxIFNFVCBpID0gMjsiOw0KPj4gICAgICAgICAgICAgICAgIHBzdCA9IGNvbm4uY3Jl YXRlU3RhdGVtZW50KCk7DQo+PiAgICAgICAgICAgICAgICAgcHN0LmV4ZWN1dGVVcGRhdGUoc3Fs KTsNCj4+ICAgICAgICAgICAgICAgICBwc3QuY2xvc2UoKTsNCj4+ICAgICAgICAgICAgICAgICAv LyBzaG91bGQgbm90IHVzZSB0aGUgY2FjaGUgYW5kIHNob3VsZCByZXR1cm4gIjIiLCByYXRoZXIN Cj4+IHRoYW4gIjEiDQo+PiAgICAgICAgICAgICAgICAgcHJlc3QgPSBjb25uLnByZXBhcmVTdGF0 ZW1lbnQoIlNFTEVDVCAqIEZST00gdDEiKTsNCj4+ICAgICAgICAgICAgICAgICBycyA9IHByZXN0 LmV4ZWN1dGVRdWVyeSgpOw0KPj4NCj4+IFRoZSBleHBlY3RlZCBmaWxlIChleHBlY3RlZC50eHQp IGhhcyAiMiIgYnV0IHRoZSByZXN1bHQgZmlsZQ0KPj4gKHRlc3RkaXIvcmVzdWx0LnR4dCkgd2Fz ICIxIi4gIFRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgdGhlIHRlc3QNCj4+IGZhaWxlZC4gSSB3b25k ZXIgaWYgdGhlcmUncyBzb21ldGhpbmcgd3Jvbmcgd2l0aCB0aGUgZmVhdHVyZSB3aGVuIHRoZQ0K Pj4gcXVlcnkgY2FjaGUgaXMgZW5hYmxlZC4gQ2FuIHlvdSBsb29rIGludG8gdGhpcz8NCj4+DQo+ PiBSZWdhcmRzLA0KPj4gLS0NCj4+IFRhdHN1byBJc2hpaQ0KPj4gU1JBIE9TUyBLLksuDQo+PiBF bmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+IEphcGFuZXNlOmh0 dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQo+Pg0KPiANCj4gDQo+IC0tIA0KPiBOYWRhdiBTaGF0eg0K PiBUYWlsb3IgQnJhbmRzIHwgQ1RPDQo=