From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id BD6031FF172 for <inbox@lore.proxmox.com>; Wed, 16 Apr 2025 12:00:19 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5E181325A5; Wed, 16 Apr 2025 12:00:12 +0200 (CEST) Date: Wed, 16 Apr 2025 12:00:04 +0200 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= <f.gruenbichler@proxmox.com> To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> References: <20250416091718.182071-1-c.ebner@proxmox.com> <20250416091718.182071-3-c.ebner@proxmox.com> In-Reply-To: <20250416091718.182071-3-c.ebner@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1744797358.cnv8yb7tao.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.045 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, datastore.rs] Subject: Re: [pbs-devel] [PATCH v4 proxmox-backup 2/2] garbage collection: fix rare race in chunk marking phase X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> T24gQXByaWwgMTYsIDIwMjUgMTE6MTcgYW0sIENocmlzdGlhbiBFYm5lciB3cm90ZToKPiBEdXJp bmcgcGhhc2UgMSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gcmVmZXJlbmNlZCBjaHVua3MgYXJlIG1h cmtlZCBhcwo+IGluIHVzZSBieSBpdGVyYXRpbmcgb3ZlciBhbGwgaW5kZXggZmlsZXMgYW5kIHVw ZGF0aW5nIHRoZSBhdGltZSBvbgo+IHRoZSBjaHVua3MgcmVmZXJlbmNlZCBieSB0aGVzZS4KPiAK PiBJbiBhbiBlZGdlIGNhc2UgZm9yIGxvbmcgcnVubmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gam9i cywgd2hlcmUgYQo+IG5ld2x5IGFkZGVkIHNuYXBzaG90IChjcmVhdGVkIGFmdGVyIHRoZSBzdGFy dCBvZiBHQykgcmV1c2VkIGtub3duCj4gY2h1bmtzIGZyb20gYSBwcmV2aW91cyBzbmFwc2hvdCwg YnV0IHRoZSBwcmV2aW91cyBzbmFwc2hvdCBpbmRleAo+IHJlZmVyZW5jaW5nIHRoZW0gZGlzYXBw ZWFyZWQgYmVmb3JlIHRoZSBtYXJraW5nIHBoYXNlIGNvdWxkIHJlYWNoCj4gdGhhdCBpbmRleCAo ZS5nLiBwcnVuZWQgYmVjYXVzZSBvbmx5IDEgc25hcHNob3QgdG8gYmUga2VwdCBieQo+IHJldGVu dGlvbiBzZXR0aW5nKSwga25vd24gY2h1bmtzIGZyb20gdGhhdCBwcmV2aW91cyBpbmRleCBmaWxl IG1pZ2h0Cj4gbm90IGJlIG1hcmtlZCAoZ2l2ZW4gdGhhdCBieSBub25lIG9mIHRoZSBvdGhlciBp bmRleCBmaWxlcyBpdCB3YXMKPiBtYXJrZWQpLgo+IAo+IFNpbmNlIGNvbW1pdCA3NDM2MWRhOCAo ImdhcmJhZ2UgY29sbGVjdGlvbjogZ2VuZXJhdGUgaW5kZXggZmlsZSBsaXN0Cj4gdmlhIGRhdGFz dG9yZSBpdGVyYXRvcnMiKSB0aGlzIGlzIGV2ZW4gbGVzcyBsaWtlbHkgYXMgbm93IHRoZQo+IGl0 ZXJhdGlvbiByZWFkcyBhbHNvIGluZGV4IGZpbGVzIGFkZGVkIGR1cmluZyBwaGFzZSAxLCBhbmQK PiB0aGVyZWZvcmUgZWl0aGVyIHRoZSBuZXcgb3IgdGhlIHByZXZpb3VzIGluZGV4IGZpbGUgd2ls bCBhY2NvdW50IGZvcgo+IHRoZXNlIGNodW5rcyAodGhlIHByZXZpb3VzIGJhY2t1cCBzbmFwc2hv dCBjYW4gb25seSBiZSBwcnVuZGVkIGFmdGVyCj4gdGhlIG5ldyBvbmUgZmluaXNoZWQsIHNpbmNl IGxvY2tlZCkuIFRoZXJlIHJlbWFpbnMgaG93ZXZlciBhIHNtYWxsCj4gcmFjZSB3aW5kb3cgYmV0 d2VlbiB0aGUgcmVhZGluZyBvZiB0aGUgc25hcHNob3RzIGluIHRoZSBiYWNrdXAgZ3JvdXAKPiBh bmQgdGhlIHJlYWRpbmcgb2YgdGhlIGFjdHVhbCBpbmRleCBmaWxlcyBmb3IgbWFya2luZy4KPiAK PiBGaXggdGhpcyByYWNlIGJ5Ogo+IDEuIENoZWNraW5nIGlmIHRoZSBsYXN0IHNuYXBzaG90IG9m IGEgZ3JvdXAgZGlzYXBwZWFyZWQgYW5kIGlmIHNvCj4gMi4gZ2VuZXJhdGUgdGhlIGxpc3QgYWdh aW4sIGxvb2tpbmcgZm9yIG5ldyBpbmRleCBmaWxlcyBwcmV2aW91c2x5Cj4gICAgbm90IGFjY291 bnRlZCBmb3IKPiAzLiBUbyBhdm9pZCBwb3NzaWJsZSBlbmRsZXNzIGxvb3BpbmcsIGxvY2sgdGhl IGdyb3VwIGlmIHRoZSBzbmFwc2hvdAo+ICAgIGxpc3QgY2hhbmdlZCBldmVuIGFmdGVyIHRoZSAx MHRoIHRpbWUgKHdoaWNoIHdpbGwgbGVhZCB0bwo+ICAgIGNvbmN1cnJlbnQgb3BlcmF0aW9ucyB0 byB0aGlzIGdyb3VwIGZhaWxpbmcpLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFYm5l ciA8Yy5lYm5lckBwcm94bW94LmNvbT4KPiAtLS0KPiAgcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0 b3JlLnJzIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAxIGZpbGUg Y2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycyBiL3Bicy1kYXRhc3RvcmUvc3JjL2Rh dGFzdG9yZS5ycwo+IGluZGV4IDQ2MzBiMWIzOS4uOGE1MDc1Nzg2IDEwMDY0NAo+IC0tLSBhL3Bi cy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwo+ICsrKyBiL3Bicy1kYXRhc3RvcmUvc3JjL2Rh dGFzdG9yZS5ycwo+IEBAIC0xMTQ4LDQ3ICsxMTQ4LDg3IEBAIGltcGwgRGF0YVN0b3JlIHsKPiAg ICAgICAgICAgICAgbGV0IG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5jb250ZXh0KCJpdGVyYXRpbmcg bmFtZXNwYWNlcyBmYWlsZWQiKT87Cj4gICAgICAgICAgICAgIGZvciBncm91cCBpbiBhcmNfc2Vs Zi5pdGVyX2JhY2t1cF9ncm91cHMobmFtZXNwYWNlKT8gewo+ICAgICAgICAgICAgICAgICAgbGV0 IGdyb3VwID0gZ3JvdXAuY29udGV4dCgiaXRlcmF0aW5nIGJhY2t1cCBncm91cHMgZmFpbGVkIik/ Owo+IC0gICAgICAgICAgICAgICAgbGV0IG11dCBzbmFwc2hvdHMgPSBncm91cC5saXN0X2JhY2t1 cHMoKS5jb250ZXh0KCJsaXN0aW5nIHNuYXBzaG90cyBmYWlsZWQiKT87Cj4gLSAgICAgICAgICAg ICAgICAvLyBTb3J0IGJ5IHNuYXBzaG90IHRpbWVzdGFtcCB0byBpdGVyYXRlIG92ZXIgY29uc2Vj dXRpdmUgc25hcHNob3RzIGZvciBlYWNoIGltYWdlLgo+IC0gICAgICAgICAgICAgICAgQmFja3Vw SW5mbzo6c29ydF9saXN0KCZtdXQgc25hcHNob3RzLCB0cnVlKTsKPiAtICAgICAgICAgICAgICAg IGZvciBzbmFwc2hvdCBpbiBzbmFwc2hvdHMgewo+IC0gICAgICAgICAgICAgICAgICAgIGZvciBm aWxlIGluIHNuYXBzaG90LmZpbGVzIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Vy LmNoZWNrX2Fib3J0KCk/Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXIuZmFpbF9v bl9zaHV0ZG93bigpPzsKPiAtCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtdXQgcGF0 aCA9IHNuYXBzaG90LmJhY2t1cF9kaXIuZnVsbF9wYXRoKCk7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHBhdGgucHVzaChmaWxlKTsKPiAtCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGxl dCBpbmRleCA9IG1hdGNoIHNlbGYub3Blbl9pbmRleF9yZWFkZXIoJnBhdGgpPyB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJlYWRlck9wdGlvbjo6U29tZShpbmRleCkgPT4g aW5kZXgsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJlYWRlck9wdGlvbjo6 Tm9uZVdyb25nVHlwZSB8IEluZGV4UmVhZGVyT3B0aW9uOjpOb25lTm90Rm91bmQgPT4gewo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucHJvY2Vzc2VkX2luZGV4X2xpc3QucmVt b3ZlKCZwYXRoKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK PiArCj4gKyAgICAgICAgICAgICAgICAvLyBBdm9pZCByYWNlIGJldHdlZW4gbGlzdGluZy9tYXJr aW5nIG9mIHNuYXBzaG90cyBieSBHQyBhbmQgcHJ1bmluZyB0aGUgbGFzdAo+ICsgICAgICAgICAg ICAgICAgLy8gc25hcHNob3QgaW4gdGhlIGdyb3VwLCBmb2xsb3dpbmcgYSBuZXcgc25hcHNob3Qg Y3JlYXRpb24uIE90aGVyd2lzZSBrbm93biBjaHVua3MKPiArICAgICAgICAgICAgICAgIC8vIG1p Z2h0IG9ubHkgYmUgcmVmZXJlbmNlZCBieSB0aGUgbmV3IHNuYXBzaG90LCBzbyBpdCBtdXN0IGJl IHJlYWQgYXMgd2VsbC4KPiArICAgICAgICAgICAgICAgIGxldCBtdXQgcmV0cnlfY291bnRlciA9 IDA7Cj4gKyAgICAgICAgICAgICAgICAncmV0cnk6IGxvb3Agewo+ICsgICAgICAgICAgICAgICAg ICAgIGxldCBfbG9jayA9IG1hdGNoIHJldHJ5X2NvdW50ZXIgewo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAwLi49OSA9PiBOb25lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAxMCA9PiBT b21lKAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAubG9jaygpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLmNvbnRleHQoImV4aGF1c3RlZCByZXRyaWVzIGFuZCBmYWlsZWQgdG8gbG9jayBncm91 cCIpPywKPiArICAgICAgICAgICAgICAgICAgICAgICAgKSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgXyA9PiBiYWlsISgiZXhoYXVzdGVkIHJldGlyZXMgYW5kIHVuZXhwZWN0ZWQgY291bnRl ciBvdmVycnVuIiksCgp0eXBvICdyZXRpcmVzJwoKb3RoZXIgdGhhbiB0aGF0IGFuZCB0aGUgY29t bWVudHMgb24gcGF0Y2gjMSwgdGhpcyBsb29rcyBnb29kIHRvIG1lLCBzbwpjb25zaWRlciB0aGlz CgpBY2tlZC1ieTogRmFiaWFuIEdyw7xuYmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJveG1veC5j b20+Cgo+ICsgICAgICAgICAgICAgICAgICAgIH07Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAg IGxldCBtdXQgc25hcHNob3RzID0gbWF0Y2ggZ3JvdXAubGlzdF9iYWNrdXBzKCkgewo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBPayhzbmFwc2hvdHMpID0+IHNuYXBzaG90cywKPiArICAgICAg ICAgICAgICAgICAgICAgICAgRXJyKGVycikgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgZ3JvdXAuZXhpc3RzKCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBFcnIoZXJyKS5jb250ZXh0KCJsaXN0aW5nIHNuYXBzaG90cyBmYWlsZWQiKT87 Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgICAgICAg ICAgIH07Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhfbWFya191c2VkX2No dW5rcygKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnBhdGgsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAm bXV0IGNodW5rX2xydV9jYWNoZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1 cywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlciwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgKT87Cj4gLQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBpZiAhdW5wcm9j ZXNzZWRfaW5kZXhfbGlzdC5yZW1vdmUoJnBhdGgpIHsKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZm8hKCJFbmNvdW50ZXJlZCBuZXcgaW5kZXggZmlsZSAne3BhdGg6P30nLCBpbmNy ZW1lbnQgdG90YWwgaW5kZXggZmlsZSBjb3VudCIpOwo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5kZXhfY291bnQgKz0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrICdyZXRyeTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg ICAgICAgIH07Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBzdGFydCBpdGVy YXRpb24gd2l0aCB0aGUgbGFzdCBzbmFwc2hvdCBvZiB0aGUgZ3JvdXAgdG8gcmVkdWNlIHJhY2UK PiArICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cgd2l0aCBjb25jdXJyZW50IGJhY2t1cCtw cnVuZSBwcmV2aW91cyBsYXN0IHNuYXBzaG90LiBBbGxvd3MgdG8gcmV0cnkKPiArICAgICAgICAg ICAgICAgICAgICAvLyB3aXRob3V0IHRoZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgYWxyZWFkeSBw cm9jZXNzZWQgaW5kZXggZmlsZXMgZm9yIHRoZQo+ICsgICAgICAgICAgICAgICAgICAgIC8vIGN1 cnJlbnQgZ3JvdXAuCj4gKyAgICAgICAgICAgICAgICAgICAgQmFja3VwSW5mbzo6c29ydF9saXN0 KCZtdXQgc25hcHNob3RzLCB0cnVlKTsKPiArICAgICAgICAgICAgICAgICAgICBmb3IgKGNvdW50 LCBzbmFwc2hvdCkgaW4gc25hcHNob3RzLmludG9faXRlcigpLnJldigpLmVudW1lcmF0ZSgpIHsK PiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGUgaW4gc25hcHNob3QuZmlsZXMgewo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLmNoZWNrX2Fib3J0KCk/Owo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLmZhaWxfb25fc2h1dGRvd24oKT87Cj4g Kwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBwYXRoID0gc25hcHNob3Qu YmFja3VwX2Rpci5mdWxsX3BhdGgoKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh dGgucHVzaChmaWxlKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5k ZXggPSBtYXRjaCBzZWxmLm9wZW5faW5kZXhfcmVhZGVyKCZwYXRoKT8gewo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmVhZGVyT3B0aW9uOjpTb21lKGluZGV4KSA9PiBp bmRleCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJlYWRlck9wdGlv bjo6Tm9uZVdyb25nVHlwZSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVucHJvY2Vzc2VkX2luZGV4X2xpc3QucmVtb3ZlKCZwYXRoKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmVh ZGVyT3B0aW9uOjpOb25lTm90Rm91bmQgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBjb3VudCA9PSAwIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHJ5X2NvdW50ZXIgKz0gMTsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICdyZXRyeTsKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnByb2Nlc3NlZF9pbmRleF9saXN0LnJlbW92ZSgmcGF0aCk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gKwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRleF9tYXJrX3VzZWRfY2h1bmtzKAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZwYXRoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZtdXQgY2h1bmtfbHJ1X2NhY2hlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICApPzsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAhdW5wcm9jZXNzZWRfaW5kZXhfbGlzdC5yZW1vdmUoJnBhdGgpIHsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvISgiRW5jb3VudGVyZWQgbmV3IGluZGV4 IGZpbGUgJ3twYXRoOj99JywgaW5jcmVtZW50IHRvdGFsIGluZGV4IGZpbGUgY291bnQiKTsKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9jb3VudCArPSAxOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICAKPiAtICAgICAgICAgICAgICAgICAgICAgICAg bGV0IHBlcmNlbnRhZ2UgPSAocHJvY2Vzc2VkX2luZGV4X2ZpbGVzICsgMSkgKiAxMDAgLyBpbmRl eF9jb3VudDsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGVyY2VudGFnZSA+IGxhc3Rf cGVyY2VudGFnZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvISgKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFya2VkIHtwZXJjZW50YWdlfSUgKHt9IG9m IHtpbmRleF9jb3VudH0gaW5kZXggZmlsZXMpIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcm9jZXNzZWRfaW5kZXhfZmlsZXMgKyAxLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfcGVyY2VudGFn ZSA9IHBlcmNlbnRhZ2U7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGVyY2Vu dGFnZSA9IChwcm9jZXNzZWRfaW5kZXhfZmlsZXMgKyAxKSAqIDEwMCAvIGluZGV4X2NvdW50Owo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGVyY2VudGFnZSA+IGxhc3RfcGVyY2Vu dGFnZSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyEoCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXJrZWQge3BlcmNlbnRhZ2V9JSAoe30g b2Yge2luZGV4X2NvdW50fSBpbmRleCBmaWxlcykiLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcm9jZXNzZWRfaW5kZXhfZmlsZXMgKyAxLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGFzdF9wZXJjZW50YWdlID0gcGVyY2VudGFnZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZF9pbmRleF9maWxl cyArPSAxOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHByb2Nlc3NlZF9pbmRleF9maWxlcyArPSAxOwo+ICAgICAgICAgICAgICAgICAgICAg IH0KPiArCj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgICAgICB9 Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gLS0gCj4gMi4zOS41Cj4gCj4gCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBwYnMtZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4gaHR0cHM6Ly9s aXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4gCj4g Cj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGJz LWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9s aXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCg==