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 [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 02C551FF173
	for <inbox@lore.proxmox.com>; 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 <c.ebner@proxmox.com>
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
 <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>

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==