bug#72695: CC Mode 5.35.2 (C++//l); c++-mode misindents 'if constexpr' inside lambdas

Alan Mackenzie <[email protected]> Fri, 20 Sep 2024 14:59:01 +0000
Newsgroups gmane.emacs.cc-mode.general
Message-ID <[email protected]>
SGVsbG8sIEFyc2VuLgoKT24gVHVlLCBTZXAgMTAsIDIwMjQgYXQgMDE6MDI6NTAgKzAyMDAsIEFy
c2VuIEFyc2Vub3ZpxIcgd3JvdGU6Cj4gSGkgQWxhbiwKCj4gQWxhbiBNYWNrZW56aWUgPGFjbUBt
dWMuZGU+IHdyaXRlczoKClsgLi4uLiBdCgpJJ20gaG9waW5nIEkndmUgbm93IGZpeGVkIHRoaXMg
YnVnIChzZWUgcGF0Y2ggYmVsb3cpLgoKWyAuLi4uIF0KCj4gPj4gSSd2ZSB0cmllZCBpdCBvbiBh
IGZldyBleGFtcGxlcyBJIGNhbWUgdXAgd2l0aCwgaXQgc2VlbXMgdG8gd29yayB3ZWxsIGluCj4g
Pj4gJ3JlYWwtbGlmZScgY29kZS4KCj4gPj4gSSd2ZSBhbHNvIGNvbnN0cnVjdGVkIHRoZSBmb2xs
b3dpbmcgInN0cmVzcyB0ZXN0IiB3aGljaCBpbmNsdWRlcyAoYWxtb3N0Cj4gPj4gLSBzZWUgYmVs
b3cpIGFsbCB0aGUgcHJvZHVjdGlvbnMgdGhhdCBjYW4gZXhpc3QgaW4gYSBsYW1iZGEgZnVuY3Rp
b24sIGluCj4gPj4gdGhlIHNhbWUgY29udGV4dCBhcyB0aGUgb3JpZ2luYWwgYmFkIGV4YW1wbGU6
Cgo+ID4gVGhhbmtzLCB0aGlzIHdhcyB2ZXJ5IHVzZWZ1bC4gIEFzIGFuIGltcG9ydGFudCBxdWVz
dGlvbiwgY2FuIGFuZCBhbGlnbmFzCj4gPiBzcGVjaWZpZXIgZXhpc3QgaW5zaWRlIGEgbGFtYmRh
IGV4cHJlc3Npb24/ICBJZiBzbywgd2hhdCBkb2VzIGl0IG1lYW4/Cj4gPiBNeSBuZXcgcGF0Y2gg
YmVsb3cgZG9lc24ndCAoeWV0KSBoYW5kbGUgaXQuCgo+IEl0IGNlcnRhaW5seSBjYW4gaW4gdGhl
IGJvZHkuICBJIHByZXN1bWUgeW91IG1lYW4gaW4gdGhlCj4gbGVhZGVyL2RlY2xhcmF0b3Ivd2hh
dGhhdmV5b3UgaG93ZXZlcjsgaW4gdGhhdCBjYXNlLCB5ZXMsIGFzIHBhcnQgb2YgdGhlCj4gYXR0
cmlidXRlLXNwZWNpZmllci1zZXEgaW4gbGFtYmRhLWV4cHJlc3Npb24gYW5kIGxhbWJkYS1kZWNs
YXJhdG9yLCBhbmQKPiBpdHMgbWVhbmluZyBkZXBlbmRzIG9uIHRoZSBwb3NpdGlvbiAoc2VlCj4g
aHR0cHM6Ly9lZWwuaXMvYysrZHJhZnQvZXhwci5wcmltLmxhbWJkYSNjbG9zdXJlLTYpLgoKVGhh
bmtzLCBJJ3ZlIG5vdyBmb3VuZCB0aGUgcGxhY2UgaW4gdGhlIEMrKyBzeW50YXggd2hlcmUgYWxp
Z25hcyBjYW4gZ28KaW4gYSBsYW1iZGEgY29uc3RydWN0LiAgSXQgaXMgdGhlIG9ubHkgc3BlY2lm
aWVyIHdoaWNoIG1heSBnbyBpbiB0aGVzZQpwbGFjZXMsIGFsdGhvdWdoIGFueSBudW1iZXIgb2Yg
YXR0cmlidXRlcyBhcmUgYWxsb3dlZC4gIChBcyBhIG1hdHRlciBvZgppbnRlcmVzdCwgYXR0cmli
dXRlcyBpbiBDQyBNb2RlIGFyZSB0cmVhdGVkIGFzIHN5bnRhY3RpYyB3aGl0ZXNwYWNlLikKClsg
Li4uLiBdCgo+ID4+ICAgdm9pZAo+ID4+ICAgZGVmICgpCj4gPj4gICB7Cj4gPj4gICAgIGF1dG8g
Zm9vID0gWyYsCj4gPj4gICAJICAgICAgYSwKPiA+PiAgIAkgICAgICBiID0gMTIzLAo+ID4+ICAg
CSAgICAgIGMsCj4gPj4gICAJICAgICAgLi4uZCwKPiA+PiAgIAkgICAgICAuLi5lID0gMTIzCj4g
Pj4gICAJICAgICAgXQo+ID4+ICAgICAgIDx0eXBlbmFtZSBULAo+ID4+ICAgICAgICB0eXBlbmFt
ZSBTPgo+ID4+ICAgICAgIC8vYWxpZ25hcyAoMTI4KQo+ID4+ICAgICAgIFtbZ251Ojpub3JldHVy
bl1dCj4gPj4gICAgICAgcmVxdWlyZXMgc29tZV9jb25jZXB0PFQ+Cj4gPj4gICAgICAgKGludCBh
LAo+ID4+ICAgICAgICBpbnQgYiwKPiA+PiAgICAgICAgaW50IGMpCj4gPj4gICAgICAgY29uc3Rl
dmFsCj4gPj4gICAgICAgY29uc3RleHByCj4gPj4gICAgICAgbXV0YWJsZQo+ID4+ICAgICAgIHN0
YXRpYwo+ID4+ICAgICAgIC8vbm9leGNlcHQodHJ1ZSkKPiA+PiAgICAgICBbW2dudTo6cGFja2Vk
XV0KPiA+PiAgICAgICAvL2FsaWduYXMgKDEyOCkKPiA+PiAgICAgICAvLy0+Cj4gPj4gICAgICAg
Ly9pbnQKPiA+PiAgICAgICAvL3JlcXVpcmVzIChzdGQ6OnNhbWVfYXMgPGRlY2x0eXBlIChhKSwg
aW50PikKPiA+PiAgICAgICAgIHsKPiA+PiAgICAgICBpZiBjb25zdGV4cHIgKHRydWUpCj4gPj4g
ICAgICAgICA7Cj4gPj4gICAgIH0KPiA+PiAgIH0KClF1ZXN0aW9uOiBJcyB0aGF0IGZpcnN0IChj
b21tZW50ZWQgb3V0KSBhbGlnbmFzIGNvcnJlY3Qgd2hlcmUgaXQgaXM/ICBNeQpyZWFkaW5nIG9m
IHRoZSB2ZXJzaW9uIG9mIHRoZSBzdGFuZGFyZCBzdWdnZXN0cyB0aGF0IHRoZSBhbGlnbmFzICgx
MjgpCnNob3VsZCBjb21lIF9hZnRlcl8gdGhlIHJlcXVpcmVzIHNvbWVfY29uY2VwdDxUPiwgbm90
IGJlZm9yZSBpdC4KCj4gPiBIZXJlJ3MgYSBtb2RpZmllZCB2ZXJzaW9uIHdoaWNoIGlzIG5vdyBm
dWxseSBoYW5kbGVkIChhcyBmYXIgYXMgaXQgZ29lcyk6CgpBbmQgaGVyZSdzIGEgZnVydGhlciBt
b2RpZmllZCB2ZXJzaW9uLCB3aGljaCBteSBwYXRjaCAoYmVsb3cpIG5vdwpoYW5kbGVzOgoKdm9p
ZApkZWYgKCkKewogICAgICBhdXRvIGZvbyA9IFsmLAogICAgICAgICAgICAgIGEsCiAgICAgICAg
ICAgICAgYiA9IDEyMywKICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgIC4uLmQsCiAgICAg
ICAgICAgICAgLi4uZSA9IDEyMwogICAgICBdCiAgICAgICAgPHR5cGVuYW1lIFQsCiAgICAgICAg
IHR5cGVuYW1lIFM+Ci8vYWxpZ25hcyAoMTI4KQogICAgICAgIFtbZ251Ojpub3JldHVybl1dCiAg
ICAgICAgcmVxdWlyZXMgc29tZV9jb25jZXB0PFQ+CiAgICAgICAgYWxpZ25hcyAoMTI4KQogICAg
ICAgIChpbnQgYSwKICAgICAgICAgaW50IGIsCiAgICAgICAgIGludCBjKQogICAgICAgIGNvbnN0
ZXZhbAogICAgICAgIGNvbnN0ZXhwcgogICAgICAgIG11dGFibGUKICAgICAgICBzdGF0aWMKICAg
ICAgICBub2V4Y2VwdCh0cnVlKQogICAgICAgIFtbZ251OjpwYWNrZWRdXQogICAgICAgIGFsaWdu
YXMgKDEyOCkKICAgICAgICAtPiBpbnQKICAgICAgICByZXF1aXJlcyAoc3RkOjpzYW1lX2FzIDxk
ZWNsdHlwZSAoYSksIGludD4pCiAgICAgIHsKICAgICAgICBpZiBjb25zdGV4cHIgKHRydWUpCiAg
ICAgICAgICA7CiAgICAgIH0KfQoKWyAuLi4uIF0KCj4gPj4gSG9wZWZ1bGx5IHRoZXNlIGV4YW1w
bGVzIGhlbHAuCgo+ID4gVmVyeSBtdWNoIHNvLgoKPiA+PiBQbGVhc2UgYWxzbyBub3RlIHRoYXQg
aW4gYSBmZXcgcGxhY2VzIChzdWNoIGFzIGFsaWduYXMsIHRoZSBub2V4Y2VwdAo+ID4+IHNwZWNp
ZmllciwgUkhTIG9mIGFzc2lnbm1lbnRzIGluIHRoZSBjYXB0dXJlIGxpc3QpIG5lYXItYXJiaXRy
YXJ5Cj4gPj4gZXhwcmVzc2lvbnMgY2FuIGFwcGVhciwgYW5kIHRoYXQgcmVxdWlyZXMgY2xhdXNl
IGhhdmUgc3BlY2lhbCBib29sZWFuCj4gPj4gZXhwcmVzc2lvbiBzeW50YXggKHNlZQo+ID4+IGh0
dHBzOi8vZWVsLmlzL2MrK2RyYWZ0L3RlbXAucHJlI250OnJlcXVpcmVzLWNsYXVzZSkuCgo+ID4g
SSdtIGFmcmFpZCBJIGhhdmVuJ3QgbG9va2VkIGF0IHRoaXMsIHlldC4KCkkgaGF2ZSBub3cuICA6
LSkKClsgLi4uLiBdCgo+ID4gSGVyZSdzIGFuIHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgcGF0
Y2gsIHdoaWNoIHNob3VsZCB3b3JrIGJldHRlciB0aGFuCj4gPiB0aGUgbGFzdCB2ZXJzaW9uLiAg
UGxlYXNlIGRvIHRoZSB1c3VhbCB3aXRoIGl0LCBhbmQgbGV0IG1lIGtub3cgaG93IGl0Cj4gPiBn
b2VzLiAgVGhhbmtzIQoKQW5kIGhlcmUncyB3aGF0IEknbSBob3Bpbmcgd2lsbCBiZSB0aGUgZmlu
YWwgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggdG8gZml4CnRoaXMgYnVnLiAgQWdhaW4sIGNvdWxkIHlv
dSB0cnkgaXQgb3V0IChvbiByZWFsIGNvZGUgYXMgd2VsbCBhcyB0ZXN0CmNvZGUpLCBhbmQgbGV0
IG1lIGtub3cgaG93IHdlbGwgaXQgd29ya3MuICBJdCBzaG91bGQgYXBwbHkgY2xlYW5seSB0byB0
aGUKRW1hY3MgbWFzdGVyIGJyYW5jaC4gIFRoYW5rcyEKCkV2ZW4gaXQgdGhlIHBhdGNoIGlzIGdv
b2QsIEknbSBub3QgcXVpdGUgcmVhZHkgdG8gY29tbWl0IGl0IHlldCwgc2luY2UgSQpuZWVkIHRv
IGFtZW5kIHRoZSB0ZXN0IHN1aXRlIHNvbWV3aGF0LgoKCmRpZmYgLXIgNDhhZDY2MWEyZDdkIGNj
LWFsaWduLmVsCi0tLSBhL2NjLWFsaWduLmVsCU1vbiBKdWwgMjIgMTI6MDk6MzQgMjAyNCArMDAw
MAorKysgYi9jYy1hbGlnbi5lbAlGcmkgU2VwIDIwIDE0OjE1OjE3IDIwMjQgKzAwMDAKQEAgLTk1
LDcgKzk1LDkgQEAKICAgICAgIChjLWJhY2t3YXJkLXN5bnRhY3RpYy13cyAoYy1sYW5nZWxlbS1w
b3MgbGFuZ2VsZW0pKQogICAgICAgKGlmIChhbmQgKG1lbXEgKGNoYXItYmVmb3JlKSAnKD99ID8s
KSkKIAkgICAgICAgKG5vdCAoYW5kIGMtb3ZlcmxvYWRhYmxlLW9wZXJhdG9ycy1yZWdleHAKLQkJ
CSAoYy1hZnRlci1zcGVjaWFsLW9wZXJhdG9yLWlkKSkpKQorCQkJIChjLWFmdGVyLXNwZWNpYWwt
b3BlcmF0b3ItaWQpKSkKKwkgICAgICAgKHByb2duIChnb3RvLWNoYXIgKGMtbGFuZ2VsZW0tcG9z
IGxhbmdlbGVtKSkKKwkJICAgICAgKG5vdCAobG9va2luZy1hdCBjLXJlcXVpcmVzLWNsYXVzZS1r
ZXkpKSkpCiAJICBjLWJhc2ljLW9mZnNldCkpKSkKIAogKGRlZnVuIGMtbGluZXVwLWdudS1ERUZV
Ti1pbnRyby1jb250IChsYW5nZWxlbSkKZGlmZiAtciA0OGFkNjYxYTJkN2QgY2MtZW5naW5lLmVs
Ci0tLSBhL2NjLWVuZ2luZS5lbAlNb24gSnVsIDIyIDEyOjA5OjM0IDIwMjQgKzAwMDAKKysrIGIv
Y2MtZW5naW5lLmVsCUZyaSBTZXAgMjAgMTQ6MTU6MTcgMjAyNCArMDAwMApAQCAtODY5NCwxMCAr
ODY5NCw5IEBACiAJKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpCiAJKGMtZm9yd2FyZC1pZC1jb21t
YS1saXN0IHJlZiB0IHQpKQogCi0gICAgICAgKChhbmQgKGMta2V5d29yZC1tZW1iZXIga3dkLXN5
bSAnYy1wYXJlbi1hbnkta3dkcykKKyAgICAgICAoKGFuZCAoYy1rZXl3b3JkLW1lbWJlciBrd2Qt
c3ltICdjLXBhcmVuLXR5cGUta3dkcykKIAkgICAgIChlcSAoY2hhci1hZnRlcikgP1woKSkKIAk7
OyBUaGVyZSdzIGFuIG9wZW4gcGFyZW4gYWZ0ZXIgYSBrZXl3b3JkIGluIGBjLXBhcmVuLWFueS1r
d2RzJy4KLQogCShmb3J3YXJkLWNoYXIpCiAJKHdoZW4gKGFuZCAoc2V0cSBwb3MgKGMtdXAtbGlz
dC1mb3J3YXJkKSkKIAkJICAgKGVxIChjaGFyLWJlZm9yZSBwb3MpID9cKSkpCkBAIC04NzE1LDYg
Kzg3MTQsMTIgQEAKIAkgIChzZXRxIHNhZmUtcG9zIChwb2ludCkpKQogCSAgKGMtZm9yd2FyZC1z
eW50YWN0aWMtd3MpKQogCisgICAgICAgKChjLWtleXdvcmQtbWVtYmVyIGt3ZC1zeW0gJ2MtcGFy
ZW4tbm9udHlwZS1rd2RzKQorCSh3aGVuIChhbmQgKGVxIChjaGFyLWFmdGVyKSA/XCgpCisJCSAg
IChjLWdvLWxpc3QtZm9yd2FyZCkpCisJICAoc2V0cSBzYWZlLXBvcyAocG9pbnQpKQorCSAgKGMt
Zm9yd2FyZC1zeW50YWN0aWMtd3MpKSkKKwogICAgICAgICgoYW5kIChjLWtleXdvcmQtbWVtYmVy
IGt3ZC1zeW0gJ2MtPD4tc2V4cC1rd2RzKQogCSAgICAgKGVxIChjaGFyLWFmdGVyKSA/PCkKIAkg
ICAgIChjLWZvcndhcmQtPD4tYXJnbGlzdCAoYy1rZXl3b3JkLW1lbWJlciBrd2Qtc3ltICdjLTw+
LXR5cGUta3dkcykpKQpAQCAtOTkxNCw5ICs5OTE5LDYgQEAKICAgOzsKICAgOzsgTm90ZSB0aGF0
IHRoaXMgZnVuY3Rpb24gaXMgaW5jb21wbGV0ZSwgaGFuZGxpbmcgb25seSB0aG9zZSBjYXNlcyBl
eHBlY3RlZAogICA7OyB0byBiZSBjb21tb24gaW4gYSBDKysyMCByZXF1aXJlcyBjbGF1c2UuCi0g
IDs7Ci0gIDs7IE5vdGUgYWxzbyB0aGF0ICguLi4pIGlzIG5vdCByZWNvZ25pemVkIGFzIGEgcHJp
bWFyeSBleHByZXNzaW9uIGlmIHRoZQotICA7OyBuZXh0IHRva2VuIGlzIGFuIG9wZW4gYnJhY2Uu
CiAgIChsZXQgKChoZXJlIChwb2ludCkpCiAJKGMtcmVzdHJpY3RlZC08Pi1hcmdsaXN0cyB0KQog
CShjLXBhcnNlLWFuZC1tYXJrdXAtPD4tYXJnbGlzdHMgbmlsKQpAQCAtOTkyOSwxMiArOTkzMSwx
MCBAQAogCSAoKGVxIChjaGFyLWFmdGVyKSA/XCgpCiAJICAoYW5kIChjLWdvLWxpc3QtZm9yd2Fy
ZCAocG9pbnQpIGxpbWl0KQogCSAgICAgICAoZXEgKGNoYXItYmVmb3JlKSA/XCkpCi0JICAgICAg
IChsZXQgKChhZnRlci1wYXJlbiAocG9pbnQpKSkKLQkJIChjLWZvcndhcmQtc3ludGFjdGljLXdz
IGxpbWl0KQotCQkgKHByb2cxCi0JCSAgICAgKG5vdCAoZXEgKGNoYXItYWZ0ZXIpID97KSkKLQkJ
ICAgKHdoZW4gc3RvcC1hdC1lbmQKLQkJICAgICAoZ290by1jaGFyIGFmdGVyLXBhcmVuKSkpKSkp
CisJICAgICAgIChwcm9nbgorCQkgKHVubGVzcyBzdG9wLWF0LWVuZAorCQkgICAoYy1mb3J3YXJk
LXN5bnRhY3RpYy13cyBsaW1pdCkpCisJCSB0KSkpCiAJICgoYy1mb3J3YXJkLW92ZXItY29tcG91
bmQtaWRlbnRpZmllcikKIAkgIChsZXQgKChhZnRlci1pZCAocG9pbnQpKSkKIAkgICAgKGMtZm9y
d2FyZC1zeW50YWN0aWMtd3MgbGltaXQpCkBAIC05OTUzLDkgKzk5NTMsNyBAQAogCQkJICAoYy1m
b3J3YXJkLW92ZXItY29tcG91bmQtaWRlbnRpZmllcikKIAkJCShjLWZvcndhcmQtc3ludGFjdGlj
LXdzIGxpbWl0KSkpKSkpCiAJICAgIChnb3RvLWNoYXIgYWZ0ZXItaWQpKSkKLQkgKChhbmQKLQkg
ICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KSA7ICJyZXF1aXJlcyIKLQkg
ICAobm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKQorCSAoKGxvb2tpbmct
YXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkgOyAicmVxdWlyZXMiCiAJICAoZ290by1jaGFy
IChtYXRjaC1lbmQgMSkpCiAJICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW1pdCkKIAkgIChh
bmQKQEAgLTEwMjEwLDkgKzEwMjA4LDcgQEAKIAkJICAgKChsb29raW5nLWF0IGMtdHlwZS1kZWNs
LXN1ZmZpeC1rZXkpCiAJCSAgICAoY29uZAogCQkgICAgICgoc2F2ZS1tYXRjaC1kYXRhCi0JCQko
YW5kCi0JCQkgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJCSAobm90
IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkKKwkJCShsb29raW5nLWF0IGMt
cmVxdWlyZXMtY2xhdXNlLWtleSkpCiAJCSAgICAgIChjLWZvcndhcmQtYysrLXJlcXVpcmVzLWNs
YXVzZSkpCiAJCSAgICAgKChlcSAoY2hhci1hZnRlcikgP1woKQogCQkgICAgICAoaWYgKGMtZm9y
d2FyZC1kZWNsLWFyZ2xpc3Qgbm90LXRvcCBkZWNvcmF0ZWQgbGltaXQpCkBAIC0xMDY2NywxMCAr
MTA2NjMsOCBAQAogCSAgICAgIChjLWZvcndhcmQta2V5d29yZC1jbGF1c2UgMSkKIAkgICAgICAo
d2hlbiAoYW5kIChjLW1ham9yLW1vZGUtaXMgJ2MrKy1tb2RlKQogCQkJIChjLWtleXdvcmQtbWVt
YmVyIGt3ZC1zeW0gJ2MtPD4tc2V4cC1rd2RzKQotCQkJIChzYXZlLW1hdGNoLWRhdGEKLQkJCSAg
IChhbmQKLQkJCSAgICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkJ
ICAgIChub3QgKGVxIChjaGFyLWFmdGVyIChtYXRjaC1lbmQgMCkpID9fKSkpKSkKKwkJCSAoc2F2
ZS1tYXRjaC1kYXRhIDsgUHJvYmFibHkgdW5uZWNlc3NhcnkgKDIwMjQtMDktMjApCisJCQkgICAo
bG9va2luZy1hdCBjLXJlcXVpcmVzLWNsYXVzZS1rZXkpKSkKIAkJKGMtZm9yd2FyZC1jKystcmVx
dWlyZXMtY2xhdXNlKSkKIAkgICAgICAoc2V0cSBrd2QtY2xhdXNlLWVuZCAocG9pbnQpKSkpCiAJ
ICAgKChhbmQgYy1vcHQtY3BwLXByZWZpeApAQCAtMTEwMjgsOSArMTEwMjIsNyBAQAogCQkgICAg
ICgoc2F2ZS1tYXRjaC1kYXRhIChsb29raW5nLWF0ICJcXHMoIikpCiAJCSAgICAgIChjLXNhZmUg
KGMtZm9yd2FyZC1zZXhwIDEpIHQpKQogCQkgICAgICgoc2F2ZS1tYXRjaC1kYXRhCi0JCQkoYW5k
Ci0JCQkgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJCSAobm90IChl
cSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkgOyBDKysgcmVxdWlyZXMKKwkJCShs
b29raW5nLWF0IGMtcmVxdWlyZXMtY2xhdXNlLWtleSkpCiAJCSAgICAgIChjLWZvcndhcmQtYysr
LXJlcXVpcmVzLWNsYXVzZSkpCiAJCSAgICAgKHQgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQog
CQkJdCkpCkBAIC0xMzE3OCwyMjkgKzEzMTcwLDIxOCBAQAogICA7OwogICA7OyBIZXJlLCAiYnJh
Y2UgbGlzdCIgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9keSBvZiBhbiBlbnVtLgogICAoc2F2ZS1l
eGN1cnNpb24KLSAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKLQkgIChicmFjZWFzc2lnbnAgJ2Rv
bnRrbm93KQotCSAgaW5leHByLWJyYWNlLWxpc3QgYnVmcG9zIG1hY3JvLXN0YXJ0IHJlcyBwb3Mg
YWZ0ZXItdHlwZS1pZC1wb3MKLQkgIHBvczIgaW4tcGFyZW4gcGFyZW5zLWJlZm9yZS1icmFjZQot
CSAgcGFyZW4tc3RhdGUgcGFyZW4tcG9zKQotCi0gICAgICAoc2V0cSByZXMKLQkgICAgKG9yIChw
cm9nbiAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCi0JCSAgICAgICAoYy1iYWNrLW92ZXItY29t
cG91bmQtaWRlbnRpZmllcikpCi0JCShjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpKQotICAg
ICAgOzsgQ2hlY2tzIHRvIGRvIG9ubHkgb24gdGhlIGZpcnN0IHNleHAgYmVmb3JlIHRoZSBicmFj
ZS4KLSAgICAgIDs7IEhhdmUgd2UgYSBDKysgaW5pdGlhbGl6YXRpb24sIHdpdGhvdXQgYW4gIj0i
PwotICAgICAgKGlmIChhbmQgKGMtbWFqb3ItbW9kZS1pcyAnYysrLW1vZGUpCi0JICAgICAgIChj
b25kCi0JCSgoYW5kIChvciAobm90IChtZW1xIHJlcyAnKHQgMCkpKQotCQkJICAoZXEgKGNoYXIt
YWZ0ZXIpID8sKSkKLQkJICAgICAgKHNldHEgcGFyZW4tc3RhdGUgKGMtcGFyc2Utc3RhdGUpKQot
CQkgICAgICAoc2V0cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkK
LQkJICAgICAgKGVxIChjaGFyLWFmdGVyIHBhcmVuLXBvcykgP1woKSkKLQkJIChnb3RvLWNoYXIg
cGFyZW4tcG9zKQotCQkgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24KLQkJICAgICAg
IGluLXBhcmVuICdpbi1wYXJlbikpCi0JCSgobG9va2luZy1hdCBjLXByZS1icmFjZS1ub24tYnJh
Y2VsaXN0LWtleSkKLQkJIChzZXRxIGJyYWNlYXNzaWducCBuaWwpKQotCQkoKGFuZAotCQkgIChs
b29raW5nLWF0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCi0JCSAgKG5vdCAoZXEgKGNoYXIt
YWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkKLQkJIChzZXRxIGJyYWNlYXNzaWducCBuaWwpKQot
CQkoKGxvb2tpbmctYXQgYy1yZXR1cm4ta2V5KSkKLQkJKChhbmQgKGxvb2tpbmctYXQgYy1zeW1i
b2wtc3RhcnQpCi0JCSAgICAgIChub3QgKGxvb2tpbmctYXQgYy1rZXl3b3Jkcy1yZWdleHApKSkK
LQkJIChpZiAoc2F2ZS1leGN1cnNpb24KLQkJICAgICAgIChhbmQgKHplcm9wIChjLWJhY2t3YXJk
LXRva2VuLTIgMSB0IGxpbSkpCi0JCQkgICAgKGxvb2tpbmctYXQgYy1wcmUtaWQtYnJhY2VsaXN0
LWtleSkpKQotCQkgICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5vYXNzaWduKQotCQkgICAo
c2V0cSBhZnRlci10eXBlLWlkLXBvcyAocG9pbnQpKSkpCi0JCSgoZXEgKGNoYXItYWZ0ZXIpID9c
KCkKLQkJIChzZXRxIHBhcmVucy1iZWZvcmUtYnJhY2UgdCkKLQkJIDs7IEhhdmUgd2UgYSByZXF1
aXJlcyB3aXRoIGEgcGFyZW50aGVzaXMgbGlzdD8KLQkJICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgot
CQkJIChhbmQgKHplcm9wIChjLWJhY2t3YXJkLXRva2VuLTIgMSBuaWwgbGltKSkKLQkJCSAgICAg
IChsb29raW5nLWF0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCi0JCQkgICAgICAobm90IChl
cSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkKKyAgICAodW5sZXNzIChhbmQgKGMt
bWFqb3ItbW9kZS1pcyAnYysrLW1vZGUpCisJCSAoYy1iYWNrd2FyZC1vdmVyLWxhbWJkYS1leHBy
ZXNzaW9uIGxpbSkpCisgICAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKKwkgICAgKGJyYWNlYXNz
aWducCAnZG9udGtub3cpCisJICAgIGluZXhwci1icmFjZS1saXN0IGJ1ZnBvcyBtYWNyby1zdGFy
dCByZXMgcG9zIGFmdGVyLXR5cGUtaWQtcG9zCisJICAgIHBvczIgaW4tcGFyZW4gcGFyZW4tc3Rh
dGUgcGFyZW4tcG9zKQorCisJKHNldHEgcmVzCisJICAgICAgKG9yIChwcm9nbiAoYy1iYWNrd2Fy
ZC1zeW50YWN0aWMtd3MpCisJCQkgKGMtYmFjay1vdmVyLWNvbXBvdW5kLWlkZW50aWZpZXIpKQor
CQkgIChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpKQorCTs7IENoZWNrcyB0byBkbyBvbmx5
IG9uIHRoZSBmaXJzdCBzZXhwIGJlZm9yZSB0aGUgYnJhY2UuCisJOzsgSGF2ZSB3ZSBhIEMrKyBp
bml0aWFsaXphdGlvbiwgd2l0aG91dCBhbiAiPSI/CisJKGlmIChhbmQgKGMtbWFqb3ItbW9kZS1p
cyAnYysrLW1vZGUpCisJCSAoY29uZAorCQkgICgoYW5kIChvciAobm90IChtZW1xIHJlcyAnKHQg
MCkpKQorCQkJICAgIChlcSAoY2hhci1hZnRlcikgPywpKQorCQkJKHNldHEgcGFyZW4tc3RhdGUg
KGMtcGFyc2Utc3RhdGUpKQorCQkJKHNldHEgcGFyZW4tcG9zIChjLXB1bGwtb3Blbi1icmFjZSBw
YXJlbi1zdGF0ZSkpCisJCQkoZXEgKGNoYXItYWZ0ZXIgcGFyZW4tcG9zKSA/XCgpKQorCQkgICAo
Z290by1jaGFyIHBhcmVuLXBvcykKKwkJICAgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3Np
Z24KKwkJCSBpbi1wYXJlbiAnaW4tcGFyZW4pKQorCQkgICgobG9va2luZy1hdCBjLXByZS1icmFj
ZS1ub24tYnJhY2VsaXN0LWtleSkKIAkJICAgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCi0JCSBu
aWwpCi0JCSh0IG5pbCkpCi0JICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkgKGNvbmQKLQkJICAo
KG9yIChub3QgKG1lbXEgcmVzICcodCAwKSkpCi0JCSAgICAgICAoZXEgKGNoYXItYWZ0ZXIpID8s
KSkKLQkJICAgKGFuZCAoc2V0cSBwYXJlbi1zdGF0ZSAoYy1wYXJzZS1zdGF0ZSkpCi0JCQkoc2V0
cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkKLQkJCShlcSAoY2hh
ci1hZnRlciBwYXJlbi1wb3MpID9cKCkKLQkJCShzZXRxIGluLXBhcmVuICdpbi1wYXJlbikKLQkJ
CShnb3RvLWNoYXIgcGFyZW4tcG9zKSkpCi0JCSAgKChsb29raW5nLWF0IGMtcHJlLWJyYWNlLW5v
bi1icmFjZWxpc3Qta2V5KSkKKwkJICAoKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRl
LWtleSkKKwkJICAgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCiAJCSAgKChsb29raW5nLWF0IGMt
cmV0dXJuLWtleSkpCiAJCSAgKChhbmQgKGxvb2tpbmctYXQgYy1zeW1ib2wtc3RhcnQpCi0JCQko
bm90IChsb29raW5nLWF0IGMta2V5d29yZHMtcmVnZXhwKSkKLQkJCShzYXZlLWV4Y3Vyc2lvbgot
CQkJICAoYW5kICh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIDEgdCBsaW0pKQotCQkJICAgICAg
IChsb29raW5nLWF0IGMtcHJlLWlkLWJyYWNlbGlzdC1rZXkpKSkpKQotCQkgICh0IChzZXRxIGFm
dGVyLXR5cGUtaWQtcG9zIChwb2ludCkpCi0JCSAgICAgbmlsKSkpKQotCSAgKHNldHEgYnJhY2Vh
c3NpZ25wICdjKystbm9hc3NpZ24pKQotCi0gICAgICAod2hlbiAoYW5kIGMtb3B0LWluZXhwci1i
cmFjZS1saXN0LWtleQotCQkgKGVxIChjaGFyLWFmdGVyKSA/XFspKQotCTs7IEluIEphdmEsIGFu
IGluaXRpYWxpemF0aW9uIGJyYWNlIGxpc3QgbWF5IGZvbGxvdwotCTs7IGRpcmVjdGx5IGFmdGVy
ICJuZXcgRm9vW10iLCBzbyBjaGVjayBmb3IgYSAibmV3IgotCTs7IGVhcmxpZXIuCi0JKHdoaWxl
IChlcSBicmFjZWFzc2lnbnAgJ2RvbnRrbm93KQotCSAgKHNldHEgYnJhY2Vhc3NpZ25wCi0JCShj
b25kICgoLz0gKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSAwKSBuaWwpCi0JCSAgICAgICgo
bG9va2luZy1hdCBjLW9wdC1pbmV4cHItYnJhY2UtbGlzdC1rZXkpCi0JCSAgICAgICAoc2V0cSBp
bmV4cHItYnJhY2UtbGlzdCB0KQotCQkgICAgICAgdCkKLQkJICAgICAgKChsb29raW5nLWF0ICJc
XHN3XFx8XFxzX1xcfFsuW10iKQotCQkgICAgICAgOzsgQ2Fycnkgb24gbG9va2luZyBpZiB0aGlz
IGlzIGFuCi0JCSAgICAgICA7OyBpZGVudGlmaWVyIChtYXkgY29udGFpbiAiLiIgaW4gSmF2YSkK
LQkJICAgICAgIDs7IG9yIGFub3RoZXIgIltdIiBzZXhwLgotCQkgICAgICAgJ2RvbnRrbm93KQot
CQkgICAgICAodCBuaWwpKSkpKQotCi0gICAgICAoc2V0cSBwb3MgKHBvaW50KSkKLSAgICAgIChj
b25kCi0gICAgICAgKChub3QgYnJhY2Vhc3NpZ25wKQotCW5pbCkKLSAgICAgICAoKGFuZCBhZnRl
ci10eXBlLWlkLXBvcwotCSAgICAgKGdvdG8tY2hhciBhZnRlci10eXBlLWlkLXBvcykKLQkgICAg
IChzZXRxIHJlcyAoYy1iYWNrLW92ZXItbWVtYmVyLWluaXRpYWxpemVycykpCi0JICAgICAoZ290
by1jaGFyIHJlcykKLQkgICAgIChlcSAoY2FyIChjLWJlZ2lubmluZy1vZi1kZWNsLTEgbGltKSkg
J3NhbWUpKQotCShjb25zIChwb2ludCkgbmlsKSkJCTsgUmV0dXJuIHZhbHVlLgotCi0gICAgICAg
KChhbmQgYWZ0ZXItdHlwZS1pZC1wb3MKLQkgICAgIChwcm9nbgotCSAgICAgICAoYy1iYWNrd2Fy
ZC1zeW50YWN0aWMtd3MpCi0JICAgICAgIChlcSAoY2hhci1iZWZvcmUpID9cKCkpKQotCTs7IFNp
bmdsZSBpZGVudGlmaWVyIGJldHdlZW4gJygnIGFuZCAneycuICBXZSBoYXZlIGEgYnJhY2VsaXN0
LgotCShjb25zIGFmdGVyLXR5cGUtaWQtcG9zICdpbi1wYXJlbikpCi0KLSAgICAgICA7OyBBcmUg
d2UgYXQgdGhlIHBhcmVucyBvZiBhIEMrKyBsYW1iZGEgZXhwcmVzc2lvbj8KLSAgICAgICAoKGFu
ZCBwYXJlbnMtYmVmb3JlLWJyYWNlCi0JICAgICAoc2F2ZS1leGN1cnNpb24KLQkgICAgICAgKGFu
ZAotCQkoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKLQkJKGMtbG9va2luZy1h
dC1jKystbGFtYmRhLWNhcHR1cmUtbGlzdCkpKSkKLQluaWwpCQkJICAgICA7IGEgbGFtYmRhIGV4
cHJlc3Npb24gaXNuJ3QgYSBicmFjZSBsaXN0LgotCi0gICAgICAgKHQKLQkoZ290by1jaGFyIHBv
cykKLQkod2hlbiAoZXEgYnJhY2Vhc3NpZ25wICdkb250a25vdykKLQkgIChsZXQqICgoY2FjaGUt
ZW50cnkgKGFuZCBjb250YWluaW5nLXNleHAKLQkJCQkgICAoYy1sYW9taWItZ2V0LWNhY2hlIGNv
bnRhaW5pbmctc2V4cCBwb3MpKSkKLQkJIChsaW0yIChvciAoY2FkciBjYWNoZS1lbnRyeSkgbGlt
KSkKLQkJIHN1Yi1iYXNzaWduLXApCi0JICAgIChpZiBjYWNoZS1lbnRyeQotCQkoY29uZAotCQkg
KCg8PSAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKLQkJICA7OyBXZSdyZSBpbnNpZGUgdGhl
IHJlZ2lvbiB3ZSd2ZSBhbHJlYWR5IHNjYW5uZWQgb3Zlciwgc28KLQkJICA7OyBqdXN0IGdvIHRv
IHRoYXQgc2NhbidzIGVuZCBwb3NpdGlvbi4KLQkJICAoZ290by1jaGFyIChudGggMiBjYWNoZS1l
bnRyeSkpCi0JCSAgKHNldHEgYnJhY2Vhc3NpZ25wIChudGggMyBjYWNoZS1lbnRyeSkpKQotCQkg
KCg+IChwb2ludCkgKGNhZHIgY2FjaGUtZW50cnkpKQotCQkgIDs7IFdlJ3JlIGJleW9uZCB0aGUg
cHJldmlvdXMgc2NhbiByZWdpb24sIHNvIGp1c3Qgc2NhbiBhcwotCQkgIDs7IGZhciBhcyB0aGUg
ZW5kIG9mIHRoYXQgcmVnaW9uLgotCQkgIChzZXRxIHN1Yi1iYXNzaWduLXAgKGMtbGFvbWliLWxv
b3AgbGltMikpCi0JCSAgKGlmICg8PSAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKLQkJICAg
ICAgKHByb2duCi0JCQkoYy1sYW9taWItcHV0LWNhY2hlIGNvbnRhaW5pbmctc2V4cAotCQkJCQkg
ICAgc3RhcnQgKG50aCAyIGNhY2hlLWVudHJ5KQotCQkJCQkgICAgKG50aCAzIGNhY2hlLWVudHJ5
KSA7OyBzdWItYmFzc2lnbi1wCi0JCQkJCSAgICApCi0JCQkoc2V0cSBicmFjZWFzc2lnbnAgKG50
aCAzIGNhY2hlLWVudHJ5KSkKLQkJCShnb3RvLWNoYXIgKG50aCAyIGNhY2hlLWVudHJ5KSkpCi0J
CSAgICAoYy1sYW9taWItcHV0LWNhY2hlIGNvbnRhaW5pbmctc2V4cAotCQkJCQlzdGFydCAocG9p
bnQpIHN1Yi1iYXNzaWduLXApCi0JCSAgICAoc2V0cSBicmFjZWFzc2lnbnAgc3ViLWJhc3NpZ24t
cCkpKQotCQkgKHQpKQotCi0JICAgICAgKHNldHEgYnJhY2Vhc3NpZ25wIChjLWxhb21pYi1sb29w
IGxpbSkpCi0JICAgICAgKHdoZW4gbGltCi0JCShjLWxhb21pYi1wdXQtY2FjaGUgbGltIHN0YXJ0
IChwb2ludCkgYnJhY2Vhc3NpZ25wKSkpKSkKLQorCQkJKG5vdCAobG9va2luZy1hdCBjLWtleXdv
cmRzLXJlZ2V4cCkpKQorCQkgICAoaWYgKHNhdmUtZXhjdXJzaW9uCisJCQkgKGFuZCAoemVyb3Ag
KGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKKwkJCSAgICAgIChsb29raW5nLWF0IGMtcHJl
LWlkLWJyYWNlbGlzdC1rZXkpKSkKKwkJICAgICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5v
YXNzaWduKQorCQkgICAgIChzZXRxIGFmdGVyLXR5cGUtaWQtcG9zIChwb2ludCkpKSkKKwkJICAo
KGVxIChjaGFyLWFmdGVyKSA/XCgpCisJCSAgIDs7IEhhdmUgd2UgYSByZXF1aXJlcyB3aXRoIGEg
cGFyZW50aGVzaXMgbGlzdD8KKwkJICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCisJCQkgICAoYW5k
ICh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIDEgbmlsIGxpbSkpCisJCQkJKGxvb2tpbmctYXQg
Yy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkpKQorCQkgICAgIChzZXRxIGJyYWNlYXNzaWducCBu
aWwpKQorCQkgICBuaWwpCisJCSAgKHQgbmlsKSkKKwkJIChzYXZlLWV4Y3Vyc2lvbgorCQkgICAo
Y29uZAorCQkgICAgKChvciAobm90IChtZW1xIHJlcyAnKHQgMCkpKQorCQkJIChlcSAoY2hhci1h
ZnRlcikgPywpKQorCQkgICAgIChhbmQgKHNldHEgcGFyZW4tc3RhdGUgKGMtcGFyc2Utc3RhdGUp
KQorCQkJICAoc2V0cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkK
KwkJCSAgKGVxIChjaGFyLWFmdGVyIHBhcmVuLXBvcykgP1woKQorCQkJICAoc2V0cSBpbi1wYXJl
biAnaW4tcGFyZW4pCisJCQkgIChnb3RvLWNoYXIgcGFyZW4tcG9zKSkpCisJCSAgICAoKGxvb2tp
bmctYXQgYy1wcmUtYnJhY2Utbm9uLWJyYWNlbGlzdC1rZXkpKQorCQkgICAgKChsb29raW5nLWF0
IGMtcmV0dXJuLWtleSkpCisJCSAgICAoKGFuZCAobG9va2luZy1hdCBjLXN5bWJvbC1zdGFydCkK
KwkJCSAgKG5vdCAobG9va2luZy1hdCBjLWtleXdvcmRzLXJlZ2V4cCkpCisJCQkgIChzYXZlLWV4
Y3Vyc2lvbgorCQkJICAgIChhbmQgKHplcm9wIChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkp
CisJCQkJIChsb29raW5nLWF0IGMtcHJlLWlkLWJyYWNlbGlzdC1rZXkpKSkpKQorCQkgICAgKHQg
KHNldHEgYWZ0ZXItdHlwZS1pZC1wb3MgKHBvaW50KSkKKwkJICAgICAgIG5pbCkpKSkKKwkgICAg
KHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24pKQorCisJKHdoZW4gKGFuZCBjLW9wdC1p
bmV4cHItYnJhY2UtbGlzdC1rZXkKKwkJICAgKGVxIChjaGFyLWFmdGVyKSA/XFspKQorCSAgOzsg
SW4gSmF2YSwgYW4gaW5pdGlhbGl6YXRpb24gYnJhY2UgbGlzdCBtYXkgZm9sbG93CisJICA7OyBk
aXJlY3RseSBhZnRlciAibmV3IEZvb1tdIiwgc28gY2hlY2sgZm9yIGEgIm5ldyIKKwkgIDs7IGVh
cmxpZXIuCisJICAod2hpbGUgKGVxIGJyYWNlYXNzaWducCAnZG9udGtub3cpCisJICAgIChzZXRx
IGJyYWNlYXNzaWducAorCQkgIChjb25kICgoLz0gKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGlt
KSAwKSBuaWwpCisJCQkoKGxvb2tpbmctYXQgYy1vcHQtaW5leHByLWJyYWNlLWxpc3Qta2V5KQor
CQkJIChzZXRxIGluZXhwci1icmFjZS1saXN0IHQpCisJCQkgdCkKKwkJCSgobG9va2luZy1hdCAi
XFxzd1xcfFxcc19cXHxbLltdIikKKwkJCSA7OyBDYXJyeSBvbiBsb29raW5nIGlmIHRoaXMgaXMg
YW4KKwkJCSA7OyBpZGVudGlmaWVyIChtYXkgY29udGFpbiAiLiIgaW4gSmF2YSkKKwkJCSA7OyBv
ciBhbm90aGVyICJbXSIgc2V4cC4KKwkJCSAnZG9udGtub3cpCisJCQkodCBuaWwpKSkpKQorCisJ
KHNldHEgcG9zIChwb2ludCkpCiAJKGNvbmQKLQkgKGJyYWNlYXNzaWducAotCSAgOzsgV2UndmUg
aGl0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFnZ3JlZ2F0ZSBsaXN0LgotCSAgKHNldHEgcG9zMiAo
cG9pbnQpKQotCSAgKGNvbnMKLQkgICAoaWYgKGVxIChjLWJlZ2lubmluZy1vZi1zdGF0ZW1lbnQt
MSBjb250YWluaW5nLXNleHApICdzYW1lKQotCSAgICAgICAocG9pbnQpCi0JICAgICBwb3MyKQot
CSAgIChvciBpbi1wYXJlbiBpbmV4cHItYnJhY2UtbGlzdCkpKQorCSAoKG5vdCBicmFjZWFzc2ln
bnApCisJICBuaWwpCisJICgoYW5kIGFmdGVyLXR5cGUtaWQtcG9zCisJICAgICAgIChnb3RvLWNo
YXIgYWZ0ZXItdHlwZS1pZC1wb3MpCisJICAgICAgIChzZXRxIHJlcyAoYy1iYWNrLW92ZXItbWVt
YmVyLWluaXRpYWxpemVycykpCisJICAgICAgIChnb3RvLWNoYXIgcmVzKQorCSAgICAgICAoZXEg
KGNhciAoYy1iZWdpbm5pbmctb2YtZGVjbC0xIGxpbSkpICdzYW1lKSkKKwkgIChjb25zIChwb2lu
dCkgbmlsKSkJCTsgUmV0dXJuIHZhbHVlLgorCiAJICgoYW5kIGFmdGVyLXR5cGUtaWQtcG9zCi0J
ICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkgKHdoZW4gKGVxIChjaGFyLWFmdGVyKSA/XDspCi0J
CSAgIChjLWZvcndhcmQtb3Zlci10b2tlbi1hbmQtd3MgdCkpCi0JCSAoc2V0cSBidWZwb3MgKHBv
aW50KSkKLQkJICh3aGVuIChsb29raW5nLWF0IGMtb3B0LTw+LXNleHAta2V5KQotCQkgICAoYy1m
b3J3YXJkLW92ZXItdG9rZW4tYW5kLXdzKQotCQkgICAod2hlbiAoYW5kIChlcSAoY2hhci1hZnRl
cikgPzwpCi0JCQkgICAgICAoYy1nZXQtY2hhci1wcm9wZXJ0eSAocG9pbnQpICdzeW50YXgtdGFi
bGUpKQotCQkgICAgIChjLWdvLWxpc3QtZm9yd2FyZCBuaWwgYWZ0ZXItdHlwZS1pZC1wb3MpCi0J
CSAgICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpKSkKLQkJIChpZiAoYW5kIChub3QgKGVxIChw
b2ludCkgYWZ0ZXItdHlwZS1pZC1wb3MpKQotCQkJICAob3IgKG5vdCAobG9va2luZy1hdCBjLWNs
YXNzLWtleSkpCi0JCQkgICAgICAoc2F2ZS1leGN1cnNpb24KLQkJCQkoZ290by1jaGFyIChtYXRj
aC1lbmQgMSkpCi0JCQkJKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpCi0JCQkJKG5vdCAoZXEgKHBv
aW50KSBhZnRlci10eXBlLWlkLXBvcykpKSkpCi0JCSAgICAgKHByb2duCi0JCSAgICAgICAoc2V0
cSByZXMKLQkJCSAgICAgKGMtZm9yd2FyZC1kZWNsLW9yLWNhc3QtMSAoYy1wb2ludCAnYm9zd3Mp
Ci0JCQkJCQkgICAgICAgbmlsIG5pbCkpCi0JCSAgICAgICAoYW5kIChjb25zcCByZXMpCi0JCQkg
ICAgKGNvbmQKLQkJCSAgICAgKChlcSAoY2FyIHJlcykgYWZ0ZXItdHlwZS1pZC1wb3MpKQotCQkJ
ICAgICAoKD4gKGNhciByZXMpIGFmdGVyLXR5cGUtaWQtcG9zKSBuaWwpCi0JCQkgICAgICh0Ci0J
CQkgICAgICAoY2F0Y2ggJ2ZpbmQtZGVjbAorCSAgICAgICAocHJvZ24KKwkJIChjLWJhY2t3YXJk
LXN5bnRhY3RpYy13cykKKwkJIChlcSAoY2hhci1iZWZvcmUpID9cKCkpKQorCSAgOzsgU2luZ2xl
IGlkZW50aWZpZXIgYmV0d2VlbiAnKCcgYW5kICd7Jy4gIFdlIGhhdmUgYSBicmFjZWxpc3QuCisJ
ICAoY29ucyBhZnRlci10eXBlLWlkLXBvcyAnaW4tcGFyZW4pKQorCisJICh0CisJICAoZ290by1j
aGFyIHBvcykKKwkgICh3aGVuIChlcSBicmFjZWFzc2lnbnAgJ2RvbnRrbm93KQorCSAgICAobGV0
KiAoKGNhY2hlLWVudHJ5IChhbmQgY29udGFpbmluZy1zZXhwCisJCQkJICAgICAoYy1sYW9taWIt
Z2V0LWNhY2hlIGNvbnRhaW5pbmctc2V4cCBwb3MpKSkKKwkJICAgKGxpbTIgKG9yIChjYWRyIGNh
Y2hlLWVudHJ5KSBsaW0pKQorCQkgICBzdWItYmFzc2lnbi1wKQorCSAgICAgIChpZiBjYWNoZS1l
bnRyeQorCQkgIChjb25kCisJCSAgICgoPD0gKHBvaW50KSAoY2FkciBjYWNoZS1lbnRyeSkpCisJ
CSAgICA7OyBXZSdyZSBpbnNpZGUgdGhlIHJlZ2lvbiB3ZSd2ZSBhbHJlYWR5IHNjYW5uZWQgb3Zl
ciwgc28KKwkJICAgIDs7IGp1c3QgZ28gdG8gdGhhdCBzY2FuJ3MgZW5kIHBvc2l0aW9uLgorCQkg
ICAgKGdvdG8tY2hhciAobnRoIDIgY2FjaGUtZW50cnkpKQorCQkgICAgKHNldHEgYnJhY2Vhc3Np
Z25wIChudGggMyBjYWNoZS1lbnRyeSkpKQorCQkgICAoKD4gKHBvaW50KSAoY2FkciBjYWNoZS1l
bnRyeSkpCisJCSAgICA7OyBXZSdyZSBiZXlvbmQgdGhlIHByZXZpb3VzIHNjYW4gcmVnaW9uLCBz
byBqdXN0IHNjYW4gYXMKKwkJICAgIDs7IGZhciBhcyB0aGUgZW5kIG9mIHRoYXQgcmVnaW9uLgor
CQkgICAgKHNldHEgc3ViLWJhc3NpZ24tcCAoYy1sYW9taWItbG9vcCBsaW0yKSkKKwkJICAgIChp
ZiAoPD0gKHBvaW50KSAoY2FkciBjYWNoZS1lbnRyeSkpCisJCQkocHJvZ24KKwkJCSAgKGMtbGFv
bWliLXB1dC1jYWNoZSBjb250YWluaW5nLXNleHAKKwkJCQkJICAgICAgc3RhcnQgKG50aCAyIGNh
Y2hlLWVudHJ5KQorCQkJCQkgICAgICAobnRoIDMgY2FjaGUtZW50cnkpIDs7IHN1Yi1iYXNzaWdu
LXAKKwkJCQkJICAgICAgKQorCQkJICAoc2V0cSBicmFjZWFzc2lnbnAgKG50aCAzIGNhY2hlLWVu
dHJ5KSkKKwkJCSAgKGdvdG8tY2hhciAobnRoIDIgY2FjaGUtZW50cnkpKSkKKwkJICAgICAgKGMt
bGFvbWliLXB1dC1jYWNoZSBjb250YWluaW5nLXNleHAKKwkJCQkJICBzdGFydCAocG9pbnQpIHN1
Yi1iYXNzaWduLXApCisJCSAgICAgIChzZXRxIGJyYWNlYXNzaWducCBzdWItYmFzc2lnbi1wKSkp
CisJCSAgICh0KSkKKworCQkoc2V0cSBicmFjZWFzc2lnbnAgKGMtbGFvbWliLWxvb3AgbGltKSkK
KwkJKHdoZW4gbGltCisJCSAgKGMtbGFvbWliLXB1dC1jYWNoZSBsaW0gc3RhcnQgKHBvaW50KSBi
cmFjZWFzc2lnbnApKSkpKQorCisJICAoY29uZAorCSAgIChicmFjZWFzc2lnbnAKKwkgICAgOzsg
V2UndmUgaGl0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFnZ3JlZ2F0ZSBsaXN0LgorCSAgICAoc2V0
cSBwb3MyIChwb2ludCkpCisJICAgIChjb25zCisJICAgICAoaWYgKGVxIChjLWJlZ2lubmluZy1v
Zi1zdGF0ZW1lbnQtMSBjb250YWluaW5nLXNleHApICdzYW1lKQorCQkgKHBvaW50KQorCSAgICAg
ICBwb3MyKQorCSAgICAgKG9yIGluLXBhcmVuIGluZXhwci1icmFjZS1saXN0KSkpCisJICAgKChh
bmQgYWZ0ZXItdHlwZS1pZC1wb3MKKwkJIChzYXZlLWV4Y3Vyc2lvbgorCQkgICAod2hlbiAoZXEg
KGNoYXItYWZ0ZXIpID9cOykKKwkJICAgICAoYy1mb3J3YXJkLW92ZXItdG9rZW4tYW5kLXdzIHQp
KQorCQkgICAoc2V0cSBidWZwb3MgKHBvaW50KSkKKwkJICAgKHdoZW4gKGxvb2tpbmctYXQgYy1v
cHQtPD4tc2V4cC1rZXkpCisJCSAgICAgKGMtZm9yd2FyZC1vdmVyLXRva2VuLWFuZC13cykKKwkJ
ICAgICAod2hlbiAoYW5kIChlcSAoY2hhci1hZnRlcikgPzwpCisJCQkJKGMtZ2V0LWNoYXItcHJv
cGVydHkgKHBvaW50KSAnc3ludGF4LXRhYmxlKSkKKwkJICAgICAgIChjLWdvLWxpc3QtZm9yd2Fy
ZCBuaWwgYWZ0ZXItdHlwZS1pZC1wb3MpCisJCSAgICAgICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13
cykpKQorCQkgICAoaWYgKGFuZCAobm90IChlcSAocG9pbnQpIGFmdGVyLXR5cGUtaWQtcG9zKSkK
KwkJCSAgICAob3IgKG5vdCAobG9va2luZy1hdCBjLWNsYXNzLWtleSkpCiAJCQkJKHNhdmUtZXhj
dXJzaW9uCi0JCQkJICAoZ290by1jaGFyIChjYXIgcmVzKSkKLQkJCQkgIChjLWRvLWRlY2xhcmF0
b3JzCi0JCQkJICAgKHBvaW50LW1heCkgdCBuaWwgbmlsCi0JCQkJICAgKGxhbWJkYSAoaWQtc3Rh
cnQgX2lkLWVuZCBfdG9rIF9ub3QtdG9wIF9mdW5jIF9pbml0KQotCQkJCSAgICAgKGNvbmQKLQkJ
CQkgICAgICAoKD4gaWQtc3RhcnQgYWZ0ZXItdHlwZS1pZC1wb3MpCi0JCQkJICAgICAgICh0aHJv
dyAnZmluZC1kZWNsIG5pbCkpCi0JCQkJICAgICAgKChlcSBpZC1zdGFydCBhZnRlci10eXBlLWlk
LXBvcykKLQkJCQkgICAgICAgKHRocm93ICdmaW5kLWRlY2wgdCkpKSkpCi0JCQkJICBuaWwpKSkp
KSkKLQkJICAgKHNhdmUtZXhjdXJzaW9uCi0JCSAgICAgKGdvdG8tY2hhciBzdGFydCkKLQkJICAg
ICAobm90IChjLWxvb2tpbmctYXQtc3RhdGVtZW50LWJsb2NrKSkpKSkpCi0JICAoY29ucyBidWZw
b3MgKG9yIGluLXBhcmVuIGluZXhwci1icmFjZS1saXN0KSkpCi0JICgob3IgKGVxIChjaGFyLWFm
dGVyKSA/XDspCi0JICAgICAgOzsgQnJhY2UgbGlzdHMgY2FuJ3QgY29udGFpbiBhIHNlbWljb2xv
biwgc28gd2UncmUgZG9uZS4KLQkgICAgICAoc2F2ZS1leGN1cnNpb24KLQkJKGMtYmFja3dhcmQt
c3ludGFjdGljLXdzKQotCQkoZXEgKGNoYXItYmVmb3JlKSA/fSkpCi0JICAgICAgOzsgVGhleSBh
bHNvIGNhbid0IGNvbnRhaW4gYSBiYXJlIH0sIHdoaWNoIGlzIHByb2JhYmx5IHRoZSBlbmQKLQkg
ICAgICA7OyBvZiBhIGZ1bmN0aW9uLgotCSAgICAgICkKLQkgIG5pbCkKLQkgKChhbmQgKHNldHEg
bWFjcm8tc3RhcnQgKHBvaW50KSkKLQkgICAgICAgKGMtZm9yd2FyZC10by1jcHAtZGVmaW5lLWJv
ZHkpCi0JICAgICAgIChlcSAocG9pbnQpIHN0YXJ0KSkKLQkgIDs7IFdlJ3ZlIGEgbWFjcm8gd2hv
c2UgZXhwYW5zaW9uIHN0YXJ0cyB3aXRoIHRoZSAneycuCi0JICA7OyBIZXVyaXN0aWNhbGx5LCBp
ZiB3ZSBoYXZlIGEgJzsnIGluIGl0IHdlJ3ZlIG5vdCBnb3QgYQotCSAgOzsgYnJhY2UgbGlzdCwg
b3RoZXJ3aXNlIHdlIGhhdmUuCi0JICAobGV0ICgobWFjcm8tZW5kIChwcm9nbiAoYy1lbmQtb2Yt
bWFjcm8pIChwb2ludCkpKSkKLQkgICAgKGdvdG8tY2hhciBzdGFydCkKLQkgICAgKGZvcndhcmQt
Y2hhcikKLQkgICAgKGlmIChhbmQgKGMtc3ludGFjdGljLXJlLXNlYXJjaC1mb3J3YXJkICJbOyxd
IiBtYWNyby1lbmQgdCB0KQotCQkgICAgIChlcSAoY2hhci1iZWZvcmUpID9cOykpCi0JCW5pbAot
CSAgICAgIChjb25zIG1hY3JvLXN0YXJ0IG5pbCkpKSkgOyAoMjAxNi0wOC0zMCk6IExhenkhIFdl
IGhhdmUgbm8KKwkJCQkgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAxKSkKKwkJCQkgIChjLWZvcndh
cmQtc3ludGFjdGljLXdzKQorCQkJCSAgKG5vdCAoZXEgKHBvaW50KSBhZnRlci10eXBlLWlkLXBv
cykpKSkpCisJCSAgICAgICAocHJvZ24KKwkJCSAoc2V0cSByZXMKKwkJCSAgICAgICAoYy1mb3J3
YXJkLWRlY2wtb3ItY2FzdC0xIChjLXBvaW50ICdib3N3cykKKwkJCQkJCQkgbmlsIG5pbCkpCisJ
CQkgKGFuZCAoY29uc3AgcmVzKQorCQkJICAgICAgKGNvbmQKKwkJCSAgICAgICAoKGVxIChjYXIg
cmVzKSBhZnRlci10eXBlLWlkLXBvcykpCisJCQkgICAgICAgKCg+IChjYXIgcmVzKSBhZnRlci10
eXBlLWlkLXBvcykgbmlsKQorCQkJICAgICAgICh0CisJCQkJKGNhdGNoICdmaW5kLWRlY2wKKwkJ
CQkgIChzYXZlLWV4Y3Vyc2lvbgorCQkJCSAgICAoZ290by1jaGFyIChjYXIgcmVzKSkKKwkJCQkg
ICAgKGMtZG8tZGVjbGFyYXRvcnMKKwkJCQkgICAgIChwb2ludC1tYXgpIHQgbmlsIG5pbAorCQkJ
CSAgICAgKGxhbWJkYSAoaWQtc3RhcnQgX2lkLWVuZCBfdG9rIF9ub3QtdG9wIF9mdW5jIF9pbml0
KQorCQkJCSAgICAgICAoY29uZAorCQkJCQkoKD4gaWQtc3RhcnQgYWZ0ZXItdHlwZS1pZC1wb3Mp
CisJCQkJCSAodGhyb3cgJ2ZpbmQtZGVjbCBuaWwpKQorCQkJCQkoKGVxIGlkLXN0YXJ0IGFmdGVy
LXR5cGUtaWQtcG9zKQorCQkJCQkgKHRocm93ICdmaW5kLWRlY2wgdCkpKSkpCisJCQkJICAgIG5p
bCkpKSkpKQorCQkgICAgIChzYXZlLWV4Y3Vyc2lvbgorCQkgICAgICAgKGdvdG8tY2hhciBzdGFy
dCkKKwkJICAgICAgIChub3QgKGMtbG9va2luZy1hdC1zdGF0ZW1lbnQtYmxvY2spKSkpKSkKKwkg
ICAgKGNvbnMgYnVmcG9zIChvciBpbi1wYXJlbiBpbmV4cHItYnJhY2UtbGlzdCkpKQorCSAgICgo
b3IgKGVxIChjaGFyLWFmdGVyKSA/XDspCisJCTs7IEJyYWNlIGxpc3RzIGNhbid0IGNvbnRhaW4g
YSBzZW1pY29sb24sIHNvIHdlJ3JlIGRvbmUuCisJCShzYXZlLWV4Y3Vyc2lvbgorCQkgIChjLWJh
Y2t3YXJkLXN5bnRhY3RpYy13cykKKwkJICAoZXEgKGNoYXItYmVmb3JlKSA/fSkpCisJCTs7IFRo
ZXkgYWxzbyBjYW4ndCBjb250YWluIGEgYmFyZSB9LCB3aGljaCBpcyBwcm9iYWJseSB0aGUgZW5k
CisJCTs7IG9mIGEgZnVuY3Rpb24uCisJCSkKKwkgICAgbmlsKQorCSAgICgoYW5kIChzZXRxIG1h
Y3JvLXN0YXJ0IChwb2ludCkpCisJCSAoYy1mb3J3YXJkLXRvLWNwcC1kZWZpbmUtYm9keSkKKwkJ
IChlcSAocG9pbnQpIHN0YXJ0KSkKKwkgICAgOzsgV2UndmUgYSBtYWNybyB3aG9zZSBleHBhbnNp
b24gc3RhcnRzIHdpdGggdGhlICd7Jy4KKwkgICAgOzsgSGV1cmlzdGljYWxseSwgaWYgd2UgaGF2
ZSBhICc7JyBpbiBpdCB3ZSd2ZSBub3QgZ290IGEKKwkgICAgOzsgYnJhY2UgbGlzdCwgb3RoZXJ3
aXNlIHdlIGhhdmUuCisJICAgIChsZXQgKChtYWNyby1lbmQgKHByb2duIChjLWVuZC1vZi1tYWNy
bykgKHBvaW50KSkpKQorCSAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisJICAgICAgKGZvcndhcmQt
Y2hhcikKKwkgICAgICAoaWYgKGFuZCAoYy1zeW50YWN0aWMtcmUtc2VhcmNoLWZvcndhcmQgIls7
LF0iIG1hY3JvLWVuZCB0IHQpCisJCSAgICAgICAoZXEgKGNoYXItYmVmb3JlKSA/XDspKQorCQkg
IG5pbAorCQkoY29ucyBtYWNyby1zdGFydCBuaWwpKSkpIDsgKDIwMTYtMDgtMzApOiBMYXp5ISBX
ZSBoYXZlIG5vCiAJCQkJCTsgbGFuZ3VhZ2VzIHdoZXJlCiAJCQkJCTsgYGMtb3B0LWluZXhwci1i
cmFjZS1saXN0LWtleScgaXMKIAkJCQkJOyBub24tbmlsIGFuZCB3ZSBoYXZlIG1hY3Jvcy4KLQkg
KHQgdCkpKSkJCQk7OyBUaGUgY2FsbGVyIGNhbiBnbyB1cCBvbmUgbGV2ZWwuCi0gICAgICApKSkK
KwkgICAodCB0KSkpKQkJCTs7IFRoZSBjYWxsZXIgY2FuIGdvIHVwIG9uZSBsZXZlbC4KKwkpKSkp
CiAKIChkZWZ1biBjLWluc2lkZS1icmFjZWxpc3QtcCAoY29udGFpbmluZy1zZXhwIHBhcmVuLXN0
YXRlIGFjY2VwdC1pbi1wYXJlbikKICAgOzsgcmV0dXJuIHRoZSBidWZmZXIgcG9zaXRpb24gb2Yg
dGhlIGJlZ2lubmluZyBvZiB0aGUgYnJhY2UgbGlzdCBzdGF0ZW1lbnQKQEAgLTEzNjUyLDcgKzEz
NjMzLDcgQEAKIAkJbmlsKSkKIAkgICAgICgocHJvZ24KIAkJKGdvdG8tY2hhciByZXEtcG9zKQot
CQkoaWYgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKKwkJKGlmIChsb29r
aW5nLWF0IGMtcmVxdWlyZXMtY2xhdXNlLWtleSkKIAkJICAgIChzZXRxIGZvdW5kLWNsYXVzZSAo
Yy1mb3J3YXJkLWMrKy1yZXF1aXJlcy1jbGF1c2UgbmlsIHQpKQogCQkgIChhbmQgKGMtZm9yd2Fy
ZC1jb25jZXB0LWZyYWdtZW50KQogCQkgICAgICAgKHNldHEgZm91bmQtY2xhdXNlIChwb2ludCkp
KSkKQEAgLTEzODYzLDE4ICsxMzg0NCw4NCBAQAogCSAobG9va2luZy1hdCBjLXByZS1sYW1iZGEt
dG9rZW5zLXJlKSkpCiAgICAobm90IChjLWluLWxpdGVyYWwpKSkpCiAKKyhkZWZ1biBjLWxvb2tp
bmctYXQtYysrLWxhbWJkYS1leHByZXNzaW9uICgmb3B0aW9uYWwgbGltKQorICA7OyBJZiBwb2lu
dCBpcyBhdCB0aGUgWyBvcGVuaW5nIGEgQysrIGxhbWJkYSBleHByZXNzaW9ucydzIGNhcHR1cmUg
bGlzdCwKKyAgOzsgYW5kIHRoZSBsYW1iZGEgZXhwcmVzc2lvbiBpcyBjb21wbGV0ZSwgcmV0dXJu
IHRoZSBwb3NpdGlvbiBvZiB0aGUgeyB3aGljaAorICA7OyBvcGVucyB0aGUgYm9keSBmb3JtLCBv
dGhlcndpc2UgcmV0dXJuIG5pbC4gIExJTSBpcyB0aGUgbGltaXQgZm9yIGZvcndhcmQKKyAgOzsg
c2VhcmNoaW5nIGZvciB0aGUgey4KKyAgKGxldCAoKGhlcmUgKHBvaW50KSkKKwkobGltLW9yLW1h
eCAob3IgbGltIChwb2ludC1tYXgpKSkKKwlnb3QtcGFyYW1zKQorICAgICh3aGVuIChhbmQgKGMt
bG9va2luZy1hdC1jKystbGFtYmRhLWNhcHR1cmUtbGlzdCkKKwkgICAgICAgKGMtZ28tbGlzdC1m
b3J3YXJkIG5pbCBsaW0pKQorICAgICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKQorICAg
ICAgKHdoZW4gKGMtZm9yd2FyZC08Pi1hcmdsaXN0IHQpCisJKGMtZm9yd2FyZC1zeW50YWN0aWMt
d3MgbGltKQorCSh3aGVuIChsb29raW5nLWF0IGMtcmVxdWlyZXMtY2xhdXNlLWtleSkKKwkgIChj
LWZvcndhcmQtYysrLXJlcXVpcmVzLWNsYXVzZSBsaW0gbmlsKSkpCisgICAgICAod2hlbiAobG9v
a2luZy1hdCAiXFwoYWxpZ25hc1xcKVxcKFteYS16QS1aMC05XyRdXFx8JFxcKSIpCisJKGMtZm9y
d2FyZC1rZXl3b3JkLWNsYXVzZSAxKSkKKyAgICAgICh3aGVuIChhbmQgKGVxIChjaGFyLWFmdGVy
KSA/XCgpCisJCSAoYy1nby1saXN0LWZvcndhcmQgbmlsIGxpbSkpCisJKHNldHEgZ290LXBhcmFt
cyB0KQorCShjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkpCisgICAgICAod2hpbGUgKGFuZCBj
LWxhbWJkYS1zcGVjLWtleSAobG9va2luZy1hdCBjLWxhbWJkYS1zcGVjLWtleSkpCisJKGdvdG8t
Y2hhciAobWF0Y2gtZW5kIDEpKQorCShjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkpCisgICAg
ICAobGV0IChhZnRlci1leGNlcHQtcG9zKQorCSh3aGlsZQorCSAgICAoYW5kICg8PSAocG9pbnQp
IGxpbS1vci1tYXgpCisJCSAoY29uZAorCQkgICgoc2F2ZS1leGN1cnNpb24KKwkJICAgICAoYW5k
IChsb29raW5nLWF0ICJ0aHJvd1xcKFteYS16QS1aMC05X11cXHwkXFwpIikKKwkJCSAgKHByb2du
IChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkKKwkJCQkgKGMtZm9yd2FyZC1zeW50YWN0
aWMtd3MgbGltKQorCQkJCSAoZXEgKGNoYXItYWZ0ZXIpID9cKCkpCisJCQkgIChjLWdvLWxpc3Qt
Zm9yd2FyZCBuaWwgbGltKQorCQkJICAocHJvZ24gKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGlt
KQorCQkJCSAoc2V0cSBhZnRlci1leGNlcHQtcG9zIChwb2ludCkpKSkpCisJCSAgIChnb3RvLWNo
YXIgYWZ0ZXItZXhjZXB0LXBvcykKKwkJICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKQor
CQkgICB0KQorCQkgICgobG9va2luZy1hdCBjLXBhcmVuLW5vbnR5cGUta2V5KSA7ICJub2V4Y2Vw
dCIgb3IgImFsaWduYXMiCisJCSAgIChjLWZvcndhcmQta2V5d29yZC1jbGF1c2UgMSkpKSkpKQor
ICAgICAgKGFuZCAoPD0gKHBvaW50KSBsaW0tb3ItbWF4KQorCSAgIChsb29raW5nLWF0IGMtaGFz
a2VsbC1vcC1yZSkKKwkgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCisJICAgKHByb2duIChj
LWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkKKwkJICAoYy1mb3J3YXJkLXR5cGUgdCkpKQk7IHQg
aXMgQlJBQ0UtQkxPQ0stVE9PLgorICAgICAgKGFuZCBnb3QtcGFyYW1zCisJICAgKDw9IChwb2lu
dCkgbGltLW9yLW1heCkKKwkgICAobG9va2luZy1hdCBjLXJlcXVpcmVzLWNsYXVzZS1rZXkpCisJ
ICAgKGMtZm9yd2FyZC1jKystcmVxdWlyZXMtY2xhdXNlIGxpbSBuaWwpKQorICAgICAgKHByb2cx
IChhbmQgKDw9IChwb2ludCkgbGltLW9yLW1heCkKKwkJICAoZXEgKGNoYXItYWZ0ZXIpID97KQor
CQkgIChwb2ludCkpCisJKGdvdG8tY2hhciBoZXJlKSkpKSkKKworKGRlZnVuIGMtYmFja3dhcmQt
b3Zlci1sYW1iZGEtZXhwcmVzc2lvbiAoJm9wdGlvbmFsIGxpbSkKKyAgOzsgUG9pbnQgaXMgYXQg
YSB7LiAgTW92ZSBiYWNrIG92ZXIgdGhlIGxhbWJkYSBleHByZXNzaW9uIHRoaXMgaXMgYSBwYXJ0
IG9mLAorICA7OyBzdG9wcGluZyBhdCB0aGUgWyBvZiB0aGUgY2FwdHVyZSBsaXN0LCBpZiB0aGlz
IGlzIHRoZSBjYXNlLCByZXR1cm5pbmcKKyAgOzsgdGhlIHBvc2l0aW9uIG9mIHRoYXQgb3Blbmlu
ZyBicmFja2V0LiAgSWYgd2UncmUgbm90IGF0IHN1Y2ggYSBsaXN0LCBsZWF2ZQorICA7OyBwb2lu
dCB1bmNoYW5nZWQgYW5kIHJldHVybiBuaWwuCisgIChsZXQgKChoZXJlIChwb2ludCkpKQorICAg
IChjLXN5bnRhY3RpYy1za2lwLWJhY2t3YXJkICJeO31dIiBsaW0gdCkKKyAgICAoaWYgKGFuZCAo
ZXEgKGNoYXItYmVmb3JlKSA/XF0pCisJICAgICAoYy1nby1saXN0LWJhY2t3YXJkIG5pbCBsaW0p
CisJICAgICAoZXEgKGMtbG9va2luZy1hdC1jKystbGFtYmRhLWV4cHJlc3Npb24gKDErIGhlcmUp
KQorCQkgaGVyZSkpCisJKHBvaW50KQorICAgICAgKGdvdG8tY2hhciBoZXJlKQorICAgICAgbmls
KSkpCisKIChkZWZ1biBjLWMrKy12c2VtaS1wICgmb3B0aW9uYWwgcG9zKQogICA7OyBDKysgT25s
eSAtIElzIHRoZXJlIGEgInZpcnR1YWwgc2VtaWNvbG9uIiBhdCBQT1Mgb3IgcG9pbnQ/CiAgIDs7
IChTZWUgY2MtZGVmcy5lbCBmb3IgZnVsbCBkZXRhaWxzIG9mICJ2aXJ0dWFsIHNlbWljb2xvbnMi
LikKICAgOzsKICAgOzsgVGhpcyBpcyB0cnVlIHdoZW4gcG9pbnQgaXMgYXQgdGhlIGxhc3Qgbm9u
IHN5bnRhY3RpYyBXUyBwb3NpdGlvbiBvbiB0aGUKLSAgOzsgbGluZSwgYW5kIGVpdGhlciB0aGVy
ZSBpcyBhICJtYWNybyB3aXRoIHNlbWljb2xvbiIganVzdCBiZWZvcmUgaXQgKHNlZQotICA7OyBg
Yy1hdC1tYWNyby12c2VtaS1wJykgb3IgdGhlcmUgaXMgYSAicmVxdWlyZXMiIGNsYXVzZSB3aGlj
aCBlbmRzIHRoZXJlLgotICAobGV0IChyZXMpCi0gICAgKGNvbmQKLSAgICAgKChzZXRxIHJlcyAo
Yy1pbi1yZXF1aXJlcy1vci1hdC1lbmQtb2YtY2xhdXNlIHBvcykpCi0gICAgICAoYW5kIHJlcyAo
ZXEgKGNkciByZXMpIHQpKSkKLSAgICAgKChjLWF0LW1hY3JvLXZzZW1pLXApKSkpKQorICA7OyBs
aW5lLCBhbmQgdGhlcmUgaXMgYSAibWFjcm8gd2l0aCBzZW1pY29sb24iIGp1c3QgYmVmb3JlIGl0
IChzZWUKKyAgOzsgYGMtYXQtbWFjcm8tdnNlbWktcCcpLgorICAoYy1hdC1tYWNyby12c2VtaS1w
IHBvcykpCiAKIChkZWZ1biBjLWF0LW1hY3JvLXZzZW1pLXAgKCZvcHRpb25hbCBwb3MpCiAgIDs7
IElzIHRoZXJlIGEgInZpcnR1YWwgc2VtaWNvbG9uIiBhdCBQT1Mgb3IgcG9pbnQ/CkBAIC0xNDg1
Nyw3ICsxNDkwNCw2IEBACiAJCSAgIChwcm9nbiAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MgbGlt
KQogCQkJICAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiBuaWwgbmlsIGxpbSkpKQogCQkgICAo
bG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkgICAobm90IChlcSAoY2hh
ci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpCiAJCSAgIChzZXRxIHBsYWNlaG9sZGVyIChwb2lu
dCkpKSkKIAkgICAgKGdvdG8tY2hhciBwbGFjZWhvbGRlcikKIAkgICAgKGJhY2stdG8taW5kZW50
YXRpb24pCkBAIC0xNTI4Myw2ICsxNTMyOSwxMSBAQAogCiAJIDs7IE5PVEU6IFRoZSBwb2ludCBp
cyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyB0b2tlbiBoZXJlLgogCisJIDs7IENBU0UgNVU6
IFdlIGFyZSBqdXN0IGFmdGVyIGEgcmVxdWlyZXMgY2xhdXNlLgorCSAoKGFuZCAoc2V0cSBwbGFj
ZWhvbGRlciAoYy1pbi1yZXF1aXJlcy1vci1hdC1lbmQtb2YtY2xhdXNlKSkKKwkgICAgICAgKGVx
IChjZHItc2FmZSBwbGFjZWhvbGRlcikgdCkpCisJICAoYy1hZGQtc3ludGF4ICd0b3Btb3N0LWlu
dHJvLWNvbnQgKGNhciBwbGFjZWhvbGRlcikpKQorCiAJIDs7IENBU0UgNUo6IHdlIGFyZSBhdCB0
aGUgdG9wbW9zdCBsZXZlbCwgbWFrZQogCSA7OyBzdXJlIHdlIHNraXAgYmFjayBwYXN0IGFueSBh
Y2Nlc3Mgc3BlY2lmaWVycwogCSAoKGFuZApAQCAtMTU4MTgsOCArMTU4NjksNyBAQAogCQkgICAg
IChjLWdvLWxpc3QtYmFja3dhcmQgbmlsIGxpbSkpCiAJCSAocHJvZ24gKGMtYmFja3dhcmQtc3lu
dGFjdGljLXdzIGxpbSkKIAkJCSh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIG5pbCBuaWwgbGlt
KSkpCi0JCSAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkgKG5vdCAo
ZXEgKGNoYXItYWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkpCisJCSAobG9va2luZy1hdCBjLWZ1
bi1uYW1lLXN1YnN0aXR1dGUta2V5KSkpCiAJICAoZ290by1jaGFyIGNvbnRhaW5pbmctc2V4cCkK
IAkgIChiYWNrLXRvLWluZGVudGF0aW9uKQogCSAgKGMtYWRkLXN0bXQtc3ludGF4ICdkZWZ1bi1j
bG9zZSBuaWwgdCBsaW0gcGFyZW4tc3RhdGUpKQpAQCAtMTU5ODMsOCArMTYwMzMsNyBAQAogCQkg
ICAgIChjLWdvLWxpc3QtYmFja3dhcmQgbmlsIGxpbSkpCiAJCSAocHJvZ24gKGMtYmFja3dhcmQt
c3ludGFjdGljLXdzIGxpbSkKIAkJCSh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIG5pbCBuaWwg
bGltKSkpCi0JCSAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkgKG5v
dCAoZXEgKGNoYXItYWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkpCisJCSAobG9va2luZy1hdCBj
LWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KSkpCiAJICAoZ290by1jaGFyIGNvbnRhaW5pbmctc2V4
cCkKIAkgIChiYWNrLXRvLWluZGVudGF0aW9uKQogCSAgKGMtYWRkLXN5bnRheCAnZGVmdW4tYmxv
Y2staW50cm8gKHBvaW50KSkpCmRpZmYgLXIgNDhhZDY2MWEyZDdkIGNjLWZvbnRzLmVsCi0tLSBh
L2NjLWZvbnRzLmVsCU1vbiBKdWwgMjIgMTI6MDk6MzQgMjAyNCArMDAwMAorKysgYi9jYy1mb250
cy5lbAlGcmkgU2VwIDIwIDE0OjE1OjE3IDIwMjQgKzAwMDAKQEAgLTEzODksOCArMTM4OSw3IEBA
CiAJCQkJICAobWVtcSB0eXBlICcoYy1kZWNsLWFyZy1zdGFydAogCQkJCQkgICAgICAgYy1kZWNs
LXR5cGUtc3RhcnQpKSkpKSkpKQogCQkgICAgICAoKGFuZCAoemVyb3AgKGMtYmFja3dhcmQtdG9r
ZW4tMikpCi0JCQkgICAgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJ
CSAgICAobm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkpKSkpKSkKKwkJ
CSAgICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KSkpKSkpKSkpCiAgICAg
ICA7OyBDYWNoZSB0aGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBmb3IgbmV4dCB0aW1lIGFyb3VuZC4K
ICAgICAgIChjLXB1dC1jaGFyLXByb3BlcnR5ICgxLSBtYXRjaC1wb3MpICdjLXR5cGUgJ2MtZGVj
bC1hcmctc3RhcnQpCiAgICAgICAoY29ucyAnZGVjbCBuaWwpKQpkaWZmIC1yIDQ4YWQ2NjFhMmQ3
ZCBjYy1sYW5ncy5lbAotLS0gYS9jYy1sYW5ncy5lbAlNb24gSnVsIDIyIDEyOjA5OjM0IDIwMjQg
KzAwMDAKKysrIGIvY2MtbGFuZ3MuZWwJRnJpIFNlcCAyMCAxNDoxNToxNyAyMDI0ICswMDAwCkBA
IC0yNjM5LDYgKzI2MzksMTkgQEAKICAgdCAoYy1tYWtlLWtleXdvcmRzLXJlIHQgKGMtbGFuZy1j
b25zdCBjLWVxdWFscy10eXBlLWNsYXVzZS1rd2RzKSkpCiAoYy1sYW5nLWRlZnZhciBjLWVxdWFs
cy10eXBlLWNsYXVzZS1rZXkgKGMtbGFuZy1jb25zdCBjLWVxdWFscy10eXBlLWNsYXVzZS1rZXkp
KQogCisoYy1sYW5nLWRlZmNvbnN0IGMtbGFtYmRhLXNwZWMta3dkcworICAiS2V5d29yZHMgd2hp
Y2ggYXJlIHNwZWNpZmllcnMgb2YgY2VydGFpbiBlbGVtZW50cyBvZiBhIEMrKyBsYW1iZGEgZnVu
Y3Rpb24uCitUaGlzIGlzIG9ubHkgdXNlZCBpbiBDKysgTW9kZS4iCisgIHQgbmlsCisgIGMrKyAn
KCJtdXRhYmxlIiAiY29uc3RleHByIiAiY29uc3RldmFsIiAic3RhdGljIikpCisKKyhjLWxhbmct
ZGVmY29uc3QgYy1sYW1iZGEtc3BlYy1rZXkKKyAgOzsgQSByZWd1bGFyIGV4cHJlc3Npb24gd2hp
Y2ggbWF0Y2hlcyBhIG1lbWJlciBvZiBgYy1sYW1iZGEtc3BlYy1rd2RzJywKKyAgOzsgb3Igbmls
LgorICB0IChpZiAoYy1sYW5nLWNvbnN0IGMtbGFtYmRhLXNwZWMta3dkcykKKwkoYy1tYWtlLWtl
eXdvcmRzLXJlIHQgKGMtbGFuZy1jb25zdCBjLWxhbWJkYS1zcGVjLWt3ZHMpKSkpCisoYy1sYW5n
LWRlZnZhciBjLWxhbWJkYS1zcGVjLWtleSAoYy1sYW5nLWNvbnN0IGMtbGFtYmRhLXNwZWMta2V5
KSkKKwogKGMtbGFuZy1kZWZjb25zdCBjLWVxdWFscy1ub250eXBlLWRlY2wta3dkcwogICAiS2V5
d29yZHMgd2hpY2ggYXJlIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIgdGhlbiBhbiBcIj1cIgog
c2lnbiwgd2hpY2ggZGVjbGFyZXMgdGhlIGlkZW50aWZpZXIgdG8gYmUgc29tZXRoaW5nIG90aGVy
IHRoYW4gYQpAQCAtMjY1NywyMCArMjY3MCwzMyBAQAogKGMtbGFuZy1kZWZjb25zdCBjLWZ1bi1u
YW1lLXN1YnN0aXR1dGUta3dkcwogICAiS2V5d29yZHMgd2hpY2ggdGFrZSB0aGUgcGxhY2Ugb2Yg
dHlwZStkZWNsYXJhdG9yIGF0IHRoZSBiZWdpbm5pbmcKIG9mIGEgZnVuY3Rpb24tbGlrZSBzdHJ1
Y3R1cmUsIHN1Y2ggYXMgYSBDKysyMCBcInJlcXVpcmVzXCIKLWNsYXVzZS4gIEFuIGFyZ2xpc3Qg
bWF5IG9yIG1heSBub3QgZm9sbG93IHN1Y2ggYSBrZXl3b3JkLiIKK2V4cHJlc3Npb24uICBBbiBh
cmdsaXN0IG1heSBvciBtYXkgbm90IGZvbGxvdyBzdWNoIGEga2V5d29yZC4KK05vdCB0byBiZSBj
b25mdXNlZCB3aXRoIGBjLXJlcXVpcmVzLWNsYXVzZS1rd2RzJy4iCiAgIHQgbmlsCiAgIGMrKyAn
KCJyZXF1aXJlcyIpKQogCiAoYy1sYW5nLWRlZmNvbnN0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1r
ZXkKICAgOzsgQW4gdW5hZG9ybmVkIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBtYXRjaGVzIGFu
eSBtZW1iZXIgb2YKICAgOzsgYGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rd2RzJy4KLSAgdCAoYy1t
YWtlLWtleXdvcmRzLXJlICdhcHBlbmRhYmxlIChjLWxhbmctY29uc3QgYy1mdW4tbmFtZS1zdWJz
dGl0dXRlLWt3ZHMpKSkKKyAgdCAoYy1tYWtlLWtleXdvcmRzLXJlIHQgKGMtbGFuZy1jb25zdCBj
LWZ1bi1uYW1lLXN1YnN0aXR1dGUta3dkcykpKQogOzsgV2UgdXNlICdhcHBlbmRhYmxlLCBzbyB0
aGF0IHdlIGdldCAiXFw+IiBvbiB0aGUgcmVnZXhwLCBidXQgd2l0aG91dCBhIGZ1cnRoZXIKIDs7
IGNoYXJhY3Rlciwgd2hpY2ggd291bGQgbWVzcyB1cCBiYWNrd2FyZCByZWdleHAgc2VhcmNoIGZy
b20ganVzdCBhZnRlciB0aGUKIDs7IGtleXdvcmQuICBJZiBvbmx5IFhFbWFjcyBoYWQgXFxfPi4g
IDstKAogKGMtbGFuZy1kZWZ2YXIgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleQogCSAgICAgICAo
Yy1sYW5nLWNvbnN0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpKQogCisoYy1sYW5nLWRlZmNv
bnN0IGMtcmVxdWlyZXMtY2xhdXNlLWt3ZHMKKyAgIktleXdvcmRzIHdoaWNoIGludHJvZHVjZSBh
IEMrKyByZXF1aXJlcyBjbGF1c2UsIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuCitUaGlzIHNob3Vs
ZCBub3QgYmUgY29uZnVzZWQgd2l0aCBgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWt3ZHMnLiIKKyAg
dCBuaWwKKyAgYysrICcoInJlcXVpcmVzIikpCisKKyhjLWxhbmctZGVmY29uc3QgYy1yZXF1aXJl
cy1jbGF1c2Uta2V5CisgIDs7IEEgcmVnZXhwIG1hdGNoaW5nIGFueSBtZW1iZXIgb2YgYGMtcmVx
dWlyZXMtY2xhdXNlLWt3ZHMnLgorICB0IChjLW1ha2Uta2V5d29yZHMtcmUgdCAoYy1sYW5nLWNv
bnN0IGMtcmVxdWlyZXMtY2xhdXNlLWt3ZHMpKSkKKzs7IFNlZSBgYy1mdW4tbmFtZS1zdWJzdGl0
dXRlLWtleScgZm9yIHRoZSBqdXN0aWZpY2F0aW9uIG9mIGFwcGVuZGFibGUuCisoYy1sYW5nLWRl
ZnZhciBjLXJlcXVpcmVzLWNsYXVzZS1rZXkgKGMtbGFuZy1jb25zdCBjLXJlcXVpcmVzLWNsYXVz
ZS1rZXkpKQorCiAoYy1sYW5nLWRlZmNvbnN0IGMtbW9kaWZpZXIta3dkcwogICAiS2V5d29yZHMg
dGhhdCBjYW4gcHJlZml4IG5vcm1hbCBkZWNsYXJhdGlvbnMgb2YgaWRlbnRpZmllcnMKIFwoYW5k
IHR5cGljYWxseSBhY3QgYXMgZmxhZ3MpLiAgVGhpbmdzIGxpa2UgYXJndW1lbnQgZGVjbGFyYXRp
b25zCgoKCj4gU2VlbXMgdG8gYmUgd29ya2luZyBxdWl0ZSB3ZWxsIGluIHNvbWUgY29udHJpdmVk
IHRlc3RzIGFuZCBhIGZldwo+IGZyYWdtZW50cyBvZiByZWFsaXN0aWMgbG9va2luZyBjb2RlLgoK
PiBUaGFuayB5b3UhCgo+IEhhdmUgYSBsb3ZlbHkgZXZlbmluZy4KPiAtLSAKPiBBcnNlbiBBcnNl
bm92acSHCgotLSAKQWxhbiBNYWNrZW56aWUgKE51cmVtYmVyZywgR2VybWFueSkuCgoKCg==