From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 6977C1FF164 for ; Fri, 22 Nov 2024 10:39:18 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 586FBEB2B; Fri, 22 Nov 2024 10:39:26 +0100 (CET) From: Gabriel Goller To: pbs-devel@lists.proxmox.com Date: Fri, 22 Nov 2024 10:39:17 +0100 Message-Id: <20241122093919.59777-3-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241122093919.59777-1-g.goller@proxmox.com> References: <20241122093919.59777-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.038 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH proxmox-backup v5 2/4] fix #3786: api: add resync-corrupt option to sync jobs X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" VGhpcyBvcHRpb24gYWxsb3dzIHVzIHRvICJmaXgiIGNvcnJ1cHQgc25hcHNob3RzIChhbmQvb3Ig dGhlaXIgY2h1bmtzKQpieSBwdWxsaW5nIHRoZW0gZnJvbSBhbm90aGVyIHJlbW90ZS4gV2hlbiB0 cmF2ZXJzaW5nIHRoZSByZW1vdGUKc25hcHNob3RzLCB3ZSBjaGVjayBpZiBpdCBleGlzdHMgbG9j YWxseSwgYW5kIGlmIGl0IGlzLCB3ZSBjaGVjayBpZiB0aGUKbGFzdCB2ZXJpZmljYXRpb24gb2Yg aXQgZmFpbGVkLiBJZiB0aGUgbG9jYWwgc25hcHNob3QgaXMgYnJva2VuIGFuZCB0aGUKYHJlc3lu Yy1jb3JydXB0YCBvcHRpb24gaXMgdHVybmVkIG9uLCB3ZSBwdWxsIGluIHRoZSByZW1vdGUgc25h cHNob3QsCm92ZXJ3cml0aW5nIHRoZSBsb2NhbCBvbmUuCgpUaGlzIGlzIHZlcnkgdXNlZnVsIGFu ZCBoYXMgYmVlbiByZXF1ZXN0ZWQgYSBsb3QsIGFzIHRoZXJlIGlzIGN1cnJlbnRseQpubyB3YXkg dG8gImZpeCIgY29ycnVwdCBjaHVua3Mvc25hcHNob3RzIGV2ZW4gaWYgdGhlIHVzZXIgaGFzIGEg aGVhbHRoeQp2ZXJzaW9uIG9mIGl0IG9uIHRoZWlyIG9mZnNpdGUgaW5zdGFuY2UuCgpPcmlnaW5h bGx5LWJ5OiBTaGFubm9uIFN0ZXJ6IDxzLnN0ZXJ6QHByb3htb3guY29tPgpTaWduZWQtb2ZmLWJ5 OiBHYWJyaWVsIEdvbGxlciA8Zy5nb2xsZXJAcHJveG1veC5jb20+ClJldmlld2VkLWJ5OiBGYWJp YW4gR3LDvG5iaWNobGVyIDxmLmdydWVuYmljaGxlckBwcm94bW94LmNvbT4KLS0tCiBwYnMtYXBp LXR5cGVzL3NyYy9qb2JzLnJzIHwgMTAgKysrKysrCiBzcmMvYXBpMi9jb25maWcvc3luYy5ycyAg IHwgIDQgKysrCiBzcmMvYXBpMi9wdWxsLnJzICAgICAgICAgIHwgIDkgKysrKy0KIHNyYy9zZXJ2 ZXIvcHVsbC5ycyAgICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvcGJzLWFwaS10eXBlcy9zcmMvam9icy5ycyBiL3Bicy1hcGktdHlwZXMv c3JjL2pvYnMucnMKaW5kZXggZTgwNTZiZWIwMGNiLi41MjUyMDgxMWI1NjAgMTAwNjQ0Ci0tLSBh L3Bicy1hcGktdHlwZXMvc3JjL2pvYnMucnMKKysrIGIvcGJzLWFwaS10eXBlcy9zcmMvam9icy5y cwpAQCAtNTM2LDYgKzUzNiwxMCBAQCBpbXBsIFN5bmNEaXJlY3Rpb24gewogICAgIH0KIH0KIAor cHViIGNvbnN0IFJFU1lOQ19DT1JSVVBUX1NDSEVNQTogU2NoZW1hID0KKyAgICBCb29sZWFuU2No ZW1hOjpuZXcoIklmIHRoZSB2ZXJpZmljYXRpb24gZmFpbGVkIGZvciBhIGxvY2FsIHNuYXBzaG90 LCB0cnkgdG8gcHVsbCBpdCBhZ2Fpbi4iKQorICAgICAgICAuc2NoZW1hKCk7CisKICNbYXBpKAog ICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgaWQ6IHsKQEAgLTU5MCw2ICs1OTQsMTAgQEAgaW1w bCBTeW5jRGlyZWN0aW9uIHsKICAgICAgICAgICAgIHNjaGVtYTogVFJBTlNGRVJfTEFTVF9TQ0hF TUEsCiAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgICAgfSwKKyAgICAgICAgInJl c3luYy1jb3JydXB0IjogeworICAgICAgICAgICAgc2NoZW1hOiBSRVNZTkNfQ09SUlVQVF9TQ0hF TUEsCisgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKKyAgICAgICAgfQogICAgIH0KICldCiAj W2Rlcml2ZShTZXJpYWxpemUsIERlc2VyaWFsaXplLCBDbG9uZSwgVXBkYXRlciwgUGFydGlhbEVx KV0KQEAgLTYyMyw2ICs2MzEsOCBAQCBwdWIgc3RydWN0IFN5bmNKb2JDb25maWcgewogICAgIHB1 YiBsaW1pdDogUmF0ZUxpbWl0Q29uZmlnLAogICAgICNbc2VyZGUoc2tpcF9zZXJpYWxpemluZ19p ZiA9ICJPcHRpb246OmlzX25vbmUiKV0KICAgICBwdWIgdHJhbnNmZXJfbGFzdDogT3B0aW9uPHVz aXplPiwKKyAgICAjW3NlcmRlKHNraXBfc2VyaWFsaXppbmdfaWYgPSAiT3B0aW9uOjppc19ub25l IildCisgICAgcHViIHJlc3luY19jb3JydXB0OiBPcHRpb248Ym9vbD4sCiB9CiAKIGltcGwgU3lu Y0pvYkNvbmZpZyB7CmRpZmYgLS1naXQgYS9zcmMvYXBpMi9jb25maWcvc3luYy5ycyBiL3NyYy9h cGkyL2NvbmZpZy9zeW5jLnJzCmluZGV4IDc4ZWI3MzIwNTY2Yi4uN2ZmNmNhZTAyOWQxIDEwMDY0 NAotLS0gYS9zcmMvYXBpMi9jb25maWcvc3luYy5ycworKysgYi9zcmMvYXBpMi9jb25maWcvc3lu Yy5ycwpAQCAtNDcxLDYgKzQ3MSw5IEBAIHB1YiBmbiB1cGRhdGVfc3luY19qb2IoCiAgICAgaWYg bGV0IFNvbWUodHJhbnNmZXJfbGFzdCkgPSB1cGRhdGUudHJhbnNmZXJfbGFzdCB7CiAgICAgICAg IGRhdGEudHJhbnNmZXJfbGFzdCA9IFNvbWUodHJhbnNmZXJfbGFzdCk7CiAgICAgfQorICAgIGlm IGxldCBTb21lKHJlc3luY19jb3JydXB0KSA9IHVwZGF0ZS5yZXN5bmNfY29ycnVwdCB7CisgICAg ICAgIGRhdGEucmVzeW5jX2NvcnJ1cHQgPSBTb21lKHJlc3luY19jb3JydXB0KTsKKyAgICB9CiAK ICAgICBpZiB1cGRhdGUubGltaXQucmF0ZV9pbi5pc19zb21lKCkgewogICAgICAgICBkYXRhLmxp bWl0LnJhdGVfaW4gPSB1cGRhdGUubGltaXQucmF0ZV9pbjsKQEAgLTYyOSw2ICs2MzIsNyBAQCBh Y2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1vdGVTeW5jT3Bl cmF0b3IKICAgICAgICAgbnM6IE5vbmUsCiAgICAgICAgIG93bmVyOiBTb21lKHdyaXRlX2F1dGhf aWQuY2xvbmUoKSksCiAgICAgICAgIGNvbW1lbnQ6IE5vbmUsCisgICAgICAgIHJlc3luY19jb3Jy dXB0OiBOb25lLAogICAgICAgICByZW1vdmVfdmFuaXNoZWQ6IE5vbmUsCiAgICAgICAgIG1heF9k ZXB0aDogTm9uZSwKICAgICAgICAgZ3JvdXBfZmlsdGVyOiBOb25lLApkaWZmIC0tZ2l0IGEvc3Jj L2FwaTIvcHVsbC5ycyBiL3NyYy9hcGkyL3B1bGwucnMKaW5kZXggZDAzOWRhYjU5YzY1Li5kOGVk MWE3MzQ3YjUgMTAwNjQ0Ci0tLSBhL3NyYy9hcGkyL3B1bGwucnMKKysrIGIvc3JjL2FwaTIvcHVs bC5ycwpAQCAtMTAsNyArMTAsNyBAQCB1c2UgcGJzX2FwaV90eXBlczo6ewogICAgIEF1dGhpZCwg QmFja3VwTmFtZXNwYWNlLCBHcm91cEZpbHRlciwgUmF0ZUxpbWl0Q29uZmlnLCBTeW5jSm9iQ29u ZmlnLCBEQVRBU1RPUkVfU0NIRU1BLAogICAgIEdST1VQX0ZJTFRFUl9MSVNUX1NDSEVNQSwgTlNf TUFYX0RFUFRIX1JFRFVDRURfU0NIRU1BLCBQUklWX0RBVEFTVE9SRV9CQUNLVVAsCiAgICAgUFJJ Vl9EQVRBU1RPUkVfUFJVTkUsIFBSSVZfUkVNT1RFX1JFQUQsIFJFTU9URV9JRF9TQ0hFTUEsIFJF TU9WRV9WQU5JU0hFRF9CQUNLVVBTX1NDSEVNQSwKLSAgICBUUkFOU0ZFUl9MQVNUX1NDSEVNQSwK KyAgICBSRVNZTkNfQ09SUlVQVF9TQ0hFTUEsIFRSQU5TRkVSX0xBU1RfU0NIRU1BLAogfTsKIHVz ZSBwYnNfY29uZmlnOjpDYWNoZWRVc2VySW5mbzsKIHVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjpX b3JrZXJUYXNrOwpAQCAtODcsNiArODcsNyBAQCBpbXBsIFRyeUZyb208JlN5bmNKb2JDb25maWc+ IGZvciBQdWxsUGFyYW1ldGVycyB7CiAgICAgICAgICAgICBzeW5jX2pvYi5ncm91cF9maWx0ZXIu Y2xvbmUoKSwKICAgICAgICAgICAgIHN5bmNfam9iLmxpbWl0LmNsb25lKCksCiAgICAgICAgICAg ICBzeW5jX2pvYi50cmFuc2Zlcl9sYXN0LAorICAgICAgICAgICAgc3luY19qb2IucmVzeW5jX2Nv cnJ1cHQsCiAgICAgICAgICkKICAgICB9CiB9CkBAIC0xMzIsNiArMTMzLDEwIEBAIGltcGwgVHJ5 RnJvbTwmU3luY0pvYkNvbmZpZz4gZm9yIFB1bGxQYXJhbWV0ZXJzIHsKICAgICAgICAgICAgICAg ICBzY2hlbWE6IFRSQU5TRkVSX0xBU1RfU0NIRU1BLAogICAgICAgICAgICAgICAgIG9wdGlvbmFs OiB0cnVlLAogICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZXN5bmMtY29ycnVwdCI6IHsK KyAgICAgICAgICAgICAgICBzY2hlbWE6IFJFU1lOQ19DT1JSVVBUX1NDSEVNQSwKKyAgICAgICAg ICAgICAgICBvcHRpb25hbDogdHJ1ZSwKKyAgICAgICAgICAgIH0sCiAgICAgICAgIH0sCiAgICAg fSwKICAgICBhY2Nlc3M6IHsKQEAgLTE1Niw2ICsxNjEsNyBAQCBhc3luYyBmbiBwdWxsKAogICAg IGdyb3VwX2ZpbHRlcjogT3B0aW9uPFZlYzxHcm91cEZpbHRlcj4+LAogICAgIGxpbWl0OiBSYXRl TGltaXRDb25maWcsCiAgICAgdHJhbnNmZXJfbGFzdDogT3B0aW9uPHVzaXplPiwKKyAgICByZXN5 bmNfY29ycnVwdDogT3B0aW9uPGJvb2w+LAogICAgIHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJv bm1lbnQsCiApIC0+IFJlc3VsdDxTdHJpbmcsIEVycm9yPiB7CiAgICAgbGV0IGF1dGhfaWQ6IEF1 dGhpZCA9IHJwY2Vudi5nZXRfYXV0aF9pZCgpLnVud3JhcCgpLnBhcnNlKCk/OwpAQCAtMTkzLDYg KzE5OSw3IEBAIGFzeW5jIGZuIHB1bGwoCiAgICAgICAgIGdyb3VwX2ZpbHRlciwKICAgICAgICAg bGltaXQsCiAgICAgICAgIHRyYW5zZmVyX2xhc3QsCisgICAgICAgIHJlc3luY19jb3JydXB0LAog ICAgICk/OwogCiAgICAgLy8gZml4bWU6IHNldCB0b19zdGRvdXQgdG8gZmFsc2U/CmRpZmYgLS1n aXQgYS9zcmMvc2VydmVyL3B1bGwucnMgYi9zcmMvc2VydmVyL3B1bGwucnMKaW5kZXggMDhiNTU5 NTZjZTUyLi40MGQ4NzJkMjQ4N2MgMTAwNjQ0Ci0tLSBhL3NyYy9zZXJ2ZXIvcHVsbC5ycworKysg Yi9zcmMvc2VydmVyL3B1bGwucnMKQEAgLTEyLDcgKzEyLDggQEAgdXNlIHRyYWNpbmc6OmluZm87 CiAKIHVzZSBwYnNfYXBpX3R5cGVzOjp7CiAgICAgcHJpbnRfc3RvcmVfYW5kX25zLCBBdXRoaWQs IEJhY2t1cERpciwgQmFja3VwR3JvdXAsIEJhY2t1cE5hbWVzcGFjZSwgR3JvdXBGaWx0ZXIsIE9w ZXJhdGlvbiwKLSAgICBSYXRlTGltaXRDb25maWcsIFJlbW90ZSwgTUFYX05BTUVTUEFDRV9ERVBU SCwgUFJJVl9EQVRBU1RPUkVfQVVESVQsIFBSSVZfREFUQVNUT1JFX0JBQ0tVUCwKKyAgICBSYXRl TGltaXRDb25maWcsIFJlbW90ZSwgVmVyaWZ5U3RhdGUsIE1BWF9OQU1FU1BBQ0VfREVQVEgsIFBS SVZfREFUQVNUT1JFX0FVRElULAorICAgIFBSSVZfREFUQVNUT1JFX0JBQ0tVUCwKIH07CiB1c2Ug cGJzX2NsaWVudDo6QmFja3VwUmVwb3NpdG9yeTsKIHVzZSBwYnNfY29uZmlnOjpDYWNoZWRVc2Vy SW5mbzsKQEAgLTU1LDYgKzU2LDggQEAgcHViKGNyYXRlKSBzdHJ1Y3QgUHVsbFBhcmFtZXRlcnMg ewogICAgIGdyb3VwX2ZpbHRlcjogVmVjPEdyb3VwRmlsdGVyPiwKICAgICAvLy8gSG93IG1hbnkg c25hcHNob3RzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZCBhdCBtb3N0ICh0YWtpbmcgdGhlIG5ld2Vz dCBOIHNuYXBzaG90cykKICAgICB0cmFuc2Zlcl9sYXN0OiBPcHRpb248dXNpemU+LAorICAgIC8v LyBXaGV0aGVyIHRvIHJlLXN5bmMgY29ycnVwdGVkIHNuYXBzaG90cworICAgIHJlc3luY19jb3Jy dXB0OiBib29sLAogfQogCiBpbXBsIFB1bGxQYXJhbWV0ZXJzIHsKQEAgLTcyLDEyICs3NSwxNCBA QCBpbXBsIFB1bGxQYXJhbWV0ZXJzIHsKICAgICAgICAgZ3JvdXBfZmlsdGVyOiBPcHRpb248VmVj PEdyb3VwRmlsdGVyPj4sCiAgICAgICAgIGxpbWl0OiBSYXRlTGltaXRDb25maWcsCiAgICAgICAg IHRyYW5zZmVyX2xhc3Q6IE9wdGlvbjx1c2l6ZT4sCisgICAgICAgIHJlc3luY19jb3JydXB0OiBP cHRpb248Ym9vbD4sCiAgICAgKSAtPiBSZXN1bHQ8U2VsZiwgRXJyb3I+IHsKICAgICAgICAgaWYg bGV0IFNvbWUobWF4X2RlcHRoKSA9IG1heF9kZXB0aCB7CiAgICAgICAgICAgICBucy5jaGVja19t YXhfZGVwdGgobWF4X2RlcHRoKT87CiAgICAgICAgICAgICByZW1vdGVfbnMuY2hlY2tfbWF4X2Rl cHRoKG1heF9kZXB0aCk/OwogICAgICAgICB9OwogICAgICAgICBsZXQgcmVtb3ZlX3ZhbmlzaGVk ID0gcmVtb3ZlX3ZhbmlzaGVkLnVud3JhcF9vcihmYWxzZSk7CisgICAgICAgIGxldCByZXN5bmNf Y29ycnVwdCA9IHJlc3luY19jb3JydXB0LnVud3JhcF9vcihmYWxzZSk7CiAKICAgICAgICAgbGV0 IHNvdXJjZTogQXJjPGR5biBTeW5jU291cmNlPiA9IGlmIGxldCBTb21lKHJlbW90ZSkgPSByZW1v dGUgewogICAgICAgICAgICAgbGV0IChyZW1vdGVfY29uZmlnLCBfZGlnZXN0KSA9IHBic19jb25m aWc6OnJlbW90ZTo6Y29uZmlnKCk/OwpAQCAtMTE2LDYgKzEyMSw3IEBAIGltcGwgUHVsbFBhcmFt ZXRlcnMgewogICAgICAgICAgICAgbWF4X2RlcHRoLAogICAgICAgICAgICAgZ3JvdXBfZmlsdGVy LAogICAgICAgICAgICAgdHJhbnNmZXJfbGFzdCwKKyAgICAgICAgICAgIHJlc3luY19jb3JydXB0 LAogICAgICAgICB9KQogICAgIH0KIH0KQEAgLTMyMyw3ICszMjksNyBAQCBhc3luYyBmbiBwdWxs X3NpbmdsZV9hcmNoaXZlPCdhPigKIC8vLwogLy8vIFB1bGxpbmcgYSBzbmFwc2hvdCBjb25zaXN0 cyBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzOgogLy8vIC0gKFJlKWRvd25sb2FkIHRoZSBtYW5pZmVz dAotLy8vIC0tIGlmIGl0IG1hdGNoZXMsIG9ubHkgZG93bmxvYWQgbG9nIGFuZCB0cmVhdCBzbmFw c2hvdCBhcyBhbHJlYWR5IHN5bmNlZAorLy8vIC0tIGlmIGl0IG1hdGNoZXMgYW5kIGlzIG5vdCBj b3JydXB0LCBvbmx5IGRvd25sb2FkIGxvZyBhbmQgdHJlYXQgc25hcHNob3QgYXMgYWxyZWFkeSBz eW5jZWQKIC8vLyAtIEl0ZXJhdGUgb3ZlciByZWZlcmVuY2VkIGZpbGVzCiAvLy8gLS0gaWYgZmls ZSBhbHJlYWR5IGV4aXN0cywgdmVyaWZ5IGNvbnRlbnRzCiAvLy8gLS0gaWYgbm90LCBwdWxsIGl0 IGZyb20gdGhlIHJlbW90ZQpAQCAtMzMyLDYgKzMzOCw3IEBAIGFzeW5jIGZuIHB1bGxfc25hcHNo b3Q8J2E+KAogICAgIHJlYWRlcjogQXJjPGR5biBTeW5jU291cmNlUmVhZGVyICsgJ2E+LAogICAg IHNuYXBzaG90OiAmJ2EgcGJzX2RhdGFzdG9yZTo6QmFja3VwRGlyLAogICAgIGRvd25sb2FkZWRf Y2h1bmtzOiBBcmM8TXV0ZXg8SGFzaFNldDxbdTg7IDMyXT4+PiwKKyAgICBjb3JydXB0OiBib29s LAogKSAtPiBSZXN1bHQ8U3luY1N0YXRzLCBFcnJvcj4gewogICAgIGxldCBtdXQgc3luY19zdGF0 cyA9IFN5bmNTdGF0czo6ZGVmYXVsdCgpOwogICAgIGxldCBtdXQgbWFuaWZlc3RfbmFtZSA9IHNu YXBzaG90LmZ1bGxfcGF0aCgpOwpAQCAtMzUyLDcgKzM1OSw3IEBAIGFzeW5jIGZuIHB1bGxfc25h cHNob3Q8J2E+KAogICAgICAgICByZXR1cm4gT2soc3luY19zdGF0cyk7CiAgICAgfQogCi0gICAg aWYgbWFuaWZlc3RfbmFtZS5leGlzdHMoKSB7CisgICAgaWYgbWFuaWZlc3RfbmFtZS5leGlzdHMo KSAmJiAhY29ycnVwdCB7CiAgICAgICAgIGxldCBtYW5pZmVzdF9ibG9iID0gcHJveG1veF9sYW5n Ojp0cnlfYmxvY2shKHsKICAgICAgICAgICAgIGxldCBtdXQgbWFuaWZlc3RfZmlsZSA9IHN0ZDo6 ZnM6OkZpbGU6Om9wZW4oJm1hbmlmZXN0X25hbWUpLm1hcF9lcnIofGVycnwgewogICAgICAgICAg ICAgICAgIGZvcm1hdF9lcnIhKCJ1bmFibGUgdG8gb3BlbiBsb2NhbCBtYW5pZmVzdCB7bWFuaWZl c3RfbmFtZTo/fSAtIHtlcnJ9IikKQEAgLTM4MSw3ICszODgsNyBAQCBhc3luYyBmbiBwdWxsX3Nu YXBzaG90PCdhPigKICAgICAgICAgbGV0IG11dCBwYXRoID0gc25hcHNob3QuZnVsbF9wYXRoKCk7 CiAgICAgICAgIHBhdGgucHVzaCgmaXRlbS5maWxlbmFtZSk7CiAKLSAgICAgICAgaWYgcGF0aC5l eGlzdHMoKSB7CisgICAgICAgIGlmICFjb3JydXB0ICYmIHBhdGguZXhpc3RzKCkgewogICAgICAg ICAgICAgbWF0Y2ggQXJjaGl2ZVR5cGU6OmZyb21fcGF0aCgmaXRlbS5maWxlbmFtZSk/IHsKICAg ICAgICAgICAgICAgICBBcmNoaXZlVHlwZTo6RHluYW1pY0luZGV4ID0+IHsKICAgICAgICAgICAg ICAgICAgICAgbGV0IGluZGV4ID0gRHluYW1pY0luZGV4UmVhZGVyOjpvcGVuKCZwYXRoKT87CkBA IC00NDMsNiArNDUwLDcgQEAgYXN5bmMgZm4gcHVsbF9zbmFwc2hvdF9mcm9tPCdhPigKICAgICBy ZWFkZXI6IEFyYzxkeW4gU3luY1NvdXJjZVJlYWRlciArICdhPiwKICAgICBzbmFwc2hvdDogJidh IHBic19kYXRhc3RvcmU6OkJhY2t1cERpciwKICAgICBkb3dubG9hZGVkX2NodW5rczogQXJjPE11 dGV4PEhhc2hTZXQ8W3U4OyAzMl0+Pj4sCisgICAgY29ycnVwdDogYm9vbCwKICkgLT4gUmVzdWx0 PFN5bmNTdGF0cywgRXJyb3I+IHsKICAgICBsZXQgKF9wYXRoLCBpc19uZXcsIF9zbmFwX2xvY2sp ID0gc25hcHNob3QKICAgICAgICAgLmRhdGFzdG9yZSgpCkBAIC00NTEsNyArNDU5LDggQEAgYXN5 bmMgZm4gcHVsbF9zbmFwc2hvdF9mcm9tPCdhPigKICAgICBsZXQgc3luY19zdGF0cyA9IGlmIGlz X25ldyB7CiAgICAgICAgIGluZm8hKCJzeW5jIHNuYXBzaG90IHt9Iiwgc25hcHNob3QuZGlyKCkp OwogCi0gICAgICAgIG1hdGNoIHB1bGxfc25hcHNob3QocmVhZGVyLCBzbmFwc2hvdCwgZG93bmxv YWRlZF9jaHVua3MpLmF3YWl0IHsKKyAgICAgICAgLy8gdGhpcyBzbmFwc2hvdCBpcyBuZXcsIHNv IGl0IGNhbiBuZXZlciBiZSBjb3JydXB0CisgICAgICAgIG1hdGNoIHB1bGxfc25hcHNob3QocmVh ZGVyLCBzbmFwc2hvdCwgZG93bmxvYWRlZF9jaHVua3MsIGZhbHNlKS5hd2FpdCB7CiAgICAgICAg ICAgICBFcnIoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgbGV0IEVycihjbGVhbnVwX2Vy cikgPSBzbmFwc2hvdC5kYXRhc3RvcmUoKS5yZW1vdmVfYmFja3VwX2RpcigKICAgICAgICAgICAg ICAgICAgICAgc25hcHNob3QuYmFja3VwX25zKCksCkBAIC00NjgsOCArNDc3LDEyIEBAIGFzeW5j IGZuIHB1bGxfc25hcHNob3RfZnJvbTwnYT4oCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg ICB9IGVsc2UgewotICAgICAgICBpbmZvISgicmUtc3luYyBzbmFwc2hvdCB7fSIsIHNuYXBzaG90 LmRpcigpKTsKLSAgICAgICAgcHVsbF9zbmFwc2hvdChyZWFkZXIsIHNuYXBzaG90LCBkb3dubG9h ZGVkX2NodW5rcykuYXdhaXQ/CisgICAgICAgIGlmIGNvcnJ1cHQgeworICAgICAgICAgICAgaW5m byEoInJlLXN5bmMgc25hcHNob3Qge30gZHVlIHRvIGNvcnJ1cHRpb24iLCBzbmFwc2hvdC5kaXIo KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbmZvISgicmUtc3luYyBzbmFwc2hv dCB7fSIsIHNuYXBzaG90LmRpcigpKTsKKyAgICAgICAgfQorICAgICAgICBwdWxsX3NuYXBzaG90 KHJlYWRlciwgc25hcHNob3QsIGRvd25sb2FkZWRfY2h1bmtzLCBjb3JydXB0KS5hd2FpdD8KICAg ICB9OwogCiAgICAgT2soc3luY19zdGF0cykKQEAgLTUyMywyNiArNTM2LDUyIEBAIGFzeW5jIGZu IHB1bGxfZ3JvdXAoCiAgICAgICAgIC5sYXN0X3N1Y2Nlc3NmdWxfYmFja3VwKCZ0YXJnZXRfbnMs IGdyb3VwKT8KICAgICAgICAgLnVud3JhcF9vcihpNjQ6Ok1JTik7CiAKLSAgICBsZXQgbGlzdDog VmVjPEJhY2t1cERpcj4gPSByYXdfbGlzdAorICAgIC8vIEZpbHRlciByZW1vdGUgQmFja3VwRGly cyB0byBpbmNsdWRlIGluIHB1bGwKKyAgICAvLyBBbHNvIHN0b3JlcyBpZiB0aGUgc25hcHNob3Qg aXMgY29ycnVwdCAodmVyaWZpY2F0aW9uIGpvYiBmYWlsZWQpCisgICAgbGV0IGxpc3Q6IFZlYzwo QmFja3VwRGlyLCBib29sKT4gPSByYXdfbGlzdAogICAgICAgICAuaW50b19pdGVyKCkKICAgICAg ICAgLmVudW1lcmF0ZSgpCi0gICAgICAgIC5maWx0ZXIofCYocG9zLCByZWYgZGlyKXwgeworICAg ICAgICAuZmlsdGVyX21hcCh8KHBvcywgZGlyKXwgewogICAgICAgICAgICAgc291cmNlX3NuYXBz aG90cy5pbnNlcnQoZGlyLnRpbWUpOworICAgICAgICAgICAgLy8gSWYgcmVzeW5jX2NvcnJ1cHQg aXMgc2V0LCBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBsb2NhbCBzbmFwc2hvdCBmYWlsZWQg dG8KKyAgICAgICAgICAgIC8vIHZlcmlmaWNhdGlvbgorICAgICAgICAgICAgaWYgcGFyYW1zLnJl c3luY19jb3JydXB0IHsKKyAgICAgICAgICAgICAgICBsZXQgbG9jYWxfZGlyID0gcGFyYW1zCisg ICAgICAgICAgICAgICAgICAgIC50YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgLnN0b3JlCisg ICAgICAgICAgICAgICAgICAgIC5iYWNrdXBfZGlyKHRhcmdldF9ucy5jbG9uZSgpLCBkaXIuY2xv bmUoKSk7CisgICAgICAgICAgICAgICAgaWYgbGV0IE9rKGxvY2FsX2RpcikgPSBsb2NhbF9kaXIg eworICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb2NhbF9kaXIudmVyaWZ5X3N0YXRlKCkgewor ICAgICAgICAgICAgICAgICAgICAgICAgT2soU29tZShzdGF0ZSkpID0+IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiBzdGF0ZSA9PSBWZXJpZnlTdGF0ZTo6RmFpbGVkIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUoKGRpciwgdHJ1ZSkpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgICAgIE9rKE5vbmUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBUaGUgdmVyaWZ5X3N0YXRlIGl0ZW0gd2FzIG5vdCBmb3VuZCBpbiB0aGUgbWFu aWZlc3QsIHRoaXMgbWVhbnMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc25h cHNob3QgaXMgbmV3LgorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgRXJyKF8pID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVy ZSB3YXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgbWFuaWZlc3QsIHByb2JhYmx5IGJldHRlciBpZiB3 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3luYy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gU29tZSgoZGlyLCB0cnVlKSk7CisgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlOiB0aGUgc25hcHNob3QgcmVwcmVzZW50ZWQg YnkgYGxhc3Rfc3luY190aW1lYCBtaWdodCBiZSBtaXNzaW5nIGl0cyBiYWNrdXAgbG9nCiAgICAg ICAgICAgICAvLyBvciBwb3N0LWJhY2t1cCB2ZXJpZmljYXRpb24gc3RhdGUgaWYgdGhvc2Ugd2Vy ZSBub3QgeWV0IGF2YWlsYWJsZSBkdXJpbmcgdGhlIGxhc3QKICAgICAgICAgICAgIC8vIHN5bmMg cnVuLCBhbHdheXMgcmVzeW5jIGl0CiAgICAgICAgICAgICBpZiBsYXN0X3N5bmNfdGltZSA+IGRp ci50aW1lIHsKICAgICAgICAgICAgICAgICBhbHJlYWR5X3N5bmNlZF9za2lwX2luZm8udXBkYXRl KGRpci50aW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg ICAgcmV0dXJuIE5vbmU7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGlmIHBvcyA8IGN1 dG9mZiAmJiBsYXN0X3N5bmNfdGltZSAhPSBkaXIudGltZSB7CiAgICAgICAgICAgICAgICAgdHJh bnNmZXJfbGFzdF9za2lwX2luZm8udXBkYXRlKGRpci50aW1lKTsKLSAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmU7CiAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICB0cnVlCisgICAgICAgICAgICBTb21lKChkaXIsIGZhbHNlKSkKICAgICAg ICAgfSkKLSAgICAgICAgLm1hcCh8KF8sIGRpcil8IGRpcikKICAgICAgICAgLmNvbGxlY3QoKTsK IAogICAgIGlmIGFscmVhZHlfc3luY2VkX3NraXBfaW5mby5jb3VudCA+IDAgewpAQCAtNTYxLDcg KzYwMCw3IEBAIGFzeW5jIGZuIHB1bGxfZ3JvdXAoCiAKICAgICBsZXQgbXV0IHN5bmNfc3RhdHMg PSBTeW5jU3RhdHM6OmRlZmF1bHQoKTsKIAotICAgIGZvciAocG9zLCBmcm9tX3NuYXBzaG90KSBp biBsaXN0LmludG9faXRlcigpLmVudW1lcmF0ZSgpIHsKKyAgICBmb3IgKHBvcywgKGZyb21fc25h cHNob3QsIGNvcnJ1cHQpKSBpbiBsaXN0LmludG9faXRlcigpLmVudW1lcmF0ZSgpIHsKICAgICAg ICAgbGV0IHRvX3NuYXBzaG90ID0gcGFyYW1zCiAgICAgICAgICAgICAudGFyZ2V0CiAgICAgICAg ICAgICAuc3RvcmUKQEAgLTU3MSw3ICs2MTAsOCBAQCBhc3luYyBmbiBwdWxsX2dyb3VwKAogICAg ICAgICAgICAgLnNvdXJjZQogICAgICAgICAgICAgLnJlYWRlcihzb3VyY2VfbmFtZXNwYWNlLCAm ZnJvbV9zbmFwc2hvdCkKICAgICAgICAgICAgIC5hd2FpdD87Ci0gICAgICAgIGxldCByZXN1bHQg PSBwdWxsX3NuYXBzaG90X2Zyb20ocmVhZGVyLCAmdG9fc25hcHNob3QsIGRvd25sb2FkZWRfY2h1 bmtzLmNsb25lKCkpLmF3YWl0OworICAgICAgICBsZXQgcmVzdWx0ID0KKyAgICAgICAgICAgIHB1 bGxfc25hcHNob3RfZnJvbShyZWFkZXIsICZ0b19zbmFwc2hvdCwgZG93bmxvYWRlZF9jaHVua3Mu Y2xvbmUoKSwgY29ycnVwdCkuYXdhaXQ7CiAKICAgICAgICAgcHJvZ3Jlc3MuZG9uZV9zbmFwc2hv dHMgPSBwb3MgYXMgdTY0ICsgMTsKICAgICAgICAgaW5mbyEoInBlcmNlbnRhZ2UgZG9uZToge3By b2dyZXNzfSIpOwotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnBy b3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3Rp bmZvL3Bicy1kZXZlbAo=