From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 02C551FF173 for ; Mon, 11 Nov 2024 16:44:21 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 66463FE40; Mon, 11 Nov 2024 16:44:16 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Mon, 11 Nov 2024 16:43:25 +0100 Message-Id: <20241111154353.482734-4-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241111154353.482734-1-c.ebner@proxmox.com> References: <20241111154353.482734-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.032 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 v7 proxmox-backup 03/31] client: backup writer: refactor backup and upload stats counters 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" SW4gcHJlcGFyYXRpb24gZm9yIHB1c2ggc3VwcG9ydCBpbiBzeW5jIGpvYnMuCgpFeHRlbmQgYW5k IG1vdmUgYEJhY2t1cFN0YXRzYCBpbnRvIGBiYWNrdXBfc3RhdHNgIHN1Ym1vZHVsZSBhbmQgYWRk Cm1ldGhvZCB0byBjcmVhdGUgdGhlbSBmcm9tIGBVcGxvYWRTdGF0c2AuCgpGdXJ0aGVyLCBpbnRy b2R1Y2UgYFVwbG9hZENvdW50ZXJzYCBzdHJ1Y3QgdG8gaG9sZCB0aGUgQXJjIGNsb25lcyBvZgp0 aGUgY2h1bmsgdXBsb2FkIHN0YXRpc3RpY3MgY291bnRlcnMsIHNpbXBsaWZ5aW5nIHRoZSBob3Vz ZSBrZWVwaW5nLgoKQnkgYnVuZGxpbmcgdGhlIGNvdW50ZXJzIGludG8gdGhlIHN0cnVjdCwgdGhl eSBjYW4gYmUgcGFzc2VkIGFzCnNpbmdsZSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2hlbiBmYWN0b3Jp bmcgb3V0IHRoZSBjb21tb24gc3RyZWFtIGZ1dHVyZQppbiB0aGUgc3Vic2VxdWVudCBpbXBsZW1l bnRhdGlvbiBvZiB0aGUgY2h1bmsgdXBsb2FkIGZvciBzeW5jIGpvYnMKaW4gcHVzaCBkaXJlY3Rp b24uCgpDby1kZXZlbG9wZWQtYnk6IEZhYmlhbiBHcsO8bmJpY2hsZXIgPGYuZ3J1ZW5iaWNobGVy QHByb3htb3guY29tPgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWJuZXIgPGMuZWJuZXJAcHJv eG1veC5jb20+Ci0tLQpjaGFuZ2VzIHNpbmNlIHZlcnNpb24gNjoKLSBubyBjaGFuZ2VzCgogcGJz LWNsaWVudC9zcmMvYmFja3VwX3N0YXRzLnJzICAgICAgICAgfCAxMTkgKysrKysrKysrKysrKysr KysrKysKIHBicy1jbGllbnQvc3JjL2JhY2t1cF93cml0ZXIucnMgICAgICAgIHwgMTQ1ICsrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0KIHBicy1jbGllbnQvc3JjL2luamVjdF9yZXVzZWRfY2h1bmtz LnJzIHwgIDE0ICstLQogcGJzLWNsaWVudC9zcmMvbGliLnJzICAgICAgICAgICAgICAgICAgfCAg IDMgKwogNCBmaWxlcyBjaGFuZ2VkLCAxODAgaW5zZXJ0aW9ucygrKSwgMTAxIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBicy1jbGllbnQvc3JjL2JhY2t1cF9zdGF0cy5ycwoKZGlm ZiAtLWdpdCBhL3Bicy1jbGllbnQvc3JjL2JhY2t1cF9zdGF0cy5ycyBiL3Bicy1jbGllbnQvc3Jj L2JhY2t1cF9zdGF0cy5ycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmYw NTYzYTAwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bicy1jbGllbnQvc3JjL2JhY2t1cF9zdGF0cy5y cwpAQCAtMCwwICsxLDExOSBAQAorLy8hIEltcGxlbWVudHMgY291bnRlcnMgdG8gZ2VuZXJhdGUg c3RhdGlzdGljcyBmb3IgbG9nIG91dHB1dHMgZHVyaW5nIHVwbG9hZHMgd2l0aCBiYWNrdXAgd3Jp dGVyCisKK3VzZSBzdGQ6OnN5bmM6OmF0b21pYzo6e0F0b21pY1U2NCwgQXRvbWljVXNpemUsIE9y ZGVyaW5nfTsKK3VzZSBzdGQ6OnN5bmM6OkFyYzsKK3VzZSBzdGQ6OnRpbWU6OkR1cmF0aW9uOwor Cit1c2UgY3JhdGU6OnB4YXI6OmNyZWF0ZTo6UmV1c2FibGVEeW5hbWljRW50cnk7CisKKy8vLyBC YXNpYyBiYWNrdXAgcnVuIHN0YXRpc3RpY3MgYW5kIGFyY2hpdmUgY2hlY2tzdW0KK3B1YiBzdHJ1 Y3QgQmFja3VwU3RhdHMgeworICAgIHB1YiBzaXplOiB1NjQsCisgICAgcHViIGNzdW06IFt1ODsg MzJdLAorICAgIHB1YiBkdXJhdGlvbjogRHVyYXRpb24sCisgICAgcHViIGNodW5rX2NvdW50OiB1 NjQsCit9CisKKy8vLyBFeHRlbmRlZCBiYWNrdXAgcnVuIHN0YXRpc3RpY3MgYW5kIGFyY2hpdmUg Y2hlY2tzdW0KK3B1YihjcmF0ZSkgc3RydWN0IFVwbG9hZFN0YXRzIHsKKyAgICBwdWIoY3JhdGUp IGNodW5rX2NvdW50OiB1c2l6ZSwKKyAgICBwdWIoY3JhdGUpIGNodW5rX3JldXNlZDogdXNpemUs CisgICAgcHViKGNyYXRlKSBjaHVua19pbmplY3RlZDogdXNpemUsCisgICAgcHViKGNyYXRlKSBz aXplOiB1c2l6ZSwKKyAgICBwdWIoY3JhdGUpIHNpemVfcmV1c2VkOiB1c2l6ZSwKKyAgICBwdWIo Y3JhdGUpIHNpemVfaW5qZWN0ZWQ6IHVzaXplLAorICAgIHB1YihjcmF0ZSkgc2l6ZV9jb21wcmVz c2VkOiB1c2l6ZSwKKyAgICBwdWIoY3JhdGUpIGR1cmF0aW9uOiBEdXJhdGlvbiwKKyAgICBwdWIo Y3JhdGUpIGNzdW06IFt1ODsgMzJdLAorfQorCitpbXBsIFVwbG9hZFN0YXRzIHsKKyAgICAvLy8g Q29udmVydCB0aGUgdXBsb2FkIHN0YXRzIHRvIHRoZSBtb3JlIGNvbmNpc2UgW2BCYWNrdXBTdGF0 c2BdCisgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICBwdWIoY3JhdGUpIGZuIHRvX2JhY2t1cF9z dGF0cygmc2VsZikgLT4gQmFja3VwU3RhdHMgeworICAgICAgICBCYWNrdXBTdGF0cyB7CisgICAg ICAgICAgICBjaHVua19jb3VudDogc2VsZi5jaHVua19jb3VudCBhcyB1NjQsCisgICAgICAgICAg ICBzaXplOiBzZWxmLnNpemUgYXMgdTY0LAorICAgICAgICAgICAgZHVyYXRpb246IHNlbGYuZHVy YXRpb24sCisgICAgICAgICAgICBjc3VtOiBzZWxmLmNzdW0sCisgICAgICAgIH0KKyAgICB9Cit9 CisKKy8vLyBBdG9taWMgY291bnRlcnMgZm9yIGFjY291bnRpbmcgdXBsb2FkIHN0cmVhbSBwcm9n cmVzcyBpbmZvcm1hdGlvbgorI1tkZXJpdmUoQ2xvbmUpXQorcHViKGNyYXRlKSBzdHJ1Y3QgVXBs b2FkQ291bnRlcnMgeworICAgIGluamVjdGVkX2NodW5rX2NvdW50OiBBcmM8QXRvbWljVXNpemU+ LAorICAgIGtub3duX2NodW5rX2NvdW50OiBBcmM8QXRvbWljVXNpemU+LAorICAgIHRvdGFsX2No dW5rX2NvdW50OiBBcmM8QXRvbWljVXNpemU+LAorICAgIGNvbXByZXNzZWRfc3RyZWFtX2xlbjog QXJjPEF0b21pY1U2ND4sCisgICAgaW5qZWN0ZWRfc3RyZWFtX2xlbjogQXJjPEF0b21pY1VzaXpl PiwKKyAgICByZXVzZWRfc3RyZWFtX2xlbjogQXJjPEF0b21pY1VzaXplPiwKKyAgICB0b3RhbF9z dHJlYW1fbGVuOiBBcmM8QXRvbWljVXNpemU+LAorfQorCitpbXBsIFVwbG9hZENvdW50ZXJzIHsK KyAgICAvLy8gQ3JlYXRlIGFuZCB6ZXJvIGluaXQgbmV3IHVwbG9hZCBjb3VudGVycworICAgIHB1 YihjcmF0ZSkgZm4gbmV3KCkgLT4gU2VsZiB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAg dG90YWxfY2h1bmtfY291bnQ6IEFyYzo6bmV3KEF0b21pY1VzaXplOjpuZXcoMCkpLAorICAgICAg ICAgICAgaW5qZWN0ZWRfY2h1bmtfY291bnQ6IEFyYzo6bmV3KEF0b21pY1VzaXplOjpuZXcoMCkp LAorICAgICAgICAgICAga25vd25fY2h1bmtfY291bnQ6IEFyYzo6bmV3KEF0b21pY1VzaXplOjpu ZXcoMCkpLAorICAgICAgICAgICAgY29tcHJlc3NlZF9zdHJlYW1fbGVuOiBBcmM6Om5ldyhBdG9t aWNVNjQ6Om5ldygwKSksCisgICAgICAgICAgICBpbmplY3RlZF9zdHJlYW1fbGVuOiBBcmM6Om5l dyhBdG9taWNVc2l6ZTo6bmV3KDApKSwKKyAgICAgICAgICAgIHJldXNlZF9zdHJlYW1fbGVuOiBB cmM6Om5ldyhBdG9taWNVc2l6ZTo6bmV3KDApKSwKKyAgICAgICAgICAgIHRvdGFsX3N0cmVhbV9s ZW46IEFyYzo6bmV3KEF0b21pY1VzaXplOjpuZXcoMCkpLAorICAgICAgICB9CisgICAgfQorCisg ICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICBwdWIoY3JhdGUpIGZuIGFkZF9rbm93bl9jaHVuaygm bXV0IHNlbGYsIGNodW5rX2xlbjogdXNpemUpIC0+IHVzaXplIHsKKyAgICAgICAgc2VsZi5rbm93 bl9jaHVua19jb3VudC5mZXRjaF9hZGQoMSwgT3JkZXJpbmc6OlNlcUNzdCk7CisgICAgICAgIHNl bGYudG90YWxfY2h1bmtfY291bnQuZmV0Y2hfYWRkKDEsIE9yZGVyaW5nOjpTZXFDc3QpOworICAg ICAgICBzZWxmLnJldXNlZF9zdHJlYW1fbGVuCisgICAgICAgICAgICAuZmV0Y2hfYWRkKGNodW5r X2xlbiwgT3JkZXJpbmc6OlNlcUNzdCk7CisgICAgICAgIHNlbGYudG90YWxfc3RyZWFtX2xlbi5m ZXRjaF9hZGQoY2h1bmtfbGVuLCBPcmRlcmluZzo6U2VxQ3N0KQorICAgIH0KKworICAgICNbaW5s aW5lKGFsd2F5cyldCisgICAgcHViKGNyYXRlKSBmbiBhZGRfbmV3X2NodW5rKCZtdXQgc2VsZiwg Y2h1bmtfbGVuOiB1c2l6ZSwgY2h1bmtfcmF3X3NpemU6IHU2NCkgLT4gdXNpemUgeworICAgICAg ICBzZWxmLnRvdGFsX2NodW5rX2NvdW50LmZldGNoX2FkZCgxLCBPcmRlcmluZzo6U2VxQ3N0KTsK KyAgICAgICAgc2VsZi5jb21wcmVzc2VkX3N0cmVhbV9sZW4KKyAgICAgICAgICAgIC5mZXRjaF9h ZGQoY2h1bmtfcmF3X3NpemUsIE9yZGVyaW5nOjpTZXFDc3QpOworICAgICAgICBzZWxmLnRvdGFs X3N0cmVhbV9sZW4uZmV0Y2hfYWRkKGNodW5rX2xlbiwgT3JkZXJpbmc6OlNlcUNzdCkKKyAgICB9 CisKKyAgICAjW2lubGluZShhbHdheXMpXQorICAgIHB1YihjcmF0ZSkgZm4gYWRkX2luamVjdGVk X2NodW5rKCZtdXQgc2VsZiwgY2h1bms6ICZSZXVzYWJsZUR5bmFtaWNFbnRyeSkgLT4gdXNpemUg eworICAgICAgICBzZWxmLnRvdGFsX2NodW5rX2NvdW50LmZldGNoX2FkZCgxLCBPcmRlcmluZzo6 U2VxQ3N0KTsKKyAgICAgICAgc2VsZi5pbmplY3RlZF9jaHVua19jb3VudC5mZXRjaF9hZGQoMSwg T3JkZXJpbmc6OlNlcUNzdCk7CisKKyAgICAgICAgc2VsZi5yZXVzZWRfc3RyZWFtX2xlbgorICAg ICAgICAgICAgLmZldGNoX2FkZChjaHVuay5zaXplKCkgYXMgdXNpemUsIE9yZGVyaW5nOjpTZXFD c3QpOworICAgICAgICBzZWxmLmluamVjdGVkX3N0cmVhbV9sZW4KKyAgICAgICAgICAgIC5mZXRj aF9hZGQoY2h1bmsuc2l6ZSgpIGFzIHVzaXplLCBPcmRlcmluZzo6U2VxQ3N0KTsKKyAgICAgICAg c2VsZi50b3RhbF9zdHJlYW1fbGVuCisgICAgICAgICAgICAuZmV0Y2hfYWRkKGNodW5rLnNpemUo KSBhcyB1c2l6ZSwgT3JkZXJpbmc6OlNlcUNzdCkKKyAgICB9CisKKyAgICAjW2lubGluZShhbHdh eXMpXQorICAgIHB1YihjcmF0ZSkgZm4gdG90YWxfc3RyZWFtX2xlbigmc2VsZikgLT4gdXNpemUg eworICAgICAgICBzZWxmLnRvdGFsX3N0cmVhbV9sZW4ubG9hZChPcmRlcmluZzo6U2VxQ3N0KQor ICAgIH0KKworICAgIC8vLyBDb252ZXJ0IHRoZSBjb3VudGVycyB0byBbYFVwbG9hZFN0YXRzYF0s IGluY2x1ZGluZyBnaXZlbiBhcmNoaXZlIGNoZWNrc3VtIGFuZCBydW50aW1lLgorICAgICNbaW5s aW5lKGFsd2F5cyldCisgICAgcHViKGNyYXRlKSBmbiB0b191cGxvYWRfc3RhdHMoJnNlbGYsIGNz dW06IFt1ODsgMzJdLCBkdXJhdGlvbjogRHVyYXRpb24pIC0+IFVwbG9hZFN0YXRzIHsKKyAgICAg ICAgVXBsb2FkU3RhdHMgeworICAgICAgICAgICAgY2h1bmtfY291bnQ6IHNlbGYudG90YWxfY2h1 bmtfY291bnQubG9hZChPcmRlcmluZzo6U2VxQ3N0KSwKKyAgICAgICAgICAgIGNodW5rX3JldXNl ZDogc2VsZi5rbm93bl9jaHVua19jb3VudC5sb2FkKE9yZGVyaW5nOjpTZXFDc3QpLAorICAgICAg ICAgICAgY2h1bmtfaW5qZWN0ZWQ6IHNlbGYuaW5qZWN0ZWRfY2h1bmtfY291bnQubG9hZChPcmRl cmluZzo6U2VxQ3N0KSwKKyAgICAgICAgICAgIHNpemU6IHNlbGYudG90YWxfc3RyZWFtX2xlbi5s b2FkKE9yZGVyaW5nOjpTZXFDc3QpLAorICAgICAgICAgICAgc2l6ZV9yZXVzZWQ6IHNlbGYucmV1 c2VkX3N0cmVhbV9sZW4ubG9hZChPcmRlcmluZzo6U2VxQ3N0KSwKKyAgICAgICAgICAgIHNpemVf aW5qZWN0ZWQ6IHNlbGYuaW5qZWN0ZWRfc3RyZWFtX2xlbi5sb2FkKE9yZGVyaW5nOjpTZXFDc3Qp LAorICAgICAgICAgICAgc2l6ZV9jb21wcmVzc2VkOiBzZWxmLmNvbXByZXNzZWRfc3RyZWFtX2xl bi5sb2FkKE9yZGVyaW5nOjpTZXFDc3QpIGFzIHVzaXplLAorICAgICAgICAgICAgZHVyYXRpb24s CisgICAgICAgICAgICBjc3VtLAorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGJz LWNsaWVudC9zcmMvYmFja3VwX3dyaXRlci5ycyBiL3Bicy1jbGllbnQvc3JjL2JhY2t1cF93cml0 ZXIucnMKaW5kZXggNGQyZThhODAxLi44YjlhZmRiOTUgMTAwNjQ0Ci0tLSBhL3Bicy1jbGllbnQv c3JjL2JhY2t1cF93cml0ZXIucnMKKysrIGIvcGJzLWNsaWVudC9zcmMvYmFja3VwX3dyaXRlci5y cwpAQCAtMSw3ICsxLDggQEAKIHVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoU2V0OwogdXNlIHN0 ZDo6ZnV0dXJlOjpGdXR1cmU7Ci11c2Ugc3RkOjpzeW5jOjphdG9taWM6OntBdG9taWNVNjQsIEF0 b21pY1VzaXplLCBPcmRlcmluZ307Cit1c2Ugc3RkOjpzeW5jOjphdG9taWM6OntBdG9taWNVc2l6 ZSwgT3JkZXJpbmd9OwogdXNlIHN0ZDo6c3luYzo6e0FyYywgTXV0ZXh9OwordXNlIHN0ZDo6dGlt ZTo6SW5zdGFudDsKIAogdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVycm9yfTsKIHVz ZSBmdXR1cmVzOjpmdXR1cmU6OntzZWxmLCBBYm9ydEhhbmRsZSwgRWl0aGVyLCBGdXR1cmVFeHQs IFRyeUZ1dHVyZUV4dH07CkBAIC0yMyw2ICsyNCw3IEBAIHVzZSBwYnNfdG9vbHM6OmNyeXB0X2Nv bmZpZzo6Q3J5cHRDb25maWc7CiB1c2UgcHJveG1veF9odW1hbl9ieXRlOjpIdW1hbkJ5dGU7CiB1 c2UgcHJveG1veF90aW1lOjpUaW1lU3BhbjsKIAordXNlIHN1cGVyOjpiYWNrdXBfc3RhdHM6OntC YWNrdXBTdGF0cywgVXBsb2FkQ291bnRlcnMsIFVwbG9hZFN0YXRzfTsKIHVzZSBzdXBlcjo6aW5q ZWN0X3JldXNlZF9jaHVua3M6OntJbmplY3RDaHVua3MsIEluamVjdFJldXNlZENodW5rcywgSW5q ZWN0ZWRDaHVua3NJbmZvfTsKIHVzZSBzdXBlcjo6bWVyZ2Vfa25vd25fY2h1bmtzOjp7TWVyZ2VL bm93bkNodW5rcywgTWVyZ2VkQ2h1bmtJbmZvfTsKIApAQCAtNDAsMTEgKzQyLDYgQEAgaW1wbCBE cm9wIGZvciBCYWNrdXBXcml0ZXIgewogICAgIH0KIH0KIAotcHViIHN0cnVjdCBCYWNrdXBTdGF0 cyB7Ci0gICAgcHViIHNpemU6IHU2NCwKLSAgICBwdWIgY3N1bTogW3U4OyAzMl0sCi19Ci0KIC8v LyBPcHRpb25zIGZvciB1cGxvYWRpbmcgYmxvYnMvc3RyZWFtcyB0byB0aGUgc2VydmVyCiAjW2Rl cml2ZShEZWZhdWx0LCBDbG9uZSldCiBwdWIgc3RydWN0IFVwbG9hZE9wdGlvbnMgewpAQCAtNTQs MTggKzUxLDYgQEAgcHViIHN0cnVjdCBVcGxvYWRPcHRpb25zIHsKICAgICBwdWIgZml4ZWRfc2l6 ZTogT3B0aW9uPHU2ND4sCiB9CiAKLXN0cnVjdCBVcGxvYWRTdGF0cyB7Ci0gICAgY2h1bmtfY291 bnQ6IHVzaXplLAotICAgIGNodW5rX3JldXNlZDogdXNpemUsCi0gICAgY2h1bmtfaW5qZWN0ZWQ6 IHVzaXplLAotICAgIHNpemU6IHVzaXplLAotICAgIHNpemVfcmV1c2VkOiB1c2l6ZSwKLSAgICBz aXplX2luamVjdGVkOiB1c2l6ZSwKLSAgICBzaXplX2NvbXByZXNzZWQ6IHVzaXplLAotICAgIGR1 cmF0aW9uOiBzdGQ6OnRpbWU6OkR1cmF0aW9uLAotICAgIGNzdW06IFt1ODsgMzJdLAotfQotCiBz dHJ1Y3QgQ2h1bmtVcGxvYWRSZXNwb25zZSB7CiAgICAgZnV0dXJlOiBoMjo6Y2xpZW50OjpSZXNw b25zZUZ1dHVyZSwKICAgICBzaXplOiB1c2l6ZSwKQEAgLTE5NCw2ICsxNzksNyBAQCBpbXBsIEJh Y2t1cFdyaXRlciB7CiAgICAgICAgIG11dCByZWFkZXI6IFIsCiAgICAgICAgIGZpbGVfbmFtZTog JnN0ciwKICAgICApIC0+IFJlc3VsdDxCYWNrdXBTdGF0cywgRXJyb3I+IHsKKyAgICAgICAgbGV0 IHN0YXJ0X3RpbWUgPSBJbnN0YW50Ojpub3coKTsKICAgICAgICAgbGV0IG11dCByYXdfZGF0YSA9 IFZlYzo6bmV3KCk7CiAgICAgICAgIC8vIGZpeG1lOiBhdm9pZCBsb2FkaW5nIGludG8gbWVtb3J5 CiAgICAgICAgIHJlYWRlci5yZWFkX3RvX2VuZCgmbXV0IHJhd19kYXRhKT87CkBAIC0yMTEsNyAr MTk3LDEyIEBAIGltcGwgQmFja3VwV3JpdGVyIHsKICAgICAgICAgICAgICAgICByYXdfZGF0YSwK ICAgICAgICAgICAgICkKICAgICAgICAgICAgIC5hd2FpdD87Ci0gICAgICAgIE9rKEJhY2t1cFN0 YXRzIHsgc2l6ZSwgY3N1bSB9KQorICAgICAgICBPayhCYWNrdXBTdGF0cyB7CisgICAgICAgICAg ICBzaXplLAorICAgICAgICAgICAgY3N1bSwKKyAgICAgICAgICAgIGR1cmF0aW9uOiBzdGFydF90 aW1lLmVsYXBzZWQoKSwKKyAgICAgICAgICAgIGNodW5rX2NvdW50OiAwLAorICAgICAgICB9KQog ICAgIH0KIAogICAgIHB1YiBhc3luYyBmbiB1cGxvYWRfYmxvYl9mcm9tX2RhdGEoCkBAIC0yMjAs NiArMjExLDcgQEAgaW1wbCBCYWNrdXBXcml0ZXIgewogICAgICAgICBmaWxlX25hbWU6ICZzdHIs CiAgICAgICAgIG9wdGlvbnM6IFVwbG9hZE9wdGlvbnMsCiAgICAgKSAtPiBSZXN1bHQ8QmFja3Vw U3RhdHMsIEVycm9yPiB7CisgICAgICAgIGxldCBzdGFydF90aW1lID0gSW5zdGFudDo6bm93KCk7 CiAgICAgICAgIGxldCBibG9iID0gbWF0Y2ggKG9wdGlvbnMuZW5jcnlwdCwgJnNlbGYuY3J5cHRf Y29uZmlnKSB7CiAgICAgICAgICAgICAoZmFsc2UsIF8pID0+IERhdGFCbG9iOjplbmNvZGUoJmRh dGEsIE5vbmUsIG9wdGlvbnMuY29tcHJlc3MpPywKICAgICAgICAgICAgICh0cnVlLCBOb25lKSA9 PiBiYWlsISgicmVxdWVzdGVkIGVuY3J5cHRpb24gd2l0aG91dCBhIGNyeXB0IGNvbmZpZyIpLApA QCAtMjQzLDcgKzIzNSwxMiBAQCBpbXBsIEJhY2t1cFdyaXRlciB7CiAgICAgICAgICAgICAgICAg cmF3X2RhdGEsCiAgICAgICAgICAgICApCiAgICAgICAgICAgICAuYXdhaXQ/OwotICAgICAgICBP ayhCYWNrdXBTdGF0cyB7IHNpemUsIGNzdW0gfSkKKyAgICAgICAgT2soQmFja3VwU3RhdHMgewor ICAgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgIGNzdW0sCisgICAgICAgICAgICBkdXJhdGlv bjogc3RhcnRfdGltZS5lbGFwc2VkKCksCisgICAgICAgICAgICBjaHVua19jb3VudDogMCwKKyAg ICAgICAgfSkKICAgICB9CiAKICAgICBwdWIgYXN5bmMgZm4gdXBsb2FkX2Jsb2JfZnJvbV9maWxl PFA6IEFzUmVmPHN0ZDo6cGF0aDo6UGF0aD4+KApAQCAtNDIxLDEwICs0MTgsNyBAQCBpbXBsIEJh Y2t1cFdyaXRlciB7CiAgICAgICAgICAgICAiY3N1bSI6IGhleDo6ZW5jb2RlKHVwbG9hZF9zdGF0 cy5jc3VtKSwKICAgICAgICAgfSk7CiAgICAgICAgIGxldCBfdmFsdWUgPSBzZWxmLmgyLnBvc3Qo JmNsb3NlX3BhdGgsIFNvbWUocGFyYW0pKS5hd2FpdD87Ci0gICAgICAgIE9rKEJhY2t1cFN0YXRz IHsKLSAgICAgICAgICAgIHNpemU6IHVwbG9hZF9zdGF0cy5zaXplIGFzIHU2NCwKLSAgICAgICAg ICAgIGNzdW06IHVwbG9hZF9zdGF0cy5jc3VtLAotICAgICAgICB9KQorICAgICAgICBPayh1cGxv YWRfc3RhdHMudG9fYmFja3VwX3N0YXRzKCkpCiAgICAgfQogCiAgICAgZm4gcmVzcG9uc2VfcXVl dWUoKSAtPiAoCkBAIC02NTMsMjMgKzY0Nyw5IEBAIGltcGwgQmFja3VwV3JpdGVyIHsKICAgICAg ICAgaW5qZWN0aW9uczogT3B0aW9uPHN0ZDo6c3luYzo6bXBzYzo6UmVjZWl2ZXI8SW5qZWN0Q2h1 bmtzPj4sCiAgICAgICAgIGFyY2hpdmU6ICZzdHIsCiAgICAgKSAtPiBpbXBsIEZ1dHVyZTxPdXRw dXQgPSBSZXN1bHQ8VXBsb2FkU3RhdHMsIEVycm9yPj4gewotICAgICAgICBsZXQgdG90YWxfY2h1 bmtzID0gQXJjOjpuZXcoQXRvbWljVXNpemU6Om5ldygwKSk7Ci0gICAgICAgIGxldCB0b3RhbF9j aHVua3MyID0gdG90YWxfY2h1bmtzLmNsb25lKCk7Ci0gICAgICAgIGxldCBrbm93bl9jaHVua19j b3VudCA9IEFyYzo6bmV3KEF0b21pY1VzaXplOjpuZXcoMCkpOwotICAgICAgICBsZXQga25vd25f Y2h1bmtfY291bnQyID0ga25vd25fY2h1bmtfY291bnQuY2xvbmUoKTsKLSAgICAgICAgbGV0IGlu amVjdGVkX2NodW5rX2NvdW50ID0gQXJjOjpuZXcoQXRvbWljVXNpemU6Om5ldygwKSk7Ci0gICAg ICAgIGxldCBpbmplY3RlZF9jaHVua19jb3VudDIgPSBpbmplY3RlZF9jaHVua19jb3VudC5jbG9u ZSgpOwotCi0gICAgICAgIGxldCBzdHJlYW1fbGVuID0gQXJjOjpuZXcoQXRvbWljVXNpemU6Om5l dygwKSk7Ci0gICAgICAgIGxldCBzdHJlYW1fbGVuMiA9IHN0cmVhbV9sZW4uY2xvbmUoKTsKLSAg ICAgICAgbGV0IHN0cmVhbV9sZW4zID0gc3RyZWFtX2xlbi5jbG9uZSgpOwotICAgICAgICBsZXQg Y29tcHJlc3NlZF9zdHJlYW1fbGVuID0gQXJjOjpuZXcoQXRvbWljVTY0OjpuZXcoMCkpOwotICAg ICAgICBsZXQgY29tcHJlc3NlZF9zdHJlYW1fbGVuMiA9IGNvbXByZXNzZWRfc3RyZWFtX2xlbi5j bG9uZSgpOwotICAgICAgICBsZXQgcmV1c2VkX2xlbiA9IEFyYzo6bmV3KEF0b21pY1VzaXplOjpu ZXcoMCkpOwotICAgICAgICBsZXQgcmV1c2VkX2xlbjIgPSByZXVzZWRfbGVuLmNsb25lKCk7Ci0g ICAgICAgIGxldCBpbmplY3RlZF9sZW4gPSBBcmM6Om5ldyhBdG9taWNVc2l6ZTo6bmV3KDApKTsK LSAgICAgICAgbGV0IGluamVjdGVkX2xlbjIgPSBpbmplY3RlZF9sZW4uY2xvbmUoKTsKLSAgICAg ICAgbGV0IHVwbG9hZGVkX2xlbiA9IEFyYzo6bmV3KEF0b21pY1VzaXplOjpuZXcoMCkpOworICAg ICAgICBsZXQgbXV0IGNvdW50ZXJzID0gVXBsb2FkQ291bnRlcnM6Om5ldygpOworICAgICAgICBs ZXQgdXBsb2FkZWRfbGVuID0gQXJjOjpuZXcoc3RkOjpzeW5jOjphdG9taWM6OkF0b21pY1VzaXpl OjpuZXcoMCkpOworICAgICAgICBsZXQgY291bnRlcnNfcmVhZG9ubHkgPSBjb3VudGVycy5jbG9u ZSgpOwogCiAgICAgICAgIGxldCBhcHBlbmRfY2h1bmtfcGF0aCA9IGZvcm1hdCEoInt9X2luZGV4 IiwgcHJlZml4KTsKICAgICAgICAgbGV0IHVwbG9hZF9jaHVua19wYXRoID0gZm9ybWF0ISgie31f Y2h1bmsiLCBwcmVmaXgpOwpAQCAtNjg3LDExICs2NjcsMTIgQEAgaW1wbCBCYWNrdXBXcml0ZXIg ewogICAgICAgICAgICAgfHwgYXJjaGl2ZS5lbmRzX3dpdGgoIi5weGFyIikKICAgICAgICAgICAg IHx8IGFyY2hpdmUuZW5kc193aXRoKCIucHB4YXIiKQogICAgICAgICB7CisgICAgICAgICAgICBs ZXQgY291bnRlcnMgPSBjb3VudGVycy5jbG9uZSgpOwogICAgICAgICAgICAgU29tZSh0b2tpbzo6 c3Bhd24oYXN5bmMgbW92ZSB7CiAgICAgICAgICAgICAgICAgbG9vcCB7CiAgICAgICAgICAgICAg ICAgICAgIHRva2lvOjp0aW1lOjpzbGVlcCh0b2tpbzo6dGltZTo6RHVyYXRpb246OmZyb21fc2Vj cyg2MCkpLmF3YWl0OwogCi0gICAgICAgICAgICAgICAgICAgIGxldCBzaXplID0gSHVtYW5CeXRl Ojpmcm9tKHN0cmVhbV9sZW4zLmxvYWQoT3JkZXJpbmc6OlNlcUNzdCkpOworICAgICAgICAgICAg ICAgICAgICBsZXQgc2l6ZSA9IEh1bWFuQnl0ZTo6ZnJvbShjb3VudGVycy50b3RhbF9zdHJlYW1f bGVuKCkpOwogICAgICAgICAgICAgICAgICAgICBsZXQgc2l6ZV91cGxvYWRlZCA9IEh1bWFuQnl0 ZTo6ZnJvbSh1cGxvYWRlZF9sZW4ubG9hZChPcmRlcmluZzo6U2VxQ3N0KSk7CiAgICAgICAgICAg ICAgICAgICAgIGxldCBlbGFwc2VkID0gVGltZVNwYW46OmZyb20oc3RhcnRfdGltZS5lbGFwc2Vk KCkpOwogCkBAIC03MDMsMjIgKzY4NCwxNSBAQCBpbXBsIEJhY2t1cFdyaXRlciB7CiAgICAgICAg IH07CiAKICAgICAgICAgc3RyZWFtCi0gICAgICAgICAgICAuaW5qZWN0X3JldXNlZF9jaHVua3Mo aW5qZWN0aW9ucywgc3RyZWFtX2xlbi5jbG9uZSgpKQorICAgICAgICAgICAgLmluamVjdF9yZXVz ZWRfY2h1bmtzKGluamVjdGlvbnMsIGNvdW50ZXJzLmNsb25lKCkpCiAgICAgICAgICAgICAuYW5k X3RoZW4obW92ZSB8Y2h1bmtfaW5mb3wgbWF0Y2ggY2h1bmtfaW5mbyB7CiAgICAgICAgICAgICAg ICAgSW5qZWN0ZWRDaHVua3NJbmZvOjpLbm93bihjaHVua3MpID0+IHsKICAgICAgICAgICAgICAg ICAgICAgLy8gYWNjb3VudCBmb3IgaW5qZWN0ZWQgY2h1bmtzCi0gICAgICAgICAgICAgICAgICAg IGxldCBjb3VudCA9IGNodW5rcy5sZW4oKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxfY2h1 bmtzLmZldGNoX2FkZChjb3VudCwgT3JkZXJpbmc6OlNlcUNzdCk7Ci0gICAgICAgICAgICAgICAg ICAgIGluamVjdGVkX2NodW5rX2NvdW50LmZldGNoX2FkZChjb3VudCwgT3JkZXJpbmc6OlNlcUNz dCk7Ci0KICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBrbm93biA9IFZlYzo6bmV3KCk7CiAg ICAgICAgICAgICAgICAgICAgIGxldCBtdXQgZ3VhcmQgPSBpbmRleF9jc3VtLmxvY2soKS51bndy YXAoKTsKICAgICAgICAgICAgICAgICAgICAgbGV0IGNzdW0gPSBndWFyZC5hc19tdXQoKS51bndy YXAoKTsKICAgICAgICAgICAgICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rcyB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJlYW1fbGVuLmZldGNoX2FkZChjaHVuay5zaXplKCkgYXMgdXNpemUsIE9yZGVyaW5nOjpT ZXFDc3QpIGFzIHU2NDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlZF9sZW4uZmV0Y2hf YWRkKGNodW5rLnNpemUoKSBhcyB1c2l6ZSwgT3JkZXJpbmc6OlNlcUNzdCk7Ci0gICAgICAgICAg ICAgICAgICAgICAgICBpbmplY3RlZF9sZW4uZmV0Y2hfYWRkKGNodW5rLnNpemUoKSBhcyB1c2l6 ZSwgT3JkZXJpbmc6OlNlcUNzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0 ID0gY291bnRlcnMuYWRkX2luamVjdGVkX2NodW5rKCZjaHVuaykgYXMgdTY0OwogICAgICAgICAg ICAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IGNodW5rLmRpZ2VzdCgpOwogICAgICAgICAgICAg ICAgICAgICAgICAga25vd24ucHVzaCgob2Zmc2V0LCBkaWdlc3QpKTsKICAgICAgICAgICAgICAg ICAgICAgICAgIGxldCBlbmRfb2Zmc2V0ID0gb2Zmc2V0ICsgY2h1bmsuc2l6ZSgpOwpAQCAtNzMx LDkgKzcwNSw2IEBAIGltcGwgQmFja3VwV3JpdGVyIHsKICAgICAgICAgICAgICAgICAgICAgLy8g YWNjb3VudCBmb3Igbm90IGluamVjdGVkIGNodW5rcyAobmV3IGFuZCBrbm93bikKICAgICAgICAg ICAgICAgICAgICAgbGV0IGNodW5rX2xlbiA9IGRhdGEubGVuKCk7CiAKLSAgICAgICAgICAgICAg ICAgICAgdG90YWxfY2h1bmtzLmZldGNoX2FkZCgxLCBPcmRlcmluZzo6U2VxQ3N0KTsKLSAgICAg ICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHN0cmVhbV9sZW4uZmV0Y2hfYWRkKGNodW5rX2xl biwgT3JkZXJpbmc6OlNlcUNzdCkgYXMgdTY0OwotCiAgICAgICAgICAgICAgICAgICAgIGxldCBt dXQgY2h1bmtfYnVpbGRlciA9IERhdGFDaHVua0J1aWxkZXI6Om5ldyhkYXRhLmFzX3JlZigpKS5j b21wcmVzcyhjb21wcmVzcyk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUocmVm IGNyeXB0X2NvbmZpZykgPSBjcnlwdF9jb25maWcgewpAQCAtNzQxLDcgKzcxMiwyOSBAQCBpbXBs IEJhY2t1cFdyaXRlciB7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg ICAgICBsZXQgbXV0IGtub3duX2NodW5rcyA9IGtub3duX2NodW5rcy5sb2NrKCkudW53cmFwKCk7 Ci0gICAgICAgICAgICAgICAgICAgIGxldCBkaWdlc3QgPSBjaHVua19idWlsZGVyLmRpZ2VzdCgp OworICAgICAgICAgICAgICAgICAgICBsZXQgZGlnZXN0ID0gKmNodW5rX2J1aWxkZXIuZGlnZXN0 KCk7CisgICAgICAgICAgICAgICAgICAgIGxldCAob2Zmc2V0LCByZXMpID0gaWYga25vd25fY2h1 bmtzLmNvbnRhaW5zKCZkaWdlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvZmZz ZXQgPSBjb3VudGVycy5hZGRfa25vd25fY2h1bmsoY2h1bmtfbGVuKSBhcyB1NjQ7CisgICAgICAg ICAgICAgICAgICAgICAgICAob2Zmc2V0LCBNZXJnZWRDaHVua0luZm86Oktub3duKHZlYyFbKG9m ZnNldCwgZGlnZXN0KV0pKQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICAgICAgbWF0Y2ggY2h1bmtfYnVpbGRlci5idWlsZCgpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPaygoY2h1bmssIGRpZ2VzdCkpID0+IHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb3VudGVycy5hZGRfbmV3X2NodW5rKGNodW5rX2xlbiwgY2h1bmsucmF3X3Np emUoKSkgYXMgdTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbm93bl9jaHVu a3MuaW5zZXJ0KGRpZ2VzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1lcmdlZENodW5rSW5mbzo6TmV3KENodW5rSW5mbyB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmssCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlbjogY2h1bmtfbGVuIGFzIHU2NCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFcnIoZXJyKSA9PiByZXR1cm4gZnV0dXJlOjplcnIoZXJyKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAg ICAgICBsZXQgbXV0IGd1YXJkID0gaW5kZXhfY3N1bS5sb2NrKCkudW53cmFwKCk7CiAgICAgICAg ICAgICAgICAgICAgIGxldCBjc3VtID0gZ3VhcmQuYXNfbXV0KCkudW53cmFwKCk7CkBAIC03NTEs MjYgKzc0NCw5IEBAIGltcGwgQmFja3VwV3JpdGVyIHsKICAgICAgICAgICAgICAgICAgICAgaWYg IWlzX2ZpeGVkX2NodW5rX3NpemUgewogICAgICAgICAgICAgICAgICAgICAgICAgY3N1bS51cGRh dGUoJmNodW5rX2VuZC50b19sZV9ieXRlcygpKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgICBjc3VtLnVwZGF0ZShkaWdlc3QpOworICAgICAgICAgICAgICAgICAg ICBjc3VtLnVwZGF0ZSgmZGlnZXN0KTsKIAotICAgICAgICAgICAgICAgICAgICBsZXQgY2h1bmtf aXNfa25vd24gPSBrbm93bl9jaHVua3MuY29udGFpbnMoZGlnZXN0KTsKLSAgICAgICAgICAgICAg ICAgICAgaWYgY2h1bmtfaXNfa25vd24gewotICAgICAgICAgICAgICAgICAgICAgICAga25vd25f Y2h1bmtfY291bnQuZmV0Y2hfYWRkKDEsIE9yZGVyaW5nOjpTZXFDc3QpOwotICAgICAgICAgICAg ICAgICAgICAgICAgcmV1c2VkX2xlbi5mZXRjaF9hZGQoY2h1bmtfbGVuLCBPcmRlcmluZzo6U2Vx Q3N0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZTo6b2soTWVyZ2VkQ2h1bmtJbmZv OjpLbm93bih2ZWMhWyhvZmZzZXQsICpkaWdlc3QpXSkpCi0gICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcHJlc3NlZF9zdHJlYW1fbGVu MiA9IGNvbXByZXNzZWRfc3RyZWFtX2xlbi5jbG9uZSgpOwotICAgICAgICAgICAgICAgICAgICAg ICAga25vd25fY2h1bmtzLmluc2VydCgqZGlnZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICAg IGZ1dHVyZTo6cmVhZHkoY2h1bmtfYnVpbGRlci5idWlsZCgpLm1hcChtb3ZlIHwoY2h1bmssIGRp Z2VzdCl8IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3N0cmVhbV9s ZW4yLmZldGNoX2FkZChjaHVuay5yYXdfc2l6ZSgpLCBPcmRlcmluZzo6U2VxQ3N0KTsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNZXJnZWRDaHVua0luZm86Ok5ldyhDaHVua0luZm8gewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVuaywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlnZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aHVua19sZW46IGNodW5rX2xlbiBhcyB1NjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAg ICAgICAgICAgICAgfSkpCi0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgZnV0dXJlOjpvayhyZXMpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSkKICAg ICAgICAgICAgIC5tZXJnZV9rbm93bl9jaHVua3MoKQpAQCAtODM3LDE1ICs4MTMsNiBAQCBpbXBs IEJhY2t1cFdyaXRlciB7CiAgICAgICAgICAgICB9KQogICAgICAgICAgICAgLnRoZW4obW92ZSB8 cmVzdWx0fCBhc3luYyBtb3ZlIHsgdXBsb2FkX3Jlc3VsdC5hd2FpdD8uYW5kKHJlc3VsdCkgfS5i b3hlZCgpKQogICAgICAgICAgICAgLmFuZF90aGVuKG1vdmUgfF98IHsKLSAgICAgICAgICAgICAg ICBsZXQgZHVyYXRpb24gPSBzdGFydF90aW1lLmVsYXBzZWQoKTsKLSAgICAgICAgICAgICAgICBs ZXQgY2h1bmtfY291bnQgPSB0b3RhbF9jaHVua3MyLmxvYWQoT3JkZXJpbmc6OlNlcUNzdCk7Ci0g ICAgICAgICAgICAgICAgbGV0IGNodW5rX3JldXNlZCA9IGtub3duX2NodW5rX2NvdW50Mi5sb2Fk KE9yZGVyaW5nOjpTZXFDc3QpOwotICAgICAgICAgICAgICAgIGxldCBjaHVua19pbmplY3RlZCA9 IGluamVjdGVkX2NodW5rX2NvdW50Mi5sb2FkKE9yZGVyaW5nOjpTZXFDc3QpOwotICAgICAgICAg ICAgICAgIGxldCBzaXplID0gc3RyZWFtX2xlbjIubG9hZChPcmRlcmluZzo6U2VxQ3N0KTsKLSAg ICAgICAgICAgICAgICBsZXQgc2l6ZV9yZXVzZWQgPSByZXVzZWRfbGVuMi5sb2FkKE9yZGVyaW5n OjpTZXFDc3QpOwotICAgICAgICAgICAgICAgIGxldCBzaXplX2luamVjdGVkID0gaW5qZWN0ZWRf bGVuMi5sb2FkKE9yZGVyaW5nOjpTZXFDc3QpOwotICAgICAgICAgICAgICAgIGxldCBzaXplX2Nv bXByZXNzZWQgPSBjb21wcmVzc2VkX3N0cmVhbV9sZW4yLmxvYWQoT3JkZXJpbmc6OlNlcUNzdCkg YXMgdXNpemU7Ci0KICAgICAgICAgICAgICAgICBsZXQgbXV0IGd1YXJkID0gaW5kZXhfY3N1bV8y LmxvY2soKS51bndyYXAoKTsKICAgICAgICAgICAgICAgICBsZXQgY3N1bSA9IGd1YXJkLnRha2Uo KS51bndyYXAoKS5maW5pc2goKTsKIApAQCAtODUzLDE3ICs4MjAsNyBAQCBpbXBsIEJhY2t1cFdy aXRlciB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZS5hYm9ydCgpOwogICAgICAgICAgICAg ICAgIH0KIAotICAgICAgICAgICAgICAgIGZ1dHVyZXM6OmZ1dHVyZTo6b2soVXBsb2FkU3RhdHMg ewotICAgICAgICAgICAgICAgICAgICBjaHVua19jb3VudCwKLSAgICAgICAgICAgICAgICAgICAg Y2h1bmtfcmV1c2VkLAotICAgICAgICAgICAgICAgICAgICBjaHVua19pbmplY3RlZCwKLSAgICAg ICAgICAgICAgICAgICAgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV9yZXVzZWQsCi0g ICAgICAgICAgICAgICAgICAgIHNpemVfaW5qZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgIHNp emVfY29tcHJlc3NlZCwKLSAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24sCi0gICAgICAgICAg ICAgICAgICAgIGNzdW0sCi0gICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICBmdXR1 cmVzOjpmdXR1cmU6Om9rKGNvdW50ZXJzX3JlYWRvbmx5LnRvX3VwbG9hZF9zdGF0cyhjc3VtLCBz dGFydF90aW1lLmVsYXBzZWQoKSkpCiAgICAgICAgICAgICB9KQogICAgIH0KIApkaWZmIC0tZ2l0 IGEvcGJzLWNsaWVudC9zcmMvaW5qZWN0X3JldXNlZF9jaHVua3MucnMgYi9wYnMtY2xpZW50L3Ny Yy9pbmplY3RfcmV1c2VkX2NodW5rcy5ycwppbmRleCA0YjI5MjIwMTIuLjZkYTJiY2QxNiAxMDA2 NDQKLS0tIGEvcGJzLWNsaWVudC9zcmMvaW5qZWN0X3JldXNlZF9jaHVua3MucnMKKysrIGIvcGJz LWNsaWVudC9zcmMvaW5qZWN0X3JldXNlZF9jaHVua3MucnMKQEAgLTEsMTMgKzEsMTMgQEAKIHVz ZSBzdGQ6OmNtcDsKIHVzZSBzdGQ6OnBpbjo6UGluOwotdXNlIHN0ZDo6c3luYzo6YXRvbWljOjp7 QXRvbWljVXNpemUsIE9yZGVyaW5nfTsKLXVzZSBzdGQ6OnN5bmM6OnttcHNjLCBBcmN9OwordXNl IHN0ZDo6c3luYzo6bXBzYzsKIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKIAogdXNl IGFueWhvdzo6e2FueWhvdywgRXJyb3J9OwogdXNlIGZ1dHVyZXM6OntyZWFkeSwgU3RyZWFtfTsK IHVzZSBwaW5fcHJvamVjdF9saXRlOjpwaW5fcHJvamVjdDsKIAordXNlIGNyYXRlOjpiYWNrdXBf c3RhdHM6OlVwbG9hZENvdW50ZXJzOwogdXNlIGNyYXRlOjpweGFyOjpjcmVhdGU6OlJldXNhYmxl RHluYW1pY0VudHJ5OwogCiBwaW5fcHJvamVjdCEgewpAQCAtMTYsNyArMTYsNyBAQCBwaW5fcHJv amVjdCEgewogICAgICAgICBpbnB1dDogUywKICAgICAgICAgbmV4dF9pbmplY3Rpb246IE9wdGlv bjxJbmplY3RDaHVua3M+LAogICAgICAgICBpbmplY3Rpb25zOiBPcHRpb248bXBzYzo6UmVjZWl2 ZXI8SW5qZWN0Q2h1bmtzPj4sCi0gICAgICAgIHN0cmVhbV9sZW46IEFyYzxBdG9taWNVc2l6ZT4s CisgICAgICAgIGNvdW50ZXJzOiBVcGxvYWRDb3VudGVycywKICAgICB9CiB9CiAKQEAgLTQyLDcg KzQyLDcgQEAgcHViIHRyYWl0IEluamVjdFJldXNlZENodW5rczogU2l6ZWQgewogICAgIGZuIGlu amVjdF9yZXVzZWRfY2h1bmtzKAogICAgICAgICBzZWxmLAogICAgICAgICBpbmplY3Rpb25zOiBP cHRpb248bXBzYzo6UmVjZWl2ZXI8SW5qZWN0Q2h1bmtzPj4sCi0gICAgICAgIHN0cmVhbV9sZW46 IEFyYzxBdG9taWNVc2l6ZT4sCisgICAgICAgIGNvdW50ZXJzOiBVcGxvYWRDb3VudGVycywKICAg ICApIC0+IEluamVjdFJldXNlZENodW5rc1F1ZXVlPFNlbGY+OwogfQogCkBAIC01MywxMyArNTMs MTMgQEAgd2hlcmUKICAgICBmbiBpbmplY3RfcmV1c2VkX2NodW5rcygKICAgICAgICAgc2VsZiwK ICAgICAgICAgaW5qZWN0aW9uczogT3B0aW9uPG1wc2M6OlJlY2VpdmVyPEluamVjdENodW5rcz4+ LAotICAgICAgICBzdHJlYW1fbGVuOiBBcmM8QXRvbWljVXNpemU+LAorICAgICAgICBjb3VudGVy czogVXBsb2FkQ291bnRlcnMsCiAgICAgKSAtPiBJbmplY3RSZXVzZWRDaHVua3NRdWV1ZTxTZWxm PiB7CiAgICAgICAgIEluamVjdFJldXNlZENodW5rc1F1ZXVlIHsKICAgICAgICAgICAgIGlucHV0 OiBzZWxmLAogICAgICAgICAgICAgbmV4dF9pbmplY3Rpb246IE5vbmUsCiAgICAgICAgICAgICBp bmplY3Rpb25zLAotICAgICAgICAgICAgc3RyZWFtX2xlbiwKKyAgICAgICAgICAgIGNvdW50ZXJz LAogICAgICAgICB9CiAgICAgfQogfQpAQCAtODUsNyArODUsNyBAQCB3aGVyZQogCiAgICAgICAg ICAgICBpZiBsZXQgU29tZShpbmplY3QpID0gdGhpcy5uZXh0X2luamVjdGlvbi50YWtlKCkgewog ICAgICAgICAgICAgICAgIC8vIGdvdCByZXVzYWJsZSBkeW5hbWljIGVudHJpZXMgdG8gaW5qZWN0 Ci0gICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHRoaXMuc3RyZWFtX2xlbi5sb2FkKE9yZGVy aW5nOjpTZXFDc3QpIGFzIHU2NDsKKyAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5j b3VudGVycy50b3RhbF9zdHJlYW1fbGVuKCkgYXMgdTY0OwogCiAgICAgICAgICAgICAgICAgbWF0 Y2ggaW5qZWN0LmJvdW5kYXJ5LmNtcCgmb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8v IGluamVjdCBub3cKZGlmZiAtLWdpdCBhL3Bicy1jbGllbnQvc3JjL2xpYi5ycyBiL3Bicy1jbGll bnQvc3JjL2xpYi5ycwppbmRleCAzZDJkYTI3YjkuLmI4NzUzNDdiYiAxMDA2NDQKLS0tIGEvcGJz LWNsaWVudC9zcmMvbGliLnJzCisrKyBiL3Bicy1jbGllbnQvc3JjL2xpYi5ycwpAQCAtNDEsNCAr NDEsNyBAQCBwdWIgdXNlIGJhY2t1cF9zcGVjaWZpY2F0aW9uOjoqOwogbW9kIGNodW5rX3N0cmVh bTsKIHB1YiB1c2UgY2h1bmtfc3RyZWFtOjp7Q2h1bmtTdHJlYW0sIEZpeGVkQ2h1bmtTdHJlYW0s IEluamVjdGlvbkRhdGF9OwogCittb2QgYmFja3VwX3N0YXRzOworcHViIHVzZSBiYWNrdXBfc3Rh dHM6OkJhY2t1cFN0YXRzOworCiBwdWIgY29uc3QgUFJPWE1PWF9CQUNLVVBfVENQX0tFRVBBTElW RV9USU1FOiB1MzIgPSAxMjA7Ci0tIAoyLjM5LjUKCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxA bGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxt YW4vbGlzdGluZm8vcGJzLWRldmVsCg==