From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pdm-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 2F9621FF165
	for <inbox@lore.proxmox.com>; Wed, 12 Feb 2025 16:58:22 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 28E961A65A;
	Wed, 12 Feb 2025 16:58:19 +0100 (CET)
Date: Wed, 12 Feb 2025 16:57:37 +0100
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
To: Lukas Wagner <l.wagner@proxmox.com>
Message-ID: <zoz5qzeqf7znlkgwldvkqwdqqey66mwnlnuwklmc4onjpayoll@wb5wcq3gesh4>
References: <20250211120541.163621-1-l.wagner@proxmox.com>
 <20250211120541.163621-8-l.wagner@proxmox.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20250211120541.163621-8-l.wagner@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.081 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. [mod.rs, proxmox-datacenter-api.rs, section.id]
Subject: Re: [pdm-devel] [PATCH proxmox-datacenter-manager 07/25] metric
 collection: rework metric poll task
X-BeenThere: pdm-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Datacenter Manager development discussion
 <pdm-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pdm-devel/>
List-Post: <mailto:pdm-devel@lists.proxmox.com>
List-Help: <mailto:pdm-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Datacenter Manager development discussion
 <pdm-devel@lists.proxmox.com>
Cc: pdm-devel@lists.proxmox.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pdm-devel-bounces@lists.proxmox.com
Sender: "pdm-devel" <pdm-devel-bounces@lists.proxmox.com>

TG9va3MgZ29vZC4KT25lIGltcHJvdmVtZW50L2ZvbGxvdy11cCBzdWdnZXN0aW9uIChKb2luU2V0
KSwgc29tZSBuaXRwaWNraW5nICYKcG90ZW50aWFsIHJlZmFjdG9yaW5nIHJlcXVlc3RzLi4uCgpP
biBUdWUsIEZlYiAxMSwgMjAyNSBhdCAwMTowNToyM1BNICswMTAwLCBMdWthcyBXYWduZXIgd3Jv
dGU6Cj4gTWV0cmljIGNvbGxlY3Rpb24gaXMgbW9zdGx5IGxpbWl0ZWQgYnkgbmV0d29yayBsYXRl
bmN5LCBub3QgZGlzayBJTyBvcgo+IENQVS4gVGhpcyBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSBn
ZXQgc2lnbmlmaWNhbnQgc3BlZWR1cHMgYnkgcG9sbGluZwo+IHJlbW90ZXMgY29uY3VycmVudGx5
IGJ5IHNwYXduaW5nIHRva2lvIHdvcmtlcnMuCj4gCj4gVG8gYXZvaWQgbG9hZC9JTyBzcGlrZXMs
IHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBjb25uZWN0aW9ucwo+IHVzaW5nIGEg
c2VtYXBob3JlLgo+IAo+IEVhY2ggY29uY3VycmVudCB0YXNrIHdoaWNoIGZldGNoZXMgYSBzaW5n
bGUgcmVtb3RlIHdhaXRzIGEgcmFuZG9tIGFtb3VudAo+IG9mIHRpbWUgYmVmb3JlIGFjdHVhbGx5
IGNvbm5lY3RpbmcgdG8gdGhlIHJlbW90ZS4gVGhlIHVwcGVyIGFuZCBsb3dlcgo+IGJvdW5kcyBm
b3IgdGhpcyByYW5kb20gZGVsYXkgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIG1ldHJpYyBjb2xs
ZWN0aW9uCj4gc2V0dGluZ3MuIFRoZSBtYWluIGFpbSBvZiB0aGlzIG1lY2hhbmlzbSBpcyB0byBy
ZWR1Y2UgbG9hZCBzcGlrZXMuCj4gCj4gRnVydGhlcm1vcmUsIGVhY2ggdGltZSB3aGVuIHRoZSBt
YWluIGNvbGxlY3Rpb24gaW50ZXJ2YWwgdGltZXIKPiBmaXJlcywgYSByYW5kb20gZGVsYXkgaXMg
aW50cm9kdWNlZCBiZWZvcmUgYWN0dWFsbHkgc3RhcnRpbmcgdGhlCj4gY29sbGVjdGlvbiBwcm9j
ZXNzLgo+IFRoaXMgaXMgdXNlZnVsIGR1ZSB0byBob3cgd2Ugc2V0IHVwIHRoZSB0aW1lcjsgd2Ug
Y29uZmlndXJlCj4gaXQgdG8gZmlndXJlIGF0IGFsaWduZWQgcG9pbnRzIGluIHRpbWUuIEZvciBp
bnN0YW5jZSwgaWYgdGhlCj4gY29sbGVjdGlvbiBpbnRlcnZhbCBpcyBzZXQgdG8gNjBzLCB0aGUg
dGltZXIgZmlyZXMgYXQKPiBtaW51dGUgYm91bmRhcmllcy4gVXNpbmcgdGhpcyByYW5kb20gb2Zm
c2V0LCB3ZSBjYW4gYXZvaWQKPiB0cmlnZ2VyaW5nIGF0IHRoZSBzYW1lIHRpbWUgYXMgb3RoZXIg
dGltZXJzIChjcm9uLCBzeXN0ZW1kKS4KPiAKPiBGdXJ0aGVybW9yZSwgd2UgYWRkIGEgbWVjaGFu
aXNtIHRvIHRyaWdnZXIgbWV0cmljIGNvbGxlY3Rpb24gbWFudWFsbHkuCj4gVGhpcyBpcyBhY2hp
ZXZlIGJ5IHVzaW5nIGB0b2tpbzo6c2VsZWN0IWAgb24gYm90aCwgdGhlIHRpbWVyJ3MgYHRpY2tg
Cj4gbWV0aG9kIGFuZCB0aGUgYHJlY3ZgIG1ldGhvZCBvZiBhbiBgbXBzY2Agd2hpY2ggaXMgdXNl
ZCB0byBzZW5kIGNvbnRyb2wKPiBtZXNzYWdlcyB0byB0aGUgbWV0cmljIGNvbGxlY3Rpb24gdGFz
ay4KPiAKPiBGb3IgYmV0dGVyIGNvZGUgc3RydWN0dXJlLCB0aGUgY29sbGVjdGlvbiB0YXNrIGlz
IHNwbGl0IGludG8gYSBzZXBhcmF0ZQo+IG1vZHVsZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMdWth
cyBXYWduZXIgPGwud2FnbmVyQHByb3htb3guY29tPgo+IC0tLQo+ICBDYXJnby50b21sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBzZXJ2ZXIvQ2FyZ28udG9t
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBzZXJ2ZXIvc3JjL2Jpbi9w
cm94bW94LWRhdGFjZW50ZXItYXBpLnJzICAgICAgfCAgIDIgKy0KPiAgLi4uL3NyYy9tZXRyaWNf
Y29sbGVjdGlvbi9jb2xsZWN0aW9uX3Rhc2sucnMgIHwgMzE3ICsrKysrKysrKysrKysrKysrKwo+
ICBzZXJ2ZXIvc3JjL21ldHJpY19jb2xsZWN0aW9uL21vZC5ycyAgICAgICAgICAgfCAxMjggKysr
LS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDM2NiBpbnNlcnRpb25zKCspLCA4MyBkZWxldGlvbnMo
LSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlcnZlci9zcmMvbWV0cmljX2NvbGxlY3Rpb24vY29s
bGVjdGlvbl90YXNrLnJzCj4gCj4gZGlmZiAtLWdpdCBhL0NhcmdvLnRvbWwgYi9DYXJnby50b21s
Cj4gaW5kZXggNGYzYjFkMC4uN2RkNjBhNSAxMDA2NDQKPiAtLS0gYS9DYXJnby50b21sCj4gKysr
IGIvQ2FyZ28udG9tbAo+IEBAIC0xMDgsNiArMTA4LDcgQEAgb25jZV9jZWxsID0gIjEuMy4xIgo+
ICBvcGVuc3NsID0gIjAuMTAuNDAiCj4gIHBlcmNlbnQtZW5jb2RpbmcgPSAiMi4xIgo+ICBwaW4t
cHJvamVjdC1saXRlID0gIjAuMiIKPiArcmFuZCA9ICIwLjgiCj4gIHJlZ2V4ID0gIjEuNS41Igo+
ICBzZXJkZSA9IHsgdmVyc2lvbiA9ICIxLjAiLCBmZWF0dXJlcyA9IFsiZGVyaXZlIl0gfQo+ICBz
ZXJkZV9jYm9yID0gIjAuMTEuMSIKPiBkaWZmIC0tZ2l0IGEvc2VydmVyL0NhcmdvLnRvbWwgYi9z
ZXJ2ZXIvQ2FyZ28udG9tbAo+IGluZGV4IDdiMDA1OGUuLmM4MzA4ZjIgMTAwNjQ0Cj4gLS0tIGEv
c2VydmVyL0NhcmdvLnRvbWwKPiArKysgYi9zZXJ2ZXIvQ2FyZ28udG9tbAo+IEBAIC0yNCw2ICsy
NCw3IEBAIG5peC53b3Jrc3BhY2UgPSB0cnVlCj4gIG9uY2VfY2VsbC53b3Jrc3BhY2UgPSB0cnVl
Cj4gIG9wZW5zc2wud29ya3NwYWNlID0gdHJ1ZQo+ICBwZXJjZW50LWVuY29kaW5nLndvcmtzcGFj
ZSA9IHRydWUKPiArcmFuZC53b3Jrc3BhY2UgPSB0cnVlCj4gIHNlcmRlLndvcmtzcGFjZSA9IHRy
dWUKPiAgc2VyZGVfanNvbi53b3Jrc3BhY2UgPSB0cnVlCj4gIHN5c2xvZy53b3Jrc3BhY2UgPSB0
cnVlCj4gZGlmZiAtLWdpdCBhL3NlcnZlci9zcmMvYmluL3Byb3htb3gtZGF0YWNlbnRlci1hcGku
cnMgYi9zZXJ2ZXIvc3JjL2Jpbi9wcm94bW94LWRhdGFjZW50ZXItYXBpLnJzCj4gaW5kZXggYTc5
MDk0ZC4uNmU4NWU1MiAxMDA2NDQKPiAtLS0gYS9zZXJ2ZXIvc3JjL2Jpbi9wcm94bW94LWRhdGFj
ZW50ZXItYXBpLnJzCj4gKysrIGIvc2VydmVyL3NyYy9iaW4vcHJveG1veC1kYXRhY2VudGVyLWFw
aS5ycwo+IEBAIC0yODYsNyArMjg2LDcgQEAgYXN5bmMgZm4gcnVuKGRlYnVnOiBib29sKSAtPiBS
ZXN1bHQ8KCksIEVycm9yPiB7Cj4gICAgICB9KTsKPiAgCj4gICAgICBzdGFydF90YXNrX3NjaGVk
dWxlcigpOwo+IC0gICAgbWV0cmljX2NvbGxlY3Rpb246OnN0YXJ0X3Rhc2soKTsKPiArICAgIG1l
dHJpY19jb2xsZWN0aW9uOjpzdGFydF90YXNrKCk/Owo+ICAgICAgcmVzb3VyY2VfY2FjaGU6OnN0
YXJ0X3Rhc2soKTsKPiAgCj4gICAgICBzZXJ2ZXIuYXdhaXQ/Owo+IGRpZmYgLS1naXQgYS9zZXJ2
ZXIvc3JjL21ldHJpY19jb2xsZWN0aW9uL2NvbGxlY3Rpb25fdGFzay5ycyBiL3NlcnZlci9zcmMv
bWV0cmljX2NvbGxlY3Rpb24vY29sbGVjdGlvbl90YXNrLnJzCj4gbmV3IGZpbGUgbW9kZSAxMDA2
NDQKPiBpbmRleCAwMDAwMDAwLi44NDIwMDM5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3NlcnZl
ci9zcmMvbWV0cmljX2NvbGxlY3Rpb24vY29sbGVjdGlvbl90YXNrLnJzCj4gQEAgLTAsMCArMSwz
MTcgQEAKPiArdXNlIHN0ZDo6e2NvbGxlY3Rpb25zOjpIYXNoTWFwLCBzeW5jOjpBcmMsIHRpbWU6
OkR1cmF0aW9ufTsKPiArCj4gK3VzZSBhbnlob3c6OkVycm9yOwo+ICt1c2UgcmFuZDo6Um5nOwo+
ICt1c2UgdG9raW86OnsKPiArICAgIHN5bmM6OnsKPiArICAgICAgICBtcHNjOjp7UmVjZWl2ZXIs
IFNlbmRlcn0sCj4gKyAgICAgICAgT3duZWRTZW1hcGhvcmVQZXJtaXQsIFNlbWFwaG9yZSwKPiAr
ICAgIH0sCj4gKyAgICB0aW1lOjpJbnRlcnZhbCwKPiArfTsKPiArCj4gK3VzZSBwcm94bW94X3Nl
Y3Rpb25fY29uZmlnOjp0eXBlZDo6U2VjdGlvbkNvbmZpZ0RhdGE7Cj4gKwo+ICt1c2UgcGRtX2Fw
aV90eXBlczo6ewo+ICsgICAgcmVtb3Rlczo6e1JlbW90ZSwgUmVtb3RlVHlwZX0sCj4gKyAgICBD
b2xsZWN0aW9uU2V0dGluZ3MsCj4gK307Cj4gK3VzZSBwZG1fY29uZmlnOjptZXRyaWNfY29sbGVj
dGlvbjo6Q09MTEVDVElPTl9TRVRUSU5HU19UWVBFOwo+ICsKPiArdXNlIGNyYXRlOjp7Y29ubmVj
dGlvbiwgdGFza191dGlsc307Cj4gKwo+ICt1c2Ugc3VwZXI6OnJyZF90YXNrOjpScmRTdG9yZVJl
cXVlc3Q7Cj4gKwo+ICsvLy8gQ29udHJvbCBtZXNzYWdlcyBmb3IgdGhlIG1ldHJpYyBjb2xsZWN0
aW9uIHRhc2suCj4gK3B1YihzdXBlcikgZW51bSBDb250cm9sTXNnIHsKPiArICAgIENvbGxlY3RT
aW5nbGVSZW1vdGUoU3RyaW5nKSwKPiArICAgIENvbGxlY3RBbGxSZW1vdGVzLAo+ICt9Cj4gKwo+
ICsvLy8gVGFzayB3aGljaCBwZXJpb2RpY2FsbHkgY29sbGVjdHMgbWV0cmljcyBmcm9tIGFsbCBy
ZW1vdGVzIGFuZCBzdG9yZXMKPiArLy8vIHRoZW0gaW4gdGhlIGxvY2FsIG1ldHJpY3MgZGF0YWJh
c2UuCj4gK3B1YihzdXBlcikgc3RydWN0IE1ldHJpY0NvbGxlY3Rpb25UYXNrIHsKPiArICAgIG1v
c3RfcmVjZW50X3RpbWVzdGFtcHM6IEhhc2hNYXA8U3RyaW5nLCBpNjQ+LAo+ICsgICAgc2V0dGlu
Z3M6IENvbGxlY3Rpb25TZXR0aW5ncywKPiArICAgIG1ldHJpY19kYXRhX3R4OiBTZW5kZXI8UnJk
U3RvcmVSZXF1ZXN0PiwKPiArICAgIGNvbnRyb2xfbWVzc2FnZV9yeDogUmVjZWl2ZXI8Q29udHJv
bE1zZz4sCj4gK30KPiArCj4gK2ltcGwgTWV0cmljQ29sbGVjdGlvblRhc2sgewo+ICsgICAgLy8v
IENyZWF0ZSBhIG5ldyBtZXRyaWMgY29sbGVjdGlvbiB0YXNrLgo+ICsgICAgcHViKHN1cGVyKSBm
biBuZXcoCj4gKyAgICAgICAgbWV0cmljX2RhdGFfdHg6IFNlbmRlcjxScmRTdG9yZVJlcXVlc3Q+
LAo+ICsgICAgICAgIGNvbnRyb2xfbWVzc2FnZV9yeDogUmVjZWl2ZXI8Q29udHJvbE1zZz4sCj4g
KyAgICApIC0+IFJlc3VsdDxTZWxmLCBFcnJvcj4gewo+ICsgICAgICAgIGxldCBzZXR0aW5ncyA9
IFNlbGY6OmdldF9zZXR0aW5nc19vcl9kZWZhdWx0KCk7Cj4gKwo+ICsgICAgICAgIE9rKFNlbGYg
ewo+ICsgICAgICAgICAgICBtb3N0X3JlY2VudF90aW1lc3RhbXBzOiBIYXNoTWFwOjpuZXcoKSwK
PiArICAgICAgICAgICAgc2V0dGluZ3MsCj4gKyAgICAgICAgICAgIG1ldHJpY19kYXRhX3R4LAo+
ICsgICAgICAgICAgICBjb250cm9sX21lc3NhZ2VfcngsCj4gKyAgICAgICAgfSkKPiArICAgIH0K
PiArCj4gKyAgICAvLy8gUnVuIHRoZSBtZXRyaWMgY29sbGVjdGlvbiB0YXNrLgo+ICsgICAgLy8v
Cj4gKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5ldmVyIHJldHVybi4KPiArICAgICNbdHJh
Y2luZzo6aW5zdHJ1bWVudChza2lwX2FsbCwgbmFtZSA9ICJtZXRyaWNfY29sbGVjdGlvbl90YXNr
IildCj4gKyAgICBwdWIoc3VwZXIpIGFzeW5jIGZuIHJ1bigmbXV0IHNlbGYpIHsKPiArICAgICAg
ICBsZXQgbXV0IHRpbWVyID0gU2VsZjo6c2V0dXBfdGltZXIoc2VsZi5zZXR0aW5ncy5jb2xsZWN0
aW9uX2ludGVydmFsX29yX2RlZmF1bHQoKSk7Cj4gKwo+ICsgICAgICAgIGxvZzo6ZGVidWchKAo+
ICsgICAgICAgICAgICAibWV0cmljIGNvbGxlY3Rpb24gc3RhcnRpbmcgdXAuIGNvbGxlY3Rpb24g
aW50ZXJ2YWwgc2V0IHRvIHt9IHNlY29uZHMiLAoKXiBuaXQ6IHVzaW5nIHB1bmN0dWF0aW9uIGlu
IHRoZSBtaWRkbGUgYnV0IGNvbnRpbnVpbmcgaW4gbG93ZXIgY2FzZSBhbmQKbm90IGVuZGluZyB3
aXRoIHB1bmN0dWF0aW9uIPCfpKoKCj4gKyAgICAgICAgICAgIHNlbGYuc2V0dGluZ3MuY29sbGVj
dGlvbl9pbnRlcnZhbF9vcl9kZWZhdWx0KCkKPiArICAgICAgICApOwo+ICsKPiArICAgICAgICBs
b29wIHsKPiArICAgICAgICAgICAgbGV0IG9sZF9zZXR0aW5ncyA9IHNlbGYuc2V0dGluZ3MuY2xv
bmUoKTsKPiArICAgICAgICAgICAgdG9raW86OnNlbGVjdCEgewo+ICsgICAgICAgICAgICAgICAg
XyA9IHRpbWVyLnRpY2soKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgLy8gUmVsb2FkIHNl
dHRpbmdzIGluIGNhc2UgdGhleSBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW53aGlsZQo+ICsgICAg
ICAgICAgICAgICAgICAgIHNlbGYuc2V0dGluZ3MgPSBTZWxmOjpnZXRfc2V0dGluZ3Nfb3JfZGVm
YXVsdCgpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICBsb2c6OmRlYnVnISgic3RhcnRpbmcg
bWV0cmljIGNvbGxlY3Rpb24gZnJvbSBhbGwgcmVtb3RlcyAtIHRyaWdnZXJlZCBieSB0aW1lciIp
OwoKTm90IHN1cmUgaWYgaXQncyB3b3J0aCBtb3ZpbmcgdGhpcyBpbnRvIGEgYHNlbGYub25fdGlj
aygpYCBidXQuLi4KCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zbGVlcF9mb3JfcmFuZG9t
X2ludGVydmFsX29mZnNldCgpLmF3YWl0Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICBpZiBs
ZXQgU29tZShyZW1vdGVzKSA9IFNlbGY6OmxvYWRfcmVtb3RlX2NvbmZpZygpIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IHRvX2ZldGNoID0gcmVtb3Rlcy5vcmRlci5hc19zbGljZSgp
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZldGNoX3JlbW90ZXMoJnJlbW90ZXMs
IHRvX2ZldGNoKS5hd2FpdDsKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg
ICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAgdmFsID0gc2VsZi5jb250cm9sX21lc3NhZ2Vf
cngucmVjdigpID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAvLyBSZWxvYWQgc2V0dGluZ3Mg
aW4gY2FzZSB0aGV5IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbndoaWxlCj4gKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5zZXR0aW5ncyA9IFNlbGY6OmdldF9zZXR0aW5nc19vcl9kZWZhdWx0KCk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdmFsIHsKCi4uLmJ1dCBJIHRoaW5rIHRoaXMg
cGFydCBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gYQpgc2VsZi5oYW5kbGVfY29udHJvbF9t
ZXNzYWdlKG1zZykuYXdhaXRgCgpJdCBnZXRzIGluZGVudGVkIHF1aXRlIGRlZXBseSBhbmQgaXQg
anVzdCBtYWtlcyBzZW5zZSBJTU8gOikKCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUo
Q29udHJvbE1zZzo6Q29sbGVjdFNpbmdsZVJlbW90ZShyZW1vdGUpKSA9PiB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiBsZXQgU29tZShyZW1vdGVzKSA9IFNlbGY6OmxvYWRfcmVt
b3RlX2NvbmZpZygpIHsKCl4gQWxzbyB0aGlzLi4uCgo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZzo6ZGVidWchKCJzdGFydGluZyBtZXRyaWMgY29sbGVjdGlvbiBmb3IgcmVt
b3RlICd7cmVtb3RlfSctIHRyaWdnZXJlZCBieSBjb250cm9sIG1lc3NhZ2UiKTsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZldGNoX3JlbW90ZXMoJnJlbW90ZXMsICZb
cmVtb3RlXSkuYXdhaXQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgU29tZShDb250
cm9sTXNnOjpDb2xsZWN0QWxsUmVtb3RlcykgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbGV0IFNvbWUocmVtb3RlcykgPSBTZWxmOjpsb2FkX3JlbW90ZV9jb25maWcoKSB7
CgouLi4gaXMgdGhlIHNhbWUgYXMgdGhpcywgc28gaWYgdGhpcyBpcyBmYWN0b3JlZCBvdXQgaW50
byBhIHNlcGFyYXRlCmZ1bmN0aW9uLCBpdCBjb3VsZCBqdXN0IGVhcmx5LW91dCB2aWEgYSBsZXQt
ZWxzZSB0aGVyZSwgYXMgd2UgZG9uJ3QgbmVlZAp0byBjYWxsIGl0IHdoZW4gYHZhbGAgaXMgYE5v
bmVgLCBhbmQgdGhlbiBpdCdzIHF1aXRlIGNvbXBhY3QuCgo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZzo6ZGVidWchKCJzdGFydGluZyBtZXRyaWMgY29sbGVjdGlvbiBmcm9t
IGFsbCByZW1vdGVzIC0gdHJpZ2dlcmVkIGJ5IGNvbnRyb2wgbWVzc2FnZSIpOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmV0Y2hfcmVtb3RlcygmcmVtb3RlcywgJnJl
bW90ZXMub3JkZXIpLmF3YWl0Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIF8gPT4g
e30sCj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAg
ICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZWxmLnNldHRpbmdz
LmNvbGxlY3Rpb25faW50ZXJ2YWxfb3JfZGVmYXVsdCgpOwo+ICsKPiArICAgICAgICAgICAgaWYg
b2xkX3NldHRpbmdzLmNvbGxlY3Rpb25faW50ZXJ2YWxfb3JfZGVmYXVsdCgpICE9IGludGVydmFs
IHsKPiArICAgICAgICAgICAgICAgIGxvZzo6aW5mbyEoCj4gKyAgICAgICAgICAgICAgICAgICAg
Im1ldHJpYyBjb2xsZWN0aW9uIGludGVydmFsIGNoYW5nZWQgdG8ge30gc2Vjb25kcywgcmVsb2Fk
aW5nIHRpbWVyIiwKPiArICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbAo+ICsgICAgICAgICAg
ICAgICAgKTsKPiArICAgICAgICAgICAgICAgIHRpbWVyID0gU2VsZjo6c2V0dXBfdGltZXIoaW50
ZXJ2YWwpOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAg
IGFzeW5jIGZuIHNsZWVwX2Zvcl9yYW5kb21faW50ZXJ2YWxfb2Zmc2V0KCZzZWxmKSB7Cj4gKyAg
ICAgICAgbGV0IG11dCBtaW4gPSBzZWxmLnNldHRpbmdzLm1pbl9pbnRlcnZhbF9vZmZzZXRfb3Jf
ZGVmYXVsdCgpOwo+ICsgICAgICAgIGxldCBtYXggPSBzZWxmLnNldHRpbmdzLm1heF9pbnRlcnZh
bF9vZmZzZXRfb3JfZGVmYXVsdCgpOwo+ICsKPiArICAgICAgICBpZiBtaW4gPiBtYXggewo+ICsg
ICAgICAgICAgICBsb2c6Ondhcm4hKAo+ICsgICAgICAgICAgICAgICAgIm1pbi1pbnRlcnZhbC1v
ZmZzZXQgaXMgbGFyZ2VyIHRoYW4gbWF4LWludGVydmFsLW9mZnNldCAoe21pbn0gPiB7bWF4fSkg
LSBcCj4gKyAgICAgICAgICAgICAgICBjYXBwaW5nIGl0IHRvIG1heC1pbnRlcnZhbC1vZmZzZXQg
KHttYXh9KSIKPiArICAgICAgICAgICAgKTsKPiArICAgICAgICAgICAgbWluID0gbWF4Owo+ICsg
ICAgICAgIH0KPiArCj4gKyAgICAgICAgbGV0IGppdHRlciA9IHsKPiArICAgICAgICAgICAgbGV0
IG11dCBybmcgPSByYW5kOjp0aHJlYWRfcm5nKCk7Cj4gKyAgICAgICAgICAgIHJuZy5nZW5fcmFu
Z2UobWluLi49bWF4KQo+ICsgICAgICAgIH07Cj4gKyAgICAgICAgdG9raW86OnRpbWU6OnNsZWVw
KER1cmF0aW9uOjpmcm9tX3NlY3Moaml0dGVyKSkuYXdhaXQ7Cj4gKyAgICB9Cj4gKwoK4oaRIGFu
ZCDihpMgYXJlIGNyeWluZyBvdXQgZm9yIGEgY29tbW9uIGZuIHdpdGggdGhlIHZhcmlhYmxlIG5h
bWUsIG1pbiBhbmQKbWF4IGFzIHBhcmFtZXRlcnMgOy0pCgo+ICsgICAgYXN5bmMgZm4gc2xlZXBf
Zm9yX3JhbmRvbV9jb25uZWN0aW9uX2RlbGF5KHNldHRpbmdzOiAmQ29sbGVjdGlvblNldHRpbmdz
KSB7Cj4gKyAgICAgICAgbGV0IG11dCBtaW4gPSBzZXR0aW5ncy5taW5fY29ubmVjdGlvbl9kZWxh
eV9vcl9kZWZhdWx0KCk7Cj4gKyAgICAgICAgbGV0IG1heCA9IHNldHRpbmdzLm1heF9jb25uZWN0
aW9uX2RlbGF5X29yX2RlZmF1bHQoKTsKPiArCj4gKyAgICAgICAgaWYgbWluID4gbWF4IHsKPiAr
ICAgICAgICAgICAgbG9nOjp3YXJuISgKPiArICAgICAgICAgICAgICAgICJtaW4tY29sbGVjdGlv
bi1kZWxheSBpcyBsYXJnZXIgdGhhbiBtYXgtY29sbGVjdGlvbi1kZWxheSAoe21pbn0gPiB7bWF4
fSkgLSBcCj4gKyAgICAgICAgICAgICAgICBjYXBwaW5nIGl0IHRvIG1heC1jb2xsZWN0aW9uLWRl
bGF5ICh7bWF4fSkiCj4gKyAgICAgICAgICAgICk7Cj4gKyAgICAgICAgICAgIG1pbiA9IG1heDsK
PiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGxldCBqaXR0ZXIgPSB7Cj4gKyAgICAgICAgICAg
IGxldCBtdXQgcm5nID0gcmFuZDo6dGhyZWFkX3JuZygpOwo+ICsgICAgICAgICAgICBybmcuZ2Vu
X3JhbmdlKG1pbi4uPW1heCkKPiArICAgICAgICB9Owo+ICsKPiArICAgICAgICB0b2tpbzo6dGlt
ZTo6c2xlZXAoRHVyYXRpb246OmZyb21fbWlsbGlzKGppdHRlcikpLmF3YWl0Owo+ICsgICAgfQo+
ICsKPiArICAgIGZuIGdldF9zZXR0aW5nc19vcl9kZWZhdWx0KCkgLT4gQ29sbGVjdGlvblNldHRp
bmdzIHsKPiArICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgYml0IG9kZCwgYnV0IG5vdCBz
dXJlIGlmIHRoZXJlIGlzIGEgbXVjaCBuaWNlcgo+ICsgICAgICAgIC8vIHdheSB0byBkbyBpdC4g
V2Ugd2FudCB0byBmYWxsIGJhY2sgdG8gZGVmYXVsdHMgaWYKPiArICAgICAgICAvLyAgIC0gdGhl
IGNvbmZpZyBmaWxlIGRvZXMgbm90IGV4aXN0IChubyBlcnJvcnMgbG9nZ2VkKQo+ICsgICAgICAg
IC8vICAgLSBpZiBzZWN0aW9uIHR5cGUgaXMgd3Jvbmcgb3IgdGhlIGNvbmZpZyBmYWlsZWQgdG8g
cGFyc2UgKGxvZyBlcnJvcnMpCgpJdCBnZXRzIGEgYml0IHNob3J0ZXIgYW5kIGlmIHRoZSBgX2lt
cGxgIHJldHVybnMgYSByZXN1bHQrb3B0aW9uLgpUaGUgbWF0Y2ggYmVsb3cgY2FuIGp1c3QgYHJl
dHVybiBzZXR0aW5nc2AgaW4gdGhlIGZpcnN0IGNhc2UsIGFuZCBoYXZlCmFuIGBPayhOb25lKSA9
PiAoKSxgLCB0aGUgYEVycmAgb25seSBoYXMgdGhlIGxvZyBsaW5lIGFuZCB0aGUgZGVmYXVsdCBp
cwptb3ZlZCB0byBhZnRlciB0aGUgbWF0Y2guCgpBbHRlcm5hdGl2ZWx5IGEgYGRlZmF1bHQoKWAg
aGVscGVyIGNvdWxkIGFsc28gc2hvcnRlbiBpdAooYE9rKGRlZmF1bHQoKSlgIGluIHRoZSBgX2lt
cGxgIGFuZApgZ2V0X3NldHRpbmdzX2ltcGwoKS51bndyYXBfb3JfZWxlc2UofGVycnwgeyBsb2co
ZXJyKTsgZGVmYXVsdCgpIH0pYCBpcwphbHNvIHNob3J0ZXIgOi0pCgo+ICsKPiArICAgICAgICBm
biBnZXRfc2V0dGluZ3NfaW1wbCgpIC0+IFJlc3VsdDxDb2xsZWN0aW9uU2V0dGluZ3MsIEVycm9y
PiB7Cj4gKyAgICAgICAgICAgIGxldCAoY29uZmlnLCBfKSA9IHBkbV9jb25maWc6Om1ldHJpY19j
b2xsZWN0aW9uOjpjb25maWcoKT87Cj4gKwo+ICsgICAgICAgICAgICBsZXQgYWxsX3NlY3Rpb25z
OiBWZWM8Q29sbGVjdGlvblNldHRpbmdzPiA9Cj4gKyAgICAgICAgICAgICAgICBjb25maWcuY29u
dmVydF90b190eXBlZF9hcnJheShDT0xMRUNUSU9OX1NFVFRJTkdTX1RZUEUpPzsKPiArCj4gKyAg
ICAgICAgICAgIGZvciBzZWN0aW9uIGluIGFsbF9zZWN0aW9ucyB7Cj4gKyAgICAgICAgICAgICAg
ICBpZiBzZWN0aW9uLmlkID09ICJkZWZhdWx0IiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE9rKHNlY3Rpb24pOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9Cj4g
Kwo+ICsgICAgICAgICAgICBPayhDb2xsZWN0aW9uU2V0dGluZ3Mgewo+ICsgICAgICAgICAgICAg
ICAgaWQ6ICJkZWZhdWx0Ii5pbnRvKCksCj4gKyAgICAgICAgICAgICAgICAuLkRlZmF1bHQ6OmRl
ZmF1bHQoKQo+ICsgICAgICAgICAgICB9KQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgbWF0
Y2ggZ2V0X3NldHRpbmdzX2ltcGwoKSB7Cj4gKyAgICAgICAgICAgIE9rKHNldHRpbmdzKSA9PiBz
ZXR0aW5ncywKPiArICAgICAgICAgICAgRXJyKGVycikgPT4gewo+ICsgICAgICAgICAgICAgICAg
bG9nOjplcnJvciEoImNvdWxkIG5vdCByZWFkIG1ldHJpYyBjb2xsZWN0aW9uIHNldHRpbmdzOiB7
ZXJyfSAtIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbmZpZyIpOwo+ICsKPiArICAgICAgICAg
ICAgICAgIENvbGxlY3Rpb25TZXR0aW5ncyB7Cj4gKyAgICAgICAgICAgICAgICAgICAgaWQ6ICJk
ZWZhdWx0Ii5pbnRvKCksCj4gKyAgICAgICAgICAgICAgICAgICAgLi5EZWZhdWx0OjpkZWZhdWx0
KCkKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiAr
ICAgIH0KPiArCj4gKyAgICAvLy8gU2V0IHVwIGEgW2B0b2tpbzo6dGltZTo6SW50ZXJ2YWxgXSBp
bnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBpbnRlcnZhbC4KPiArICAgIC8vLyBUaGUgdGltZXIg
d2lsbCBiZSBhbGlnbmVkLCBlLmcuIGFuIGludGVydmFsIG9mIGA2MGAgd2lsbCBsZXQgdGhlIHRp
bWVyCj4gKyAgICAvLy8gZmlyZSBhdCBtaW51dGUgYm91bmRhcmllcy4KPiArICAgIGZuIHNldHVw
X3RpbWVyKGludGVydmFsOiB1NjQpIC0+IEludGVydmFsIHsKPiArICAgICAgICBsZXQgbXV0IHRp
bWVyID0gdG9raW86OnRpbWU6OmludGVydmFsKER1cmF0aW9uOjpmcm9tX3NlY3MoaW50ZXJ2YWwp
KTsKPiArICAgICAgICBsZXQgZmlyc3RfcnVuID0gdGFza191dGlsczo6bmV4dF9hbGlnbmVkX2lu
c3RhbnQoaW50ZXJ2YWwpLmludG8oKTsKPiArICAgICAgICB0aW1lci5yZXNldF9hdChmaXJzdF9y
dW4pOwo+ICsKPiArICAgICAgICB0aW1lcgo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBDb252ZW5p
ZW5jZSBoZWxwZXIgdG8gbG9hZCBgcmVtb3RlLmNmZ2AsIGxvZ2dpbmcgdGhlIGVycm9yCj4gKyAg
ICAvLy8gYW5kIHJldHVybmluZyBgTm9uZWAgaWYgdGhlIGNvbmZpZyBjb3VsZCBub3QgYmUgcmVh
ZC4KPiArICAgIGZuIGxvYWRfcmVtb3RlX2NvbmZpZygpIC0+IE9wdGlvbjxTZWN0aW9uQ29uZmln
RGF0YTxSZW1vdGU+PiB7Cj4gKyAgICAgICAgbWF0Y2ggcGRtX2NvbmZpZzo6cmVtb3Rlczo6Y29u
ZmlnKCkgewo+ICsgICAgICAgICAgICBPaygocmVtb3RlcywgXykpID0+IFNvbWUocmVtb3Rlcyks
Cj4gKyAgICAgICAgICAgIEVycihlKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICBsb2c6OmVycm9y
ISgiZmFpbGVkIHRvIGNvbGxlY3QgbWV0cmljcywgY291bGQgbm90IHJlYWQgcmVtb3Rlcy5jZmc6
IHtlfSIpOwo+ICsgICAgICAgICAgICAgICAgTm9uZQo+ICsgICAgICAgICAgICB9Cj4gKyAgICAg
ICAgfQo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBGZXRjaCBtZXRyaWMgZGF0YSBmcm9tIGEgcHJv
dmlkZWQgbGlzdCBvZiByZW1vdGVzIGNvbmN1cnJlbnRseS4KPiArICAgIC8vLyBUaGUgbWF4aW11
bSBudW1iZXIgb2YgY29uY3VycmVudCBjb25uZWN0aW9ucyBpcyBkZXRlcm1pbmVkIGJ5Cj4gKyAg
ICAvLy8gYG1heF9jb25jdXJyZW50X2Nvbm5lY3Rpb25zYCBpbiB0aGUgW2BDb2xsZWN0aW9uU2V0
dGluZ3NgXQo+ICsgICAgLy8vIGluc3RhbmNlIGluIGBzZWxmYC4KPiArICAgIGFzeW5jIGZuIGZl
dGNoX3JlbW90ZXMoCj4gKyAgICAgICAgJm11dCBzZWxmLAo+ICsgICAgICAgIGNvbmZpZzogJlNl
Y3Rpb25Db25maWdEYXRhPFJlbW90ZT4sCj4gKyAgICAgICAgcmVtb3Rlc190b19mZXRjaDogJltT
dHJpbmddLAo+ICsgICAgKSB7Cj4gKyAgICAgICAgbGV0IHNlbWFwaG9yZSA9IEFyYzo6bmV3KFNl
bWFwaG9yZTo6bmV3KAo+ICsgICAgICAgICAgICBzZWxmLnNldHRpbmdzLm1heF9jb25jdXJyZW50
X2Nvbm5lY3Rpb25zX29yX2RlZmF1bHQoKSwKPiArICAgICAgICApKTsKPiArICAgICAgICBsZXQg
bXV0IGhhbmRsZXMgPSBWZWM6Om5ldygpOwoKTm90IHN1cmUgaG93ICJyb2J1c3QiIHRoZSBzcGF3
bmluZyBpcyB3cnQuIG9yZGVyaW5nIC0gYW5kIHRoaXMgZG9lc24ndApuZWVkIHRvIGhhcHBlbiBp
biB0aGlzIHBhdGNoICh1bmxlc3MgaXQncyBlYXN5KSwgYnV0IGEgZm9sbG93LXVwIGNvdWxkCnBy
b2JhYmx5IGNoYW5nZSB0aGlzIGludG8gYSB0b2tpbyBgSm9pblNldGAsIHRoYXQgd2F5IHRoZSBh
d2FpdC1sb29wCmJlbG93IGNhbiB1c2UgYC5qb2luX25leHQoKWAsIHNvIHRoYXQgZm9yIGV4YW1w
bGUgaWYgYW4gZWFybHkgdGFzawpoYXBwZW5zIHRvIGVuZCB1cCBmaW5pc2hpbmcgbGFzdCwgdGhl
IGxvb3Agc3RpbGwgY29sbGVjdHMgdGhlIHJlbWFpbmluZwpsb2dzIGluIGEgbW9yZSAidGVtcG9y
YWxseSBhY2N1cmF0ZSIgd2F5Li4uCgo+ICsKPiArICAgICAgICBmb3IgcmVtb3RlX25hbWUgaW4g
cmVtb3Rlc190b19mZXRjaCB7Cj4gKyAgICAgICAgICAgIGxldCBzdGFydF90aW1lID0gKnNlbGYu
bW9zdF9yZWNlbnRfdGltZXN0YW1wcy5nZXQocmVtb3RlX25hbWUpLnVud3JhcF9vcigmMCk7Cj4g
Kwo+ICsgICAgICAgICAgICAvLyB1bndyYXAgaXMgb2theSBoZXJlLCBhY3F1aXJlXyogd2lsbCBv
bmx5IGZhaWwgaWYgYGNsb3NlYCBoYXMgYmVlbgo+ICsgICAgICAgICAgICAvLyBjYWxsZWQgb24g
dGhlIHNlbWFwaG9yZS4KPiArICAgICAgICAgICAgbGV0IHBlcm1pdCA9IHNlbWFwaG9yZS5jbG9u
ZSgpLmFjcXVpcmVfb3duZWQoKS5hd2FpdC51bndyYXAoKTsKCl4gTml0OiB3aGVyZSBwb3NzaWJs
ZSwgSSBwcmVmZXIgYEFyYzo6Y2xvbmUoJnB0cilgIGp1c3QgZm9yIHRoZSBzYWtlIG9mCm5vdCBh
Y2NpZGVudGFsbHkgYC5jbG9uZSgpYGluZyBzb21ldGhpbmcgbGFyZ2UgYWZ0ZXIgbGF0ZXIgYSBy
ZWZhY3Rvcgp3aGVyZSB0aGUgY2xvbmVzIGFyZW4ndCBpbiB0aGUgcGF0Y2ggY29udGV4dCBsaW5l
cy4KCj4gKwo+ICsgICAgICAgICAgICBpZiBsZXQgU29tZShyZW1vdGUpID0gY29uZmlnLmdldChy
ZW1vdGVfbmFtZSkuY2xvbmVkKCkgewo+ICsgICAgICAgICAgICAgICAgbG9nOjpkZWJ1ZyEoImZl
dGNoaW5nIHJlbW90ZSAne30nIiwgcmVtb3RlLmlkKTsKPiArICAgICAgICAgICAgICAgIGxldCBo
YW5kbGUgPSB0b2tpbzo6c3Bhd24oU2VsZjo6ZmV0Y2hfc2luZ2xlX3JlbW90ZSgKPiArICAgICAg
ICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzLmNsb25lKCksCj4gKyAgICAgICAgICAgICAgICAg
ICAgcmVtb3RlLAo+ICsgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWUsCj4gKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5tZXRyaWNfZGF0YV90eC5jbG9uZSgpLAo+ICsgICAgICAgICAgICAg
ICAgICAgIHBlcm1pdCwKPiArICAgICAgICAgICAgICAgICkpOwo+ICsKPiArICAgICAgICAgICAg
ICAgIGhhbmRsZXMucHVzaCgocmVtb3RlX25hbWUuY2xvbmUoKSwgaGFuZGxlKSk7Cj4gKyAgICAg
ICAgICAgIH0KPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGZvciAocmVtb3RlX25hbWUsIGhh
bmRsZSkgaW4gaGFuZGxlcyB7Cj4gKyAgICAgICAgICAgIGxldCByZXMgPSBoYW5kbGUuYXdhaXQ7
Cj4gKwo+ICsgICAgICAgICAgICBtYXRjaCByZXMgewo+ICsgICAgICAgICAgICAgICAgT2soT2so
dHMpKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tb3N0X3JlY2VudF90aW1lc3Rh
bXBzCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC5pbnNlcnQocmVtb3RlX25hbWUudG9fc3Ry
aW5nKCksIHRzKTsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIE9rKEVy
cihlcnIpKSA9PiBsb2c6OmVycm9yISgiZmFpbGVkIHRvIGNvbGxlY3QgbWV0cmljcyBmb3Ige3Jl
bW90ZV9uYW1lfToge2Vycn0iKSwKPiArICAgICAgICAgICAgICAgIEVycihlcnIpID0+IHsKPiAr
ICAgICAgICAgICAgICAgICAgICBsb2c6OmVycm9yISgKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgImpvaW4gZXJyb3IgZm9yIG1ldHJpYyBjb2xsZWN0aW9uIHRhc2sgZm9yIHJlbW90ZSB7cmVt
b3RlX25hbWV9OiB7ZXJyfSIKPiArICAgICAgICAgICAgICAgICAgICApCj4gKyAgICAgICAgICAg
ICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAg
Ly8vIEZldGNoIGEgc2luZ2xlIHJlbW90ZS4KPiArICAgICNbdHJhY2luZzo6aW5zdHJ1bWVudChz
a2lwX2FsbCwgZmllbGRzKHJlbW90ZSA9IHJlbW90ZS5pZCksIG5hbWUgPSAibWV0cmljX2NvbGxl
Y3Rpb25fdGFzayIpXQo+ICsgICAgYXN5bmMgZm4gZmV0Y2hfc2luZ2xlX3JlbW90ZSgKPiArICAg
ICAgICBzZXR0aW5nczogQ29sbGVjdGlvblNldHRpbmdzLAo+ICsgICAgICAgIHJlbW90ZTogUmVt
b3RlLAo+ICsgICAgICAgIHN0YXJ0X3RpbWU6IGk2NCwKPiArICAgICAgICBzZW5kZXI6IFNlbmRl
cjxScmRTdG9yZVJlcXVlc3Q+LAo+ICsgICAgICAgIF9wZXJtaXQ6IE93bmVkU2VtYXBob3JlUGVy
bWl0LAo+ICsgICAgKSAtPiBSZXN1bHQ8aTY0LCBFcnJvcj4gewo+ICsgICAgICAgIFNlbGY6OnNs
ZWVwX2Zvcl9yYW5kb21fY29ubmVjdGlvbl9kZWxheSgmc2V0dGluZ3MpLmF3YWl0Owo+ICsKPiAr
ICAgICAgICBsZXQgbW9zdF9yZWNlbnRfdGltZXN0YW1wID0gbWF0Y2ggcmVtb3RlLnR5IHsKPiAr
ICAgICAgICAgICAgUmVtb3RlVHlwZTo6UHZlID0+IHsKPiArICAgICAgICAgICAgICAgIGxldCBj
bGllbnQgPSBjb25uZWN0aW9uOjptYWtlX3B2ZV9jbGllbnQoJnJlbW90ZSk/Owo+ICsgICAgICAg
ICAgICAgICAgbGV0IG1ldHJpY3MgPSBjbGllbnQKPiArICAgICAgICAgICAgICAgICAgICAuY2x1
c3Rlcl9tZXRyaWNzX2V4cG9ydChTb21lKHRydWUpLCBTb21lKGZhbHNlKSwgU29tZShzdGFydF90
aW1lKSkKPiArICAgICAgICAgICAgICAgICAgICAuYXdhaXQ/Owo+ICsKPiArICAgICAgICAgICAg
ICAgIGxldCBtb3N0X3JlY2VudCA9IG1ldHJpY3MuZGF0YS5pdGVyKCkuZm9sZCgwLCB8YWNjLCB4
fCBhY2MubWF4KHgudGltZXN0YW1wKSk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgc2VuZGVyCj4g
KyAgICAgICAgICAgICAgICAgICAgLnNlbmQoUnJkU3RvcmVSZXF1ZXN0OjpQdmUgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICByZW1vdGU6IHJlbW90ZS5pZC5jbG9uZSgpLAo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRyaWNzLAo+ICsgICAgICAgICAgICAgICAgICAgIH0pCj4gKyAg
ICAgICAgICAgICAgICAgICAgLmF3YWl0PzsKPiArCj4gKyAgICAgICAgICAgICAgICBtb3N0X3Jl
Y2VudAo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIFJlbW90ZVR5cGU6OlBicyA9PiB7
Cj4gKyAgICAgICAgICAgICAgICBsZXQgY2xpZW50ID0gY29ubmVjdGlvbjo6bWFrZV9wYnNfY2xp
ZW50KCZyZW1vdGUpPzsKPiArICAgICAgICAgICAgICAgIGxldCBtZXRyaWNzID0gY2xpZW50Lm1l
dHJpY3MoU29tZSh0cnVlKSwgU29tZShzdGFydF90aW1lKSkuYXdhaXQ/Owo+ICsKPiArICAgICAg
ICAgICAgICAgIGxldCBtb3N0X3JlY2VudCA9IG1ldHJpY3MuZGF0YS5pdGVyKCkuZm9sZCgwLCB8
YWNjLCB4fCBhY2MubWF4KHgudGltZXN0YW1wKSk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgc2Vu
ZGVyCj4gKyAgICAgICAgICAgICAgICAgICAgLnNlbmQoUnJkU3RvcmVSZXF1ZXN0OjpQYnMgewo+
ICsgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGU6IHJlbW90ZS5pZC5jbG9uZSgpLAo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLAo+ICsgICAgICAgICAgICAgICAgICAgIH0p
Cj4gKyAgICAgICAgICAgICAgICAgICAgLmF3YWl0PzsKPiArCj4gKyAgICAgICAgICAgICAgICBt
b3N0X3JlY2VudAo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAg
T2sobW9zdF9yZWNlbnRfdGltZXN0YW1wKQo+ICsgICAgfQo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Nl
cnZlci9zcmMvbWV0cmljX2NvbGxlY3Rpb24vbW9kLnJzIGIvc2VydmVyL3NyYy9tZXRyaWNfY29s
bGVjdGlvbi9tb2QucnMKPiBpbmRleCAwNmFkZTVmLi4wYWI2Njc4IDEwMDY0NAo+IC0tLSBhL3Nl
cnZlci9zcmMvbWV0cmljX2NvbGxlY3Rpb24vbW9kLnJzCj4gKysrIGIvc2VydmVyL3NyYy9tZXRy
aWNfY29sbGVjdGlvbi9tb2QucnMKPiBAQCAtMSwyMCArMSwxNyBAQAo+IC11c2Ugc3RkOjpjb2xs
ZWN0aW9uczo6SGFzaE1hcDsKPiAgdXNlIHN0ZDo6cGluOjpwaW47Cj4gK3VzZSBzdGQ6OnN5bmM6
Ok9uY2VMb2NrOwo+ICAKPiAtdXNlIGFueWhvdzo6RXJyb3I7Cj4gK3VzZSBhbnlob3c6OntiYWls
LCBFcnJvcn07Cj4gIHVzZSB0b2tpbzo6c3luYzo6bXBzYzo6e3NlbGYsIFNlbmRlcn07Cj4gIAo+
IC11c2UgcGRtX2FwaV90eXBlczo6cmVtb3Rlczo6UmVtb3RlVHlwZTsKPiAtCj4gLXVzZSBjcmF0
ZTo6e2Nvbm5lY3Rpb24sIHRhc2tfdXRpbHN9Owo+IC0KPiArbW9kIGNvbGxlY3Rpb25fdGFzazsK
PiAgcHViIG1vZCBycmRfY2FjaGU7Cj4gIG1vZCBycmRfdGFzazsKPiAgcHViIG1vZCB0b3BfZW50
aXRpZXM7Cj4gIAo+IC11c2UgcnJkX3Rhc2s6OlJyZFN0b3JlUmVxdWVzdDsKPiArdXNlIGNvbGxl
Y3Rpb25fdGFzazo6e0NvbnRyb2xNc2csIE1ldHJpY0NvbGxlY3Rpb25UYXNrfTsKPiAgCj4gLWNv
bnN0IENPTExFQ1RJT05fSU5URVJWQUw6IHU2NCA9IDYwOwo+ICtzdGF0aWMgQ09OVFJPTF9NRVNT
QUdFX1RYOiBPbmNlTG9jazxTZW5kZXI8Q29udHJvbE1zZz4+ID0gT25jZUxvY2s6Om5ldygpOwo+
ICAKPiAgLy8vIEluaXRpYWxpemUgdGhlIFJSRCBjYWNoZQo+ICBwdWIgZm4gaW5pdCgpIC0+IFJl
c3VsdDwoKSwgRXJyb3I+IHsKPiBAQCAtMjQsODkgKzIxLDU2IEBAIHB1YiBmbiBpbml0KCkgLT4g
UmVzdWx0PCgpLCBFcnJvcj4gewo+ICB9Cj4gIAo+ICAvLy8gU3RhcnQgdGhlIG1ldHJpYyBjb2xs
ZWN0aW9uIHRhc2suCj4gLXB1YiBmbiBzdGFydF90YXNrKCkgewo+IC0gICAgbGV0ICh0eCwgcngp
ID0gbXBzYzo6Y2hhbm5lbCgxMjgpOwo+ICtwdWIgZm4gc3RhcnRfdGFzaygpIC0+IFJlc3VsdDwo
KSwgRXJyb3I+IHsKPiArICAgIGxldCAobWV0cmljX2RhdGFfdHgsIG1ldHJpY19kYXRhX3J4KSA9
IG1wc2M6OmNoYW5uZWwoMTI4KTsKPiArCj4gKyAgICBsZXQgKHRyaWdnZXJfY29sbGVjdGlvbl90
eCwgdHJpZ2dlcl9jb2xsZWN0aW9uX3J4KSA9IG1wc2M6OmNoYW5uZWwoMTI4KTsKPiArICAgIGlm
IENPTlRST0xfTUVTU0FHRV9UWC5zZXQodHJpZ2dlcl9jb2xsZWN0aW9uX3R4KS5pc19lcnIoKSB7
Cj4gKyAgICAgICAgYmFpbCEoImNvbnRyb2wgbWVzc2FnZSBzZW5kZXIgYWxyZWFkIHNldCIpOwo+
ICsgICAgfQo+ICAKPiAgICAgIHRva2lvOjpzcGF3bihhc3luYyBtb3ZlIHsKPiAtICAgICAgICBs
ZXQgdGFza19zY2hlZHVsZXIgPSBwaW4hKG1ldHJpY19jb2xsZWN0aW9uX3Rhc2sodHgpKTsKPiAr
ICAgICAgICBsZXQgbWV0cmljX2NvbGxlY3Rpb25fdGFza19mdXR1cmUgPSBwaW4hKGFzeW5jIG1v
dmUgewo+ICsgICAgICAgICAgICBsZXQgbXV0IHRhc2sgPQo+ICsgICAgICAgICAgICAgICAgTWV0
cmljQ29sbGVjdGlvblRhc2s6Om5ldyhtZXRyaWNfZGF0YV90eCwgdHJpZ2dlcl9jb2xsZWN0aW9u
X3J4KS51bndyYXAoKTsKPiArICAgICAgICAgICAgdGFzay5ydW4oKS5hd2FpdDsKCl4gbml0OiBj
b3VsZCBkcm9wIHRoZSBsZXQgYmluZGluZyAodGhlbiBpdCBJTU8gbGluZXdyYXBzIGEgYml0IG5p
Y2VyLAp0b28pCgo+ICsgICAgICAgIH0pOwo+ICsKPiAgICAgICAgICBsZXQgYWJvcnRfZnV0dXJl
ID0gcGluIShwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkpOwo+IC0gICAgICAgIGZ1
dHVyZXM6OmZ1dHVyZTo6c2VsZWN0KHRhc2tfc2NoZWR1bGVyLCBhYm9ydF9mdXR1cmUpLmF3YWl0
Owo+ICsgICAgICAgIGZ1dHVyZXM6OmZ1dHVyZTo6c2VsZWN0KG1ldHJpY19jb2xsZWN0aW9uX3Rh
c2tfZnV0dXJlLCBhYm9ydF9mdXR1cmUpLmF3YWl0Owo+ICAgICAgfSk7Cj4gIAo+ICAgICAgdG9r
aW86OnNwYXduKGFzeW5jIG1vdmUgewo+IC0gICAgICAgIGxldCB0YXNrX3NjaGVkdWxlciA9IHBp
biEocnJkX3Rhc2s6OnN0b3JlX2luX3JyZF90YXNrKHJ4KSk7Cj4gKyAgICAgICAgbGV0IHJyZF90
YXNrX2Z1dHVyZSA9IHBpbiEocnJkX3Rhc2s6OnN0b3JlX2luX3JyZF90YXNrKG1ldHJpY19kYXRh
X3J4KSk7Cj4gICAgICAgICAgbGV0IGFib3J0X2Z1dHVyZSA9IHBpbiEocHJveG1veF9kYWVtb246
OnNodXRkb3duX2Z1dHVyZSgpKTsKPiAtICAgICAgICBmdXR1cmVzOjpmdXR1cmU6OnNlbGVjdCh0
YXNrX3NjaGVkdWxlciwgYWJvcnRfZnV0dXJlKS5hd2FpdDsKPiArICAgICAgICBmdXR1cmVzOjpm
dXR1cmU6OnNlbGVjdChycmRfdGFza19mdXR1cmUsIGFib3J0X2Z1dHVyZSkuYXdhaXQ7Cj4gICAg
ICB9KTsKPiArCj4gKyAgICBPaygoKSkKPiAgfQo+ICAKPiAtYXN5bmMgZm4gbWV0cmljX2NvbGxl
Y3Rpb25fdGFzayhzZW5kZXI6IFNlbmRlcjxScmRTdG9yZVJlcXVlc3Q+KSAtPiBSZXN1bHQ8KCks
IEVycm9yPiB7Cj4gLSAgICBsZXQgbXV0IG1vc3RfcmVjZW50X3RpbWVzdGFtcHM6IEhhc2hNYXA8
U3RyaW5nLCBpNjQ+ID0gSGFzaE1hcDo6bmV3KCk7Cj4gLQo+IC0gICAgbG9vcCB7Cj4gLSAgICAg
ICAgbGV0IGRlbGF5X3RhcmdldCA9IHRhc2tfdXRpbHM6Om5leHRfYWxpZ25lZF9pbnN0YW50KENP
TExFQ1RJT05fSU5URVJWQUwpOwo+IC0gICAgICAgIHRva2lvOjp0aW1lOjpzbGVlcF91bnRpbCh0
b2tpbzo6dGltZTo6SW5zdGFudDo6ZnJvbV9zdGQoZGVsYXlfdGFyZ2V0KSkuYXdhaXQ7Cj4gLQo+
IC0gICAgICAgIGxldCByZW1vdGVzID0gbWF0Y2ggcGRtX2NvbmZpZzo6cmVtb3Rlczo6Y29uZmln
KCkgewo+IC0gICAgICAgICAgICBPaygocmVtb3RlcywgXykpID0+IHJlbW90ZXMsCj4gLSAgICAg
ICAgICAgIEVycihlKSA9PiB7Cj4gLSAgICAgICAgICAgICAgICBsb2c6OmVycm9yISgiZmFpbGVk
IHRvIGNvbGxlY3QgbWV0cmljcywgY291bGQgbm90IHJlYWQgcmVtb3Rlcy5jZmc6IHtlfSIpOwo+
IC0gICAgICAgICAgICAgICAgY29udGludWU7Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9
Owo+IC0KPiAtICAgICAgICBmb3IgKHJlbW90ZV9uYW1lLCByZW1vdGUpIGluICZyZW1vdGVzLnNl
Y3Rpb25zIHsKPiAtICAgICAgICAgICAgbGV0IHN0YXJ0X3RpbWUgPSAqbW9zdF9yZWNlbnRfdGlt
ZXN0YW1wcy5nZXQocmVtb3RlX25hbWUpLnVud3JhcF9vcigmMCk7Cj4gLSAgICAgICAgICAgIGxl
dCByZW1vdGVfbmFtZV9jbG9uZSA9IHJlbW90ZV9uYW1lLmNsb25lKCk7Cj4gLQo+IC0gICAgICAg
ICAgICBsZXQgcmVzID0gYXN5bmMgewo+IC0gICAgICAgICAgICAgICAgbGV0IG1vc3RfcmVjZW50
X3RpbWVzdGFtcCA9IG1hdGNoIHJlbW90ZS50eSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgUmVt
b3RlVHlwZTo6UHZlID0+IHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsaWVudCA9
IGNvbm5lY3Rpb246Om1ha2VfcHZlX2NsaWVudChyZW1vdGUpPzsKPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgbGV0IG1ldHJpY3MgPSBjbGllbnQKPiAtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5jbHVzdGVyX21ldHJpY3NfZXhwb3J0KFNvbWUodHJ1ZSksIFNvbWUoZmFsc2UpLCBTb21l
KHN0YXJ0X3RpbWUpKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF3YWl0PzsKPiAt
Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb3N0X3JlY2VudCA9Cj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLmRhdGEuaXRlcigpLmZvbGQoMCwgfGFjYywgeHwg
YWNjLm1heCh4LnRpbWVzdGFtcCkpOwo+IC0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgc2Vu
ZGVyCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2VuZChScmRTdG9yZVJlcXVlc3Q6
OlB2ZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlOiByZW1vdGVf
bmFtZV9jbG9uZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLAo+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5hd2FpdD87Cj4gLQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBPazo6PGk2NCwg
RXJyb3I+KG1vc3RfcmVjZW50KQo+IC0gICAgICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAg
ICAgICAgICAgICBSZW1vdGVUeXBlOjpQYnMgPT4gewo+IC0gICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgY2xpZW50ID0gY29ubmVjdGlvbjo6bWFrZV9wYnNfY2xpZW50KHJlbW90ZSk/Owo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWV0cmljcyA9IGNsaWVudC5tZXRyaWNzKFNvbWUo
dHJ1ZSksIFNvbWUoc3RhcnRfdGltZSkpLmF3YWl0PzsKPiAtCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCBtb3N0X3JlY2VudCA9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRyaWNzLmRhdGEuaXRlcigpLmZvbGQoMCwgfGFjYywgeHwgYWNjLm1heCh4LnRpbWVzdGFtcCkp
Owo+IC0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgc2VuZGVyCj4gLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuc2VuZChScmRTdG9yZVJlcXVlc3Q6OlBicyB7Cj4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVtb3RlOiByZW1vdGVfbmFtZV9jbG9uZSwKPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLAo+IC0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hd2FpdD87Cj4gLQo+
IC0gICAgICAgICAgICAgICAgICAgICAgICBPazo6PGk2NCwgRXJyb3I+KG1vc3RfcmVjZW50KQo+
IC0gICAgICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgICAgIH0/Owo+IC0KPiAtICAg
ICAgICAgICAgICAgIE9rOjo8aTY0LCBFcnJvcj4obW9zdF9yZWNlbnRfdGltZXN0YW1wKQo+IC0g
ICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIC5hd2FpdDsKPiAtCj4gLSAgICAgICAgICAgIG1h
dGNoIHJlcyB7Cj4gLSAgICAgICAgICAgICAgICBPayh0cykgPT4gewo+IC0gICAgICAgICAgICAg
ICAgICAgIG1vc3RfcmVjZW50X3RpbWVzdGFtcHMuaW5zZXJ0KHJlbW90ZV9uYW1lLnRvX3N0cmlu
ZygpLCB0cyk7Cj4gLSAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgICBFcnIoZXJy
KSA9PiBsb2c6OmVycm9yISgiZmFpbGVkIHRvIGNvbGxlY3QgbWV0cmljcyBmb3Ige3JlbW90ZV9u
YW1lfToge2Vycn0iKSwKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgIH0KPiArLy8vIFNjaGVk
dWxlIG1ldHJpYyBjb2xsZWN0aW9uIGZvciBhIGdpdmVuIHJlbW90ZSBhcyBzb29uIGFzIHBvc3Np
YmxlLgo+ICsvLy8KPiArLy8vIEhhcyBubyBlZmZlY3QgaWYgdGhlIHR4IGVuZCBvZiB0aGUgY2hh
bm5lbCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0Lgo+ICsvLy8gUmV0dXJucyBhbiBlcnJv
ciBpZiB0aGUgbXBzYyBjaGFubmVsIGhhcyBiZWVuIGNsb3NlZCBhbHJlYWR5Lgo+ICtwdWIgYXN5
bmMgZm4gdHJpZ2dlcl9tZXRyaWNfY29sbGVjdGlvbl9mb3JfcmVtb3RlKHJlbW90ZTogJnN0cikg
LT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICsgICAgaWYgbGV0IFNvbWUoc2VuZGVyKSA9IENPTlRS
T0xfTUVTU0FHRV9UWC5nZXQoKSB7CgpeIG5pdDogVGhpcyBpcyB0aGUgbm9ybWFsIGNhc2UgKGdp
dmVuIHRoYXQgYENPTlRST0xfTUVTU0FHRV9UWGAgZ2V0cwppbml0aWFsaXplZCBpbiBgc3Rhcmtf
dGFzaygpYCBvbiBzdGFydHVwLCBzbyBJTU8gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZQpjb3VsZCBh
bHJlYWR5IGJlIGBTdHJpbmdgIHRvIGFsbG93IHRoZSBjYWxsZXIgdG8gbW92ZSBpdCAob3IgYGlt
cGwKSW50bzxTdHJpbmc+YCBmb3IgdGhpcyB0byBiZSBpbXBsaWNpdCkgLSBib3RoIGNhbGxlcnMg
Y291bGQgY3VycmVudGx5Cm1vdmUgaXQgOy0pCgo+ICsgICAgICAgIHNlbmRlcgo+ICsgICAgICAg
ICAgICAuc2VuZChDb250cm9sTXNnOjpDb2xsZWN0U2luZ2xlUmVtb3RlKHJlbW90ZS5pbnRvKCkp
KQo+ICsgICAgICAgICAgICAuYXdhaXQ/Owo+ICAgICAgfQo+ICsKPiArICAgIE9rKCgpKQo+ICt9
Cj4gKwo+ICsvLy8gU2NoZWR1bGUgbWV0cmljIGNvbGxlY3Rpb24gZm9yIGFsbCByZW1vdGVzIGFz
IHNvb24gYXMgcG9zc2libGUuCj4gKy8vLwo+ICsvLy8gSGFzIG5vIGVmZmVjdCBpZiB0aGUgdHgg
ZW5kIG9mIHRoZSBjaGFubmVsIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuCj4gKy8vLyBS
ZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBtcHNjIGNoYW5uZWwgaGFzIGJlZW4gY2xvc2VkIGFscmVh
ZHkuCj4gK3B1YiBhc3luYyBmbiB0cmlnZ2VyX21ldHJpY19jb2xsZWN0aW9uKCkgLT4gUmVzdWx0
PCgpLCBFcnJvcj4gewo+ICsgICAgaWYgbGV0IFNvbWUoc2VuZGVyKSA9IENPTlRST0xfTUVTU0FH
RV9UWC5nZXQoKSB7Cj4gKyAgICAgICAgc2VuZGVyLnNlbmQoQ29udHJvbE1zZzo6Q29sbGVjdEFs
bFJlbW90ZXMpLmF3YWl0PzsKPiArICAgIH0KPiArCj4gKyAgICBPaygoKSkKPiAgfQo+IC0tIAo+
IDIuMzkuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CnBkbS1kZXZlbCBtYWlsaW5nIGxpc3QKcGRtLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBz
Oi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3BkbS1kZXZlbAo=