Re: A 'makedep' feature for m4.

Eric Blake via M4-patches <[email protected]> Mon, 26 May 2025 07:41:42 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <2m7rtn4ykgyyirbuef2hr3gmi3pxyoe2kfnllwzjj2avndlesx@w6ampsskywfj>
T24gU2F0LCBNYXkgMjQsIDIwMjUgYXQgMDI6MjA6MDhQTSAtMDQwMCwgRGF2aWQgTS4gV2FybWUg
d3JvdGU6Cj4gRXJpYywKPiAKPiBTb3JyeSBhYm91dCB0aGUgc2NyYW1ibGVkIHBhdGNoIGZpbGVz
LiAgSSBhbSByZS1zZW5kaW5nIGFzIHRleHQgb25seQo+IChzdGlsbCBtaW1lIGVuY29kZWQpIHdp
dGggYm90aCB0aGUgYnJhbmNoLTEuNCBhbmQgYnJhbmNoLTEuNiBwYXRjaAo+IGZpbGVzIHNlbnQg
YXMgZ3ppcHBlZCBhdHRhY2htZW50cy4gIFRoaXMgc2hvdWxkIGZvcmNlIHRoZSBhdHRhY2htZW50
cwo+IHRvIGJlIGVuY29kZWQgdXNpbmcgYmFzZTY0IGFuZCBhcnJpdmUgaW50YWN0LgoKRm9jdXNp
bmcgb24gdGhlIGJyYW5jaC0xLjYgcGF0Y2g6Cgo+ICsrKyBiL05FV1MKPiBAQCAtMTk2LDYgKzE5
Niw4IEBAIGZvbGxvd2luZyBiZXRhIGZlYXR1cmVzIHRoYXQgd2VyZSBkZWVtZWQgd29ydGggZGVm
ZXJyaW5nIHVudGlsIDEuNjoKPiAgCj4gICogTm90ZXdvcnRoeSBjaGFuZ2VzIGluIHJlbGVhc2Ug
MS40LjE5ICgyMDIxLTA1LTI4KSBbc3RhYmxlXQo+ICAKPiArKiogQWRkIG5ldyBjYXBhYmlsaXR5
IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgbWFrZSBkZXBlbmRlbmN5IHJ1bGVzLgoKSSdtIGhv
aXN0aW5nIHRoaXMgZWFybGllciBpbiB0aGUgZmlsZSwgc2luY2UgaXQgZGlkIG5vdCBtYWtlIGl0
IGludG8KdGhlIDEuNC4xOSByZWxlYXNlLiAgSXQncyBhbHNvIHdvcnRoIGNhbGxpbmcgb3V0IHRo
ZSBuZXcgY29tbWFuZCBsaW5lCm9wdGlvbnMgYnkgbmFtZSAoZG93biB0aGUgcm9hZCwgaXQncyBl
YXNpZXIgdG8gc2VhcmNoIGZvciB3aGVuIGFuCm9wdGlvbiB3YXMgYWRkZWQgaWYgdGhlIG9wdGlv
bidzIG5hbWUgaXMgcHJlc2VudCBpbiBORVdTKS4KCj4gKysrIGIvY2hlY2tzL2NoZWNrLXRoZW0K
PiBAQCAtMzcsNiArMzcsNyBAQCBvdXQ9JHRtcC9tNC1vdXQKPiAgZXJyPSR0bXAvbTQtZXJyCj4g
IHhvdXQ9JHRtcC9tNC14b3V0Cj4gIHhlcnI9JHRtcC9tNC14ZXJyCj4gK3hhdXg9JHRtcC9tNC14
YXV4Cj4gIGZhaWxlZD0KPiAgc2tpcHBlZD0KPiAgc3RyaXBfbmVlZGVkPWZhbHNlCj4gQEAgLTEw
NCw3ICsxMDUsOCBAQCBkbwo+ICAgICAgICBjb250aW51ZSA7Owo+ICAgIGVzYWMKPiAgCj4gLSAg
b3B0aW9ucz1gJHtTRUR9IC1uZSAnM3MvXmRubCBAIGV4dHJhIG9wdGlvbnM6IC8vcDszcScgIiRm
aWxlImAKPiArICBvcHRpb25zPWAke1NFRH0gLW5lICczcy9eZG5sIEAgZXh0cmEgb3B0aW9uczog
Ly9wOzNxJyAiJGZpbGUiIFwKPiArICAgIHwgJHtTRUR9IC1lICJzL1RNUFwvLyR0bXBcLy8iYAoK
InNlZCAuLi4gfCBzZWQgLi4uIiBjYW4gdXN1YWxseSBiZSBjb21wYWN0ZWQgaW50byAic2VkIC4u
LiIuICBBbmQgdXNlCm9mIFwgaW5zaWRlIGAgaXMgYWx3YXlzIGEgcGFpbiB0byBnZXQgcmlnaHQu
ICBJJ20gc2ltcGxpZnlpbmcgdGhpcyBvbmUKc2xpZ2h0bHkuCgo+ICAgICR7U0VEfSAtZSAnL15k
bmwgQC9kJyAtZSAnL15cXkQkL3EnICIkZmlsZSIgXAo+ICAgICAgfCBMQ19NRVNTQUdFUz1DIExB
Tkc9QyBNNFBBVEg9JGV4YW1wbGVzICIkbTQiIC1kICRvcHRpb25zIC0gPiRvdXQgMj4kZXJyCj4g
ICAgc3RhdD0kPwo+IEBAIC0xMjYsOCArMTI4LDkgQEAgZG8KPiAgCj4gICAgeG91dGZpbGU9YCR7
U0VEfSAtbiAncy9eZG5sIEAgZXhwZWN0ZWQgb3V0cHV0OiAvL3AnICIkZmlsZSJgCj4gICAgaWYg
dGVzdCAteiAiJHhvdXRmaWxlIiA7IHRoZW4KPiAtICAgICR7U0VEfSAtZSAnL15kbmwgQHJlc3Vs
dHt9LyFkJyAtZSAncy8vLycgLWUgInN8ZXhhbXBsZXMvfCRleGFtcGxlcy98IiBcCj4gLSAgICAg
IC1lICJzfEB2YWx1ZXtWRVJTSU9OfXwkbTR2ZXJzaW9ufCIgIiRmaWxlIiA+ICR4b3V0Cj4gKyAg
ICAke1NFRH0gLW5lICdzL15kbmwgQHJlc3VsdHt9Ly9wJyAiJGZpbGUiIFwKPiArICAgIHwgJHtT
RUR9IC1lICJzfGV4YW1wbGVzL3wkZXhhbXBsZXMvfCIgXAo+ICsgICAgICAtZSAic3xAdmFsdWV7
VkVSU0lPTn18JG00dmVyc2lvbnwiID4gJHhvdXQKClVubGVzcyBJJ20gcmVhZGluZyBpdCB3cm9u
ZywgdGhpcyBodW5rIGFkZHMgYSBwcm9jZXNzLCBidXQgb3RoZXJ3aXNlCm1ha2VzIG5vIGRpZmZl
cmVuY2UgaW4gdGhlIHJlc3VsdGluZyBvdXRwdXQgKGVpdGhlciB3aXRoIHRoZQpwcmUtZXhpc3Rp
bmcgb25lIHNlZCwgb3Igd2l0aCB5b3VyIHJld3JpdHRlbiBwaXBlbGluZSBvZiBzZWRzLCB0aGUg
bmV0CnJlc3VsdCBpcyB0aGF0IG9ubHkgdGhlIGxpbmVzIHN0YXJ0aW5nIHdpdGggJ2RubCBAcmVz
dWx0e30nIGFyZQpwcmludGVkIHdpdGggdGhhdCBwcmVmaXggc3RyaXBwZWQgYW5kICJleGFtcGxl
cyIgYW5kICJAdmFsdWV7VkVSU0lPTn0iCnJld3JpdHRlbikuICBTaW5jZSBpdCBpcyB1bnJlbGF0
ZWQgdG8geW91ciBmZWF0dXJlLCBJJ20gZXhjbHVkaW5nIGl0LgoKPiAgICBlbHNlCj4gICAgICBj
cCAiJGV4YW1wbGVzLyR4b3V0ZmlsZSIgJHhvdXQKPiAgICBmaQo+IEBAIC0xNDksNiArMTUyLDgg
QEAgZG8KPiAgICAgICAgICAiJGV4YW1wbGVzLyR4ZXJyZmlsZSIgPiAkeGVyciA7Owo+ICAgIGVz
YWMKPiAgCj4gKyAgYXV4ZmlsZT1gJHtTRUR9IC1uICdzL15kbmwgQCBleHBlY3RlZCBhdXhmaWxl
OiAvL3AnICIkZmlsZSJgCj4gKwo+ICAgICMgRm9yIHRoZSBiZW5lZml0IG9mIG1pbmd3LCBub3Jt
YWxpemUgXHJcbiBsaW5lIGVuZGluZ3MKPiAgICBpZiAkc3RyaXBfbmVlZGVkIDsgdGhlbgo+ICAg
ICAgdHIgLWQgJ1wwMTUnIDwgJG91dCA+ICRvdXQudAo+IEBAIC0xNzksNiArMTg0LDMyIEBAIGRv
Cj4gICAgICBkaWZmICRkaWZmb3B0cyAkeGVyciAkZXJyCj4gICAgZmkKPiAgCj4gKyAgaWYgdGVz
dCAtbiAiJGF1eGZpbGUiOyB0aGVuCj4gKyAgICB0YXV4ZmlsZT1gZWNobyAiJGF1eGZpbGUiIHwg
JHtTRUR9IC1lICJzL1RNUFwvLyR0bXBcLy8iYAoKVGhpcyBpcyB1bnNhZmUgaWYgJHRtcCBjb250
YWlucyAvLiAgQmV0dGVyIGlzIHRvIHVzZSBhbiBhbHRlcm5hdGl2ZQpkZWxpbWl0ZXIsIGxpa2Ug
InN8VE1QL3wkdG1wL3wiLgoKPiArKysgYi9jaGVja3MvZ2V0LXRoZW0KCj4gQEAgLTExNiw5ICsx
MjUsOSBAQCBCRUdJTiB7Cj4gICAgfQo+ICAgIGlmICgkMCB+IC9eXF5EJC8pCj4gICAgICBuZXh0
Owo+IC0gIGlmICgkMCB+IC9eXCQgQGtiZC8pCj4gKyAgaWYgKCQwIH4gL15cJCBAa2JkLyB8fCAk
MCB+IC9eQGtiZC8pCgpPaCwgcGVla2luZyBhaGVhZCwgSSBzZWUgd2hlcmUgeW91IHdyb3RlOgoK
PiArJCBAa2Jke200IC1JIGV4YW1wbGVzIC0tbWFrZWRlcD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAt
dGFyZ2V0PVRhcmdldCBcfQo+ICtAa2JkeyAgICAtLW1ha2VkZXAtZ2VuLW1pc3NpbmctYWxsIGZv
byBub25lIC19CgpJdCB3b3VsZCBhbHNvIGJlIHBvc3NpYmxlIHRvIGNvbmRlbnNlIHRoaXMgYmFj
ayBpbnRvIG9uZSByZWdleCwgcmF0aGVyCnRoYW4gdHdvIChlaXRoZXIgc2tpcHBpbmcgYW55IGxp
bmUgdGhhdCBjb250YWlucyBAa2JkIGFueXdoZXJlLCBvcgpzdGlsbCByZXF1aXJpbmcgaXQgdG8g
YmUgbmVhciB0aGUgZnJvbnQgYnV0IG1ha2luZyB0aGUgIlwkICIgcHJlZml4Cm9wdGlvbmFsKS4K
Cj4gKysrIGIvZG9jL200LnRleGkKPiBAQCAtMzYsNiArMzYsMTQgQEAKPiAgQHJ7W31AdmFye1x2
YXJuYW1lXH0gPSBAc2FtcHtcZGVmYXVsdFx9QHJ7XX0KPiAgQGVuZCBtYWNybwo+ICAKPiArQGMg
QGF1eHJlc3VsdHthdXhmaWxlfQo+ICtAYyAtLS0tLS0tLS0tLS0KPiArQGMgVXNlZCBpbiBleGFt
cGxlcyB0byBpbmRpY2F0ZSBvdXRwdXQgcHJvZHVjZWQgd2l0aGluIHRoZQo+ICtAYyBgYGF1eGls
bGlhcnkgb3V0cHV0IGZpbGUuJycKPiArQG1hY3JvIGF1eHJlc3VsdHthdXhmaWxlfQo+ICtcYXV4
ZmlsZVwgQGJ7QHJlc3VsdHt9fQo+ICtAZW5kIG1hY3JvCj4gKwo+ICBAY29tbWVudCAlKiplbmQg
b2YgaGVhZGVyCj4gIEBjb21tZW50ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Cj4gIAo+IEBAIC0xNDgsNiArMTU2LDcgQEAKPiAgKiBQcmVw
cm9jZXNzb3IgZmVhdHVyZXM6OiAgICAgICBDb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgcHJlcHJv
Y2Vzc29yIGZlYXR1cmVzCj4gICogTGltaXRzIGNvbnRyb2w6OiAgICAgICAgICAgICAgQ29tbWFu
ZCBsaW5lIG9wdGlvbnMgZm9yIGxpbWl0cyBjb250cm9sCj4gICogRnJvemVuIHN0YXRlOjogICAg
ICAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIGZyb3plbiBzdGF0ZQo+ICsqIE1h
a2UgZGVwZW5kZW5jeSBnZW5lcmF0aW9uOjogIEdlbmVyYXRpbmcgbWFrZSBkZXBlbmRlbmN5IHJ1
bGVzCgpJIHN0aWxsIHRoaW5rIHRoaXMgY2hhcHRlciBmaXRzIGJldHRlciByaWdodCBhZnRlciAn
UHJlcHJvY2Vzc29yCmZlYXR1cmVzJyAoaWUuIHN3YXBwZWQgd2l0aCBMaW1pdHMgY29udHJvbCBh
bmQgRnJvemVuIHN0YXRlKTsgaXQncyBhbgplYXN5IHNodWZmbGUgdG8gbWFrZS4KCj4gICogRGVi
dWdnaW5nIG9wdGlvbnM6OiAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIGRlYnVn
Z2luZwo+ICAqIENvbW1hbmQgbGluZSBmaWxlczo6ICAgICAgICAgIFNwZWNpZnlpbmcgaW5wdXQg
ZmlsZXMgb24gdGhlIGNvbW1hbmQgbGluZQo+ICAKPiBAQCAtNTgzLDYgKzU5Miw3IEBACj4gICog
UHJlcHJvY2Vzc29yIGZlYXR1cmVzOjogICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHBy
ZXByb2Nlc3NvciBmZWF0dXJlcwo+ICAqIExpbWl0cyBjb250cm9sOjogICAgICAgICAgICAgIENv
bW1hbmQgbGluZSBvcHRpb25zIGZvciBsaW1pdHMgY29udHJvbAo+ICAqIEZyb3plbiBzdGF0ZTo6
ICAgICAgICAgICAgICAgIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBmcm96ZW4gc3RhdGUKPiAr
KiBNYWtlIGRlcGVuZGVuY3kgZ2VuZXJhdGlvbjo6ICBHZW5lcmF0aW5nIG1ha2UgZGVwZW5kZW5j
eSBydWxlcwo+ICAqIERlYnVnZ2luZyBvcHRpb25zOjogICAgICAgICAgIENvbW1hbmQgbGluZSBv
cHRpb25zIGZvciBkZWJ1Z2dpbmcKPiAgKiBDb21tYW5kIGxpbmUgZmlsZXM6OiAgICAgICAgICBT
cGVjaWZ5aW5nIGlucHV0IGZpbGVzIG9uIHRoZSBjb21tYW5kIGxpbmUKPiAgQGVuZCBtZW51Cj4g
QEAgLTkwNCw2ICs5MTQsMTkxIEBACj4gIGZpbGVzIGFyZSByZWFkLgo+ICBAZW5kIHRhYmxlCj4g
IAo+ICtAbm9kZSBNYWtlIGRlcGVuZGVuY3kgZ2VuZXJhdGlvbgo+ICtAc2VjdGlvbiBDb21tYW5k
IGxpbmUgb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBNYWtlZmlsZSBkZXBlbmRlbmN5IHJ1bGVzCj4g
Kwo+ICtNYWtlZmlsZSBkZXBlbmRlbmN5IHJ1bGVzIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBieSBzcGVjaWZ5aW5nCj4gK2JvdGggdGhlIEBjb2Rley0tbWFrZWRlcD19QHZhcntmaWxl
fSBhbmQKPiArQGNvZGV7LS1tYWtlZGVwLXRhcmdldD19QHZhcnt0YXJnZXR9IG9wdGlvbnMuCgpA
b3B0aW9uIG1heSBiZSBuaWNlciB0aGFuIEBjb2RlIGluIHRoZSByZW5kZXJpbmcgaGVyZSwgYW5k
IGluIHNldmVyYWwKb3RoZXIgcGxhY2VzIGluIHRoZSBwYXRjaC4gIEhvd2V2ZXIsIEknbGwgcHJv
YmFibHkgZGVmZXIgYSBtb3JlCmRldGFpbGVkIHByb29mLXJlYWRpbmcgYW5kIGVkaXRpbmcgcGFz
cyB1bnRpbCBsYXRlcjsgbXkgZ29hbCBvbgp0b2RheSdzIHJldmlldyBpcyBtYWtpbmcgc3VyZSB0
aGUgY29kZSBjb21waWxlcyBhbmQgdGVzdHMgcnVuLgoKLi4uCj4gKwo+ICtAY29tbWVudCBvcHRp
b25zOiAtLW1ha2VkZXA9VE1QL2RlcGZpbGUgLS1tYWtlZGVwLXRhcmdldD1UYXJnZXQgZm9vCj4g
K0Bjb21tZW50IGF1eGZpbGU6IFRNUC9kZXBmaWxlCj4gK0BleGFtcGxlCj4gKyQgQGtiZHttNCAt
SSBleGFtcGxlcyAtLW1ha2VkZXA9VE1QL2RlcGZpbGUgLS1tYWtlZGVwLXRhcmdldD1UYXJnZXQg
Zm9vfQo+ICtAcmVzdWx0e31iYXIKPiArQGF1eHJlc3VsdHtUTVAvZGVwZmlsZX0jIEF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGJ5IEdOVSBtNC4KCkkgd291bGQgcHJlZmVyIHRvIHNlZSBzb21ldGhp
bmcgbGlrZSAnJCBAa2Jke2NhdCBUTVAvZGVwZmlsZX0nIGJlZm9yZQppbnRyb2R1Y2luZyBAYXV4
cmVzdWx0e30gaW5mb3JtYXRpb24uICBPbiB0aGUgb3RoZXIgaGFuZCwgb25jZSBJIGRpZAp0aGF0
LCB0aGUgbWFudWFsIGxvb2tzIGxpa2UgdGhpcywgYW5kIEknbSB0aGlua2luZyB0aGUgc3Vic2Vx
dWVudApUTVAvZGVwZmlsZSBsZWFkaW5zIG9uIHRoZSBsYXRlciBsaW5lcyBhcmUgcmVwZXRpdGl2
ZSBhbmQgdGhlCm1vbm9zcGFjZSBmb250IGxlYWRzIHRvIGxvbmcgbGluZXMgKGluIHRoZSBwZGYg
dmlldywgaXQncyBsZXNzIHRoYW4gODAKY29sdW1ucywgYnV0IGxvbmdlciB0aGFuIHRoZSByZXN0
IG9mIHRoZSBtYXJnaW5zKSwgc28gSSBtYXkgdHdlYWsgaXQKZnVydGhlciBzdGlsbDoKCnwgJCBt
NCAtSSBleGFtcGxlcyAtLW1ha2VkZXA9VE1QL2RlcGZpbGUgLS1tYWtlZGVwLXRhcmdldD1UYXJn
ZXQgXAp8IC0tbWFrZWRlcC1nZW4tbWlzc2luZy1hbGwgZm9vIG5vbmUgLQp8IOKHkmJhcgp8IGVy
cm9yIG00OiBjYW5ub3Qgb3BlbiAnbm9uZSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKfCBp
bmNsdWRlKGBpbmNsLm00JykKfCDih5JJbmNsdWRlIGZpbGUgc3RhcnQKfCDih5Jmb28KfCDih5JJ
bmNsdWRlIGZpbGUgZW5kCnwg4oeSCnwgaW5jbHVkZShgbm9uZTInKQp8IOKHkgp8IGVycm9yIG00
OnN0ZGluOjI6IGluY2x1ZGU6IGNhbm5vdCBvcGVuICdub25lMic6IE5vIHN1Y2ggZmlsZSBvciBk
aXJlY3RvcnkKfCBzaW5jbHVkZShgbm9uZTMnKQp8IOKHkgp8IF5ECnwgJCBjYXQgVE1QL2RlcGZp
bGUKfCBUTVAvZGVwZmlsZSDih5IjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IEdOVSBtNC4K
fCBUTVAvZGVwZmlsZSDih5JUYXJnZXQ6IC4vLi4vZXhhbXBsZXMvZm9vIG5vbmUgLi8uLi9leGFt
cGxlcy9pbmNsLm00IG5vbmUyIG5vbmUzCgo+ICsrKyBiL3NyYy9idWlsdGluLmMKPiBAQCAtMTQ5
NCwxMyArMTQ5NCwxNCBAQCBtNF9jaGFuZ2Vjb20gKHN0cnVjdCBvYnN0YWNrICpvYnMgTUFZQkVf
VU5VU0VELCBpbnQgYXJnYywKPiAgICAgYXJndW1lbnQsIGlmIGl0IGV4aXN0cy4gIENvbXBsYWlu
IGFib3V0IGluYWNjZXNzaWJsZSBmaWxlcyBpZmYKPiAgICAgU0lMRU5UIGlzIGZhbHNlLiAgKi8K
PiAgc3RhdGljIHZvaWQKPiAtaW5jbHVkZSAoaW50IGFyZ2MsIG1hY3JvX2FyZ3VtZW50cyAqYXJn
diwgYm9vbCBzaWxlbnQpCj4gK2luY2x1ZGUgKGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFy
Z3YsIGJvb2wgc2lsZW50LCBpbnQgcmVmX2Zyb20pCj4gIHsKPiAgICBjb25zdCBjYWxsX2luZm8g
Km1lID0gYXJnX2luZm8gKGFyZ3YpOwo+ICAgIEZJTEUgKmZwOwo+ICAgIGNoYXIgKm5hbWU7Cj4g
ICAgY29uc3QgY2hhciAqYXJnOwo+ICAgIHNpemVfdCBsZW47Cj4gKyAgaW50IGZhaWw7Cj4gIAo+
ICAgIGlmIChiYWRfYXJnYyAobWUsIGFyZ2MsIDEsIDEpKQo+ICAgICAgcmV0dXJuOwo+IEBAIC0x
NTEzLDEyICsxNTE0LDIxIEBAIGluY2x1ZGUgKGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFy
Z3YsIGJvb2wgc2lsZW50KQo+ICAgIGZwID0gbTRfcGF0aF9zZWFyY2ggKGFyZywgZmFsc2UsICZu
YW1lKTsKPiAgICBpZiAoZnAgPT0gTlVMTCkKPiAgICAgIHsKPiArICAgICAgZmFpbCA9ICFzaWxl
bnQ7Cj4gKyAgICAgIGlmICgobWFrZWRlcF9nZW5fbWlzc2luZyAmIHJlZl9mcm9tKSAhPSAwKQo+
ICsgICAgICAgIHsKPiArICAgICAgICAgIHJlY29yZF9kZXBlbmRlbmN5IChhcmcsIHJlZl9mcm9t
KTsKPiArICAgICAgICAgIGZhaWwgPSAwOwo+ICsgICAgICAgIH0KPiAgICAgICAgaWYgKCFzaWxl
bnQpCj4gICAgICAgICAgbTRfZXJyb3IgKDAsIGVycm5vLCBtZSwgXygiY2Fubm90IG9wZW4gJXMi
KSwKPiAgICAgICAgICAgICAgICAgICAgcXVvdGVhcmdfc3R5bGUgKGxvY2FsZV9xdW90aW5nX3N0
eWxlLCBhcmcpKTsKPiArICAgICAgaWYgKGZhaWwpCj4gKyAgICAgICAgcmV0Y29kZSA9IEVYSVRf
RkFJTFVSRTsKPiAgICAgICAgcmV0dXJuOwo+ICAgICAgfQo+ICAKPiArICByZWNvcmRfZGVwZW5k
ZW5jeSAobmFtZSwgcmVmX2Zyb20pOwo+ICAgIHB1c2hfZmlsZSAoZnAsIG5hbWUsIHRydWUpOwo+
ICAgIGZyZWUgKG5hbWUpOwo+ICB9Cj4gQEAgLTE1MjcsNyArMTUzNyw3IEBAIGluY2x1ZGUgKGlu
dCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFyZ3YsIGJvb2wgc2lsZW50KQo+ICBzdGF0aWMgdm9p
ZAo+ICBtNF9pbmNsdWRlIChzdHJ1Y3Qgb2JzdGFjayAqb2JzIE1BWUJFX1VOVVNFRCwgaW50IGFy
Z2MsIG1hY3JvX2FyZ3VtZW50cyAqYXJndikKPiAgewo+IC0gIGluY2x1ZGUgKGFyZ2MsIGFyZ3Ys
IGZhbHNlKTsKPiArICBpbmNsdWRlIChhcmdjLCBhcmd2LCBmYWxzZSwgUkVGX0lOQ0xVREUpOwo+
ICB9Cj4gIAo+ICAvKiBJbmNsdWRlIGEgZmlsZSwgaWdub3JpbmcgZXJyb3JzLiAgKi8KPiBAQCAt
MTUzNSw3ICsxNTQ1LDcgQEAgc3RhdGljIHZvaWQKPiAgbTRfc2luY2x1ZGUgKHN0cnVjdCBvYnN0
YWNrICpvYnMgTUFZQkVfVU5VU0VELCBpbnQgYXJnYywKPiAgICAgICAgICAgICAgIG1hY3JvX2Fy
Z3VtZW50cyAqYXJndikKPiAgewo+IC0gIGluY2x1ZGUgKGFyZ2MsIGFyZ3YsIHRydWUpOwo+ICsg
IGluY2x1ZGUgKGFyZ2MsIGFyZ3YsIHRydWUsIFJFRl9TSU5DTFVERSk7Cj4gIH0KPiAgDAo+ICAv
KiBNb3JlIG1pc2NlbGxhbmVvdXMgYnVpbHRpbnMgLS0gIm1ha2V0ZW1wIiwgImVycnByaW50Iiwg
Il9fZmlsZV9fIiwKPiBkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKPiBpbmRl
eCA2OWNkNWU0MS4uZDkxZmEzY2QgMTAwNjQ0Cj4gLS0tIGEvc3JjL2V2YWwuYwo+ICsrKyBiL3Ny
Yy9ldmFsLmMKPiBAQCAtNDMxLDYgKzQzMSw3IEBAIHBhcnNlX2V4cHIgKGludDMyX3QgKnYxLCBl
dmFsX2Vycm9yIGVyLCB1bnNpZ25lZCBtaW5fcHJlYykKPiAgICAgICAgICAgICAgIHRoYXQgdGhl
IGltcGxlbWVudGF0aW9uLWRlZmluZWQgb3ZlcmZsb3cgd2hlbiBjYXN0aW5nCj4gICAgICAgICAg
ICAgICB1bnNpZ25lZCB0byBzaWduZWQgaXMgYSBzaWxlbnQgdHdvcy1jb21wbGVtZW50Cj4gICAg
ICAgICAgICAgICB3cmFwLWFyb3VuZC4gICovCj4gKyAgICAgICAgICB1MyA9IDE7Cj4gICAgICAg
ICAgICBpZiAodjIgPCAwKQo+ICAgICAgICAgICAgICBlciA9IE5FR0FUSVZFX0VYUE9ORU5UOwo+
ICAgICAgICAgICAgZWxzZSBpZiAoKnYxID09IDAgJiYgdjIgPT0gMCkKClRoaXMgYXBwZWFycyB1
bnJlbGF0ZWQuICBCdXQgSSBjYW4gc2VlIGhvdyBpdCBzaWxlbmNlcyBhIGNvbXBpbGVyCndhcm5p
bmc7IEknbGwgcHVzaCB0aGF0IGZpeCBzZXBhcmF0ZWx5IChhY3R1YWxseSwgSSdsbCBwcm9iYWJs
eSBwdWxsCnRoZSBhc3NpZ25tZW50ICcqdjEgPSB1MycgaW50byB0aGUgY29uZGl0aW9uYWwgYXJt
IHdoZXJlIHUzIGlzIGFscmVhZHkKc2V0KS4KCj4gZGlmZiAtLWdpdCBhL3NyYy9tNC5jIGIvc3Jj
L200LmMKPiBpbmRleCA4OWEyZWMyZi4uYWEyMzI3YTUgMTAwNjQ0Cj4gLS0tIGEvc3JjL200LmMK
PiArKysgYi9zcmMvbTQuYwoKPiBAQCAtMzMzLDYgKzM3OSwxNiBAQCBlbnVtCj4gIHsKPiAgICBE
RUJVR0ZJTEVfT1BUSU9OID0gQ0hBUl9NQVggKyAxLCAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwo+
ICAgIFdBUk5fTUFDUk9fU0VRVUVOQ0VfT1BUSU9OLCAgIC8qIG5vIHNob3J0IG9wdCAqLwo+ICsg
IE1BS0VERVBfT1BUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gc2hvcnQgb3B0ICov
Cj4gKyAgTUFLRURFUF9UQVJHRVRfT1BUSU9OLCAgICAgICAgICAgICAgICAvKiBubyBzaG9ydCBv
cHQgKi8KPiArICBNQUtFREVQX0dFTl9NSVNTSU5HX0FSR0ZJTEVTX09QVElPTiwgIC8qIG5vIHNo
b3J0IG9wdCAqLwo+ICsgIE1BS0VERVBfR0VOX01JU1NJTkdfSU5DTFVERV9PUFRJT04sICAgLyog
bm8gc2hvcnQgb3B0ICovCj4gKyAgTUFLRURFUF9HRU5fTUlTU0lOR19TSU5DTFVERV9PUFRJT04s
ICAvKiBubyBzaG9ydCBvcHQgKi8KPiArICBNQUtFREVQX0dFTl9NSVNTSU5HX0FMTF9PUFRJT04s
ICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwo+ICsgIE1BS0VERVBfUEhPTllfQVJHRklMRVNfT1BU
SU9OLCAgICAgICAgLyogbm8gc2hvcnQgb3B0ICovCj4gKyAgTUFLRURFUF9QSE9OWV9JTkNMVURF
X09QVElPTiwgICAgICAgICAvKiBubyBzaG9ydCBvcHQgKi8KPiArICBNQUtFREVQX1BIT05ZX1NJ
TkNMVURFX09QVElPTiwgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwo+ICsgIE1BS0VERVBfUEhP
TllfQUxMX09QVElPTiwgICAgICAgICAgICAgLyogbm8gc2hvcnQgb3B0ICovCj4gIAo+ICAgIEhF
TFBfT1BUSU9OLCAgICAgICAgICAgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwo+ICAgIFZFUlNJ
T05fT1BUSU9OICAgICAgICAgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwoKT3RoZXIgdGhhbiBI
RUxQIGFuZCBWRVJTSU9OLCBpdCBtYWtlcyBzZW5zZSB0byB0cnkgYW5kIGtlZXAgdGhpcwpzZWN0
aW9uIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4KCj4gQEAgLTY1OSw2ICs3NzgsMzAgQEAgbWFpbiAo
aW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjaGFyICpjb25zdCAqZW52cCBNQVlCRV9VTlVT
RUQpCj4gICAgICBtNF9lcnJvciAoMCwgZXJybm8sIE5VTEwsIF8oImNhbm5vdCBzZXQgZGVidWcg
ZmlsZSAlcyIpLAo+ICAgICAgICAgICAgICAgIHF1b3RlYXJnX3N0eWxlIChsb2NhbGVfcXVvdGlu
Z19zdHlsZSwgZGVidWdmaWxlKSk7Cj4gIAo+ICsgIC8qIFZlcmlmeSBtdXR1YWwgY29uc2lzdGVu
Y3kgb2YgbWFrZWRlcCBvcHRpb25zLiAqLwo+ICsgIGlmICgobWFrZWRlcF9wYXRoID09IE5VTEwp
ICYmIChtYWtlZGVwX3RhcmdldCA9PSBOVUxMKSkKCkkgdGhpbmsgdGhpcyBsb29rcyBiZXR0ZXIg
YXMgImlmICghbWFrZWRlcF9wYXRoICYmICFtYWtlZGVwX3RhcmdldCkiCgo+ICsgICAgewo+ICsg
ICAgICAvKiBNYWtlZGVwIG1vZGUgaXMgTk9UIGFjdGl2ZS4gKi8KPiArICAgICAgaWYgKG1ha2Vk
ZXBfZ2VuX21pc3NpbmcgIT0gMCkKPiArICAgICAgICBtNF9lcnJvciAoMCwgMCwgTlVMTCwKPiAr
ICAgICAgICAgICAgICAgICAgXygiLS1tYWtlZGVwLWdlbi1taXNzaW5nLSogcmVxdWlyZXMgLS1t
YWtlZGVwIGFuZCAtLW1ha2VkZXAtdGFyZ2V0IikpOwo+ICsgICAgICBpZiAobWFrZWRlcF9waG9u
eSAhPSAwKQo+ICsgICAgICAgIG00X2Vycm9yICgwLCAwLCBOVUxMLAo+ICsgICAgICAgICAgICAg
ICAgICBfKCItLW1ha2VkZXAtcGhvbnktKiByZXF1aXJlcyAtLW1ha2VkZXAgYW5kIC0tbWFrZWRl
cC10YXJnZXQiKSk7Cj4gKyAgICAgIGlmICgobWFrZWRlcF9nZW5fbWlzc2luZyB8IG1ha2VkZXBf
cGhvbnkpICE9IDApCj4gKyAgICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKPiArICAgIH0KPiAr
ICBlbHNlIGlmICgobWFrZWRlcF9wYXRoICE9IE5VTEwpICYmIChtYWtlZGVwX3RhcmdldCAhPSBO
VUxMKSkKCmFuZCAiaWYgKG1ha2VkZXBfcGF0aCAmJiBtYWtlZGVwX3RhcmdldCkiCgouLi4KPiAr
KysgYi9zcmMvcGF0aC5jCj4gQEAgLTM2LDYgKzM2LDE4IEBAIHR5cGVkZWYgc3RydWN0IGluY2x1
ZGVzIGluY2x1ZGVzOwo+ICBzdGF0aWMgaW5jbHVkZXMgKmRpcl9saXN0OyAgICAgIC8qIHRoZSBs
aXN0IG9mIHBhdGggZGlyZWN0b3JpZXMgKi8KPiAgc3RhdGljIGluY2x1ZGVzICpkaXJfbGlzdF9l
bmQ7ICAvKiB0aGUgZW5kIG9mIHNhbWUgKi8KPiAgc3RhdGljIGludCBkaXJfbWF4X2xlbmd0aDsg
ICAgICAvKiBsZW5ndGggb2YgbG9uZ2VzdCBkaXJlY3RvcnkgbmFtZSAqLwo+ICsgCj4gK3N0cnVj
dCBkZXBlbmRlbmN5Cj4gK3sKPiArICBzdHJ1Y3QgZGVwZW5kZW5jeSAqbmV4dDsgICAgICAvKiBu
ZXh0IGluIGxpc3Qgb2YgZGVwZW5kZW5jaWVzICovCj4gKyAgaW50IHJlZl9mcm9tOyAgICAgICAg
ICAgICAgICAgLyogYml0IG1hc2s6IHBsYWNlcyBmaWxlIHJlZmVyZW5jZWQgZnJvbSAqLwo+ICsg
IGNoYXIgKnBhdGg7ICAgICAgICAgICAgICAgICAgIC8qIHBhdGhuYW1lIG9mIHRoaXMgZGVwZW5k
ZW5jeSAqLwo+ICt9Owo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgZGVwZW5kZW5jeSBkZXBlbmRlbmN5
Owo+ICsKPiArc3RhdGljIGRlcGVuZGVuY3kgKmRlcGVuZGVuY3lfbGlzdDsgICAgIC8qIHRoZSBs
aXN0IG9mIGRlcGVuZGVuY2llcyAqLwo+ICtzdGF0aWMgZGVwZW5kZW5jeSAqZGVwZW5kZW5jeV9s
aXN0X2VuZDsgLyogdGhlIGVuZCBvZiBzYW1lICovCj4gIAwKPiAgCj4gIHZvaWQKPiBAQCAtMTk0
LDYgKzIwNiw3NCBAQCBtNF9wYXRoX3NlYXJjaCAoY29uc3QgY2hhciAqZmlsZSwgYm9vbCBiaW5h
cnksIGNoYXIgKipyZXN1bHQpCj4gICAgcmV0dXJuIGZwOwo+ICB9Cj4gIAo+ICt2b2lkCj4gK3Jl
Y29yZF9kZXBlbmRlbmN5IChjb25zdCBjaGFyICpwYXRoLCBpbnQgcmVmX2Zyb20pCj4gK3sKPiAr
ICBkZXBlbmRlbmN5ICpkcDsKPiArICBmb3IgKGRwID0gZGVwZW5kZW5jeV9saXN0OyBkcCAhPSBO
VUxMOyBkcCA9IGRwLT5uZXh0KQo+ICsgICAgaWYgKHN0cmNtcCAocGF0aCwgZHAtPnBhdGgpID09
IDApCgpUaGVyZSBpcyB0aGUgU1RSRVEgbWFjcm8gZm9yIHRoaXMuCgo+ICsKPiArdm9pZAo+ICtn
ZW5lcmF0ZV9tYWtlX2RlcGVuZGVuY2llcyAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAq
dGFyZ2V0LCBpbnQgcGhvbnkpCj4gK3sKPiArICBGSUxFICpmcDsKPiArICBzaXplX3QgY29sLCBs
ZW4sIG1heGNvbDsKPiArICBkZXBlbmRlbmN5ICpkcDsKPiArCj4gKyAgZnAgPSBmb3BlbiAocGF0
aCwgInciKTsKPiArICBpZiAoZnAgPT0gTlVMTCkKPiArICAgIHsKPiArICAgICAgbTRfZXJyb3Ig
KDAsIGVycm5vLCBOVUxMLCBfKCJ1bmFibGUgdG8gb3BlbiAlcyIpLAo+ICsgICAgICAgICAgICAg
ICAgcXVvdGVhcmdfc3R5bGVfbWVtIChsb2NhbGVfcXVvdGluZ19zdHlsZSwKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgc3RybGVuIChwYXRoKSkpOwo+ICsgICAg
ICByZXR1cm47Cj4gKyAgICB9Cj4gKwo+ICsgIGZwdXRzIChfKCIjIEF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGJ5IEdOVSBtNC5cbiIpLCBmcCk7CgpTaG91bGQgdGhpcyBpbmNsdWRlIHRoZSBNNCB2
ZXJzaW9uIG51bWJlcj8KCj4gKwo+ICsgIC8qIEdlbmVyYXRlIHRoZSBtYWluIGRlcGVuZGVuY3kg
cnVsZS4gKi8KPiArICBtYXhjb2wgPSA3ODsKPiArICBmcHJpbnRmIChmcCwgIiVzOiIsIHRhcmdl
dCk7Cj4gKyAgY29sID0gc3RybGVuICh0YXJnZXQpICsgMTsKPiArICBmb3IgKGRwID0gZGVwZW5k
ZW5jeV9saXN0OyBkcCAhPSBOVUxMOyBkcCA9IGRwLT5uZXh0KQo+ICsgICAgewo+ICsgICAgICBs
ZW4gPSAxICsgc3RybGVuIChkcC0+cGF0aCk7Cj4gKyAgICAgIGlmIChjb2wgKyBsZW4gKyAyID4g
bWF4Y29sKSAvKiArMiBpcyBmb3IgdHJhaWxpbmcgc3BhY2UvYmFja3NsYXNoICovCj4gKyAgICAg
ICAgewo+ICsgICAgICAgICAgZnByaW50ZiAoZnAsIiBcXFxuICIpOwoKZnByaW50ZigpIGlzIG92
ZXJraWxsIHdoZW4gdGhlcmUgYXJlIG5vICUgZGlyZWN0aXZlcy4KCkFsbCB0b2xkLCBoZXJlJ3Mg
d2hhdCBJJ20gc3F1YXNoaW5nIGluLiAgSSd2ZSBwdXNoZWQgdGhlIHBhdGNoIHRvIHRoZQptYWtl
ZGVwIGJyYW5jaCBmb3Igbm93LCBhbmQgd2lsbCBtZXJnZSBpdCB0byBicmFuY2gtMS42IG9uY2Ug
SSd2ZSBoYWQKYW5vdGhlciByZWFkIHRocm91Z2ggaXQuCgpGcm9tIGJiMGNkMDA1M2QxZTQ2N2Q2
MTY2MGQ5N2IzOGJjZTkzMjZlOWVjOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVy
aWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgpEYXRlOiBTdW4sIDI1IE1heSAyMDI1IDIxOjAy
OjUzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCBicmFuY2gtMS42XSBzcXVhc2ggbWUKQ29udGVudC10
eXBlOiB0ZXh0L3BsYWluCgotLS0KIE5FV1MgICAgICAgICAgICAgIHwgIDEwICstCiBjaGVja3Mv
Y2hlY2stdGhlbSB8ICAxNyArLS0KIGRvYy9tNC50ZXhpICAgICAgIHwgMzgwICsrKysrKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9tNC5jICAgICAgICAgIHwg
IDMyICsrLS0KIHNyYy9tNC5oICAgICAgICAgIHwgICAyICstCiBzcmMvcGF0aC5jICAgICAgICB8
ICAxMCArLQogNiBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9ucygrKSwgMjE5IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IGYyODYxZmFhLi42YmJiMzQ3ZSAx
MDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0zLDYgKzMsMTQgQEAgR05VIE00IE5FV1Mg
LSBVc2VyIHZpc2libGUgY2hhbmdlcy4KICogTm90ZXdvcnRoeSBjaGFuZ2VzIGluIFZlcnNpb24g
MS42ICg/Pz8/LT8/LT8/KSBbc3RhYmxlXQogICBSZWxlYXNlZCBieSA/Pz8/LCBiYXNlZCBvbiBn
aXQgdmVyc2lvbnMgMS40LjEwYi54LSogYW5kIDEuNS4qCgorKiogQWRkIG5ldyBjYXBhYmlsaXR5
IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgbWFrZSBkZXBlbmRlbmN5IHJ1bGVzLgorICAgVGhp
cyBpcyBlbmFibGVkIGJ5IHRoZSBuZXcgY29tbWFuZC1saW5lIG9wdGlvbiBwYWlyICctLW1ha2Vk
ZXA9RklMRScKKyAgIGFuZCAnLS1tYWtlZGVwLXRhcmdldD1UQVJHRVQnIGFuZCBmdXJ0aGVyIHR1
bmVkIGJ5CisgICAnLS1tYWtlZGVwLWdlbi1taXNzaW5nLWFyZ2ZpbGVzJywgJy0tbWFrZWRlcC1n
ZW4tbWlzc2luZy1pbmNsdWRlJywKKyAgICctLW1ha2VkZXAtZ2VuLW1pc3Npbmctc2luY2x1ZGUn
LCAnLS1tYWtlZGVwLWdlbi1taXNzaW5nLWFsbCcsCisgICAnLS1tYWtlZGVwLXBob255LWFyZ2Zp
bGVzJywgJy0tbWFrZWRlcC1waG9ueS1pbmNsdWRlJywKKyAgICctLW1ha2VkZXAtcGhvbnktc2lu
Y2x1ZGUnLCBhbmQgJy0tbWFrZWRlcC1waG9ueS1hbGwnLgorCiAqKiBGaXggcmVncmVzc2lvbnMg
aW50cm9kdWNlZCBpbiAxLjQuMTBiOgogKioqIFVzaW5nIGBidWlsdGluJyBvciBgaW5kaXInIHRv
IHBlcmZvcm0gbmVzdGVkIGBzaGlmdCcgY2FsbHMgdHJpZ2dlcmVkCiAgICAgYW4gYXNzZXJ0aW9u
IGZhaWx1cmUgKG5vdCBwcmVzZW50IGluIDEuNC4xMSkuCkBAIC0xOTMsOCArMjAxLDYgQEAgZm9s
bG93aW5nIGJldGEgZmVhdHVyZXMgdGhhdCB3ZXJlIGRlZW1lZCB3b3J0aCBkZWZlcnJpbmcgdW50
aWwgMS42OgoKICogTm90ZXdvcnRoeSBjaGFuZ2VzIGluIHJlbGVhc2UgMS40LjE5ICgyMDIxLTA1
LTI4KSBbc3RhYmxlXQoKLSoqIEFkZCBuZXcgY2FwYWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlIG1ha2UgZGVwZW5kZW5jeSBydWxlcy4KLQogKiogQSBudW1iZXIgb2YgcG9ydGFiaWxp
dHkgaW1wcm92ZW1lbnRzIGluaGVyaXRlZCBmcm9tIGdudWxpYiwgaW5jbHVkaW5nCiAgICB0aGUg
YWJpbGl0eSB0byBwZXJmb3JtIHN0YWNrIG92ZXJmbG93IGRldGVjdGlvbiBvbiBtb3JlIHBsYXRm
b3JtcwogICAgd2l0aG91dCBsaW5raW5nIHRvIEdOVSBsaWJzaWdzZWd2LgpkaWZmIC0tZ2l0IGEv
Y2hlY2tzL2NoZWNrLXRoZW0gYi9jaGVja3MvY2hlY2stdGhlbQppbmRleCAwOWM3YzE0Zi4uMGIy
ODMxMzQgMTAwNzU1Ci0tLSBhL2NoZWNrcy9jaGVjay10aGVtCisrKyBiL2NoZWNrcy9jaGVjay10
aGVtCkBAIC05OCwxNSArOTgsMTUgQEAgZG8KICAgICAqc3RhY2tvdmYudGVzdCkKICAgICAgICIk
ZmlsZSIgIiRtNCIKICAgICAgIGNhc2UgJD8gaW4KLQk3Nykgc2tpcHBlZD0iJHNraXBwZWQgJGZp
bGUiOzsKLQkwKSA7OwotCSopIGZhaWxlZD0iJGZhaWxlZCAkZmlsZSIKKyAgICAgICAgNzcpIHNr
aXBwZWQ9IiRza2lwcGVkICRmaWxlIjs7CisgICAgICAgIDApIDs7CisgICAgICAgICopIGZhaWxl
ZD0iJGZhaWxlZCAkZmlsZSIKICAgICAgIGVzYWMKICAgICAgIGNvbnRpbnVlIDs7CiAgIGVzYWMK
Ci0gIG9wdGlvbnM9YCR7U0VEfSAtbmUgJzNzL15kbmwgQCBleHRyYSBvcHRpb25zOiAvL3A7M3En
ICIkZmlsZSIgXAotICAgIHwgJHtTRUR9IC1lICJzL1RNUFwvLyR0bXBcLy8iYAorICBvcHRpb25z
PWAke1NFRH0gLW5lICIzIHsgc3xUTVAvfCR0bXAvfGc7IHMvXmRubCBAIGV4dHJhIG9wdGlvbnM6
IC8vcDsgcSB9IiBcCisgICAgICIkZmlsZSJgCiAgICR7U0VEfSAtZSAnL15kbmwgQC9kJyAtZSAn
L15cXkQkL3EnICIkZmlsZSIgXAogICAgIHwgTENfTUVTU0FHRVM9QyBMQU5HPUMgTTRQQVRIPSRl
eGFtcGxlcyAiJG00IiAtZCAkb3B0aW9ucyAtID4kb3V0IDI+JGVycgogICBzdGF0PSQ/CkBAIC0x
MjgsOSArMTI4LDggQEAgZG8KCiAgIHhvdXRmaWxlPWAke1NFRH0gLW4gJ3MvXmRubCBAIGV4cGVj
dGVkIG91dHB1dDogLy9wJyAiJGZpbGUiYAogICBpZiB0ZXN0IC16ICIkeG91dGZpbGUiIDsgdGhl
bgotICAgICR7U0VEfSAtbmUgJ3MvXmRubCBAcmVzdWx0e30vL3AnICIkZmlsZSIgXAotICAgIHwg
JHtTRUR9IC1lICJzfGV4YW1wbGVzL3wkZXhhbXBsZXMvfCIgXAotICAgICAgLWUgInN8QHZhbHVl
e1ZFUlNJT059fCRtNHZlcnNpb258IiA+ICR4b3V0CisgICAgJHtTRUR9IC1lICcvXmRubCBAcmVz
dWx0e30vIWQnIC1lICdzLy8vJyAtZSAic3xleGFtcGxlcy98JGV4YW1wbGVzL3wiIFwKKyAgICAg
IC1lICJzfEB2YWx1ZXtWRVJTSU9OfXwkbTR2ZXJzaW9ufCIgIiRmaWxlIiA+ICR4b3V0CiAgIGVs
c2UKICAgICBjcCAiJGV4YW1wbGVzLyR4b3V0ZmlsZSIgJHhvdXQKICAgZmkKQEAgLTE4NSw3ICsx
ODQsNyBAQCBkbwogICBmaQoKICAgaWYgdGVzdCAtbiAiJGF1eGZpbGUiOyB0aGVuCi0gICAgdGF1
eGZpbGU9YGVjaG8gIiRhdXhmaWxlIiB8ICR7U0VEfSAtZSAicy9UTVBcLy8kdG1wXC8vImAKKyAg
ICB0YXV4ZmlsZT1gZWNobyAiJGF1eGZpbGUiIHwgJHtTRUR9IC1lICJzfFRNUC98JHRtcC98ZyJg
CiAgICAgaWYgdGVzdCAtZiAiJHRhdXhmaWxlIjsgdGhlbgogICAgICAgJHtTRUR9IC1uZSAnc3xe
ZG5sIEBhdXhyZXN1bHR7W0EtWmEtejAtOV8vXSp9fHxwJyA8ICRmaWxlID4keGF1eAogICAgICAg
aWYgJHN0cmlwX25lZWRlZCA7IHRoZW4KZGlmZiAtLWdpdCBhL2RvYy9tNC50ZXhpIGIvZG9jL200
LnRleGkKaW5kZXggYmNkNWFlNDUuLjcyMjgxZWYzIDEwMDY0NAotLS0gYS9kb2MvbTQudGV4aQor
KysgYi9kb2MvbTQudGV4aQpAQCAtMzksNyArMzksNyBAQAogQGMgQGF1eHJlc3VsdHthdXhmaWxl
fQogQGMgLS0tLS0tLS0tLS0tCiBAYyBVc2VkIGluIGV4YW1wbGVzIHRvIGluZGljYXRlIG91dHB1
dCBwcm9kdWNlZCB3aXRoaW4gdGhlCi1AYyBgYGF1eGlsbGlhcnkgb3V0cHV0IGZpbGUuJycKK0Bj
IGBgYXV4aWxpYXJ5IG91dHB1dCBmaWxlLicnCiBAbWFjcm8gYXV4cmVzdWx0e2F1eGZpbGV9CiBc
YXV4ZmlsZVwgQGJ7QHJlc3VsdHt9fQogQGVuZCBtYWNybwpAQCAtMTU0LDkgKzE1NCw5IEBAIFRv
cAoKICogT3BlcmF0aW9uIG1vZGVzOjogICAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMg
Zm9yIG9wZXJhdGlvbiBtb2RlcwogKiBQcmVwcm9jZXNzb3IgZmVhdHVyZXM6OiAgICAgICBDb21t
YW5kIGxpbmUgb3B0aW9ucyBmb3IgcHJlcHJvY2Vzc29yIGZlYXR1cmVzCisqIE1ha2UgZGVwZW5k
ZW5jeSBnZW5lcmF0aW9uOjogIEdlbmVyYXRpbmcgbWFrZSBkZXBlbmRlbmN5IHJ1bGVzCiAqIExp
bWl0cyBjb250cm9sOjogICAgICAgICAgICAgIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBsaW1p
dHMgY29udHJvbAogKiBGcm96ZW4gc3RhdGU6OiAgICAgICAgICAgICAgICBDb21tYW5kIGxpbmUg
b3B0aW9ucyBmb3IgZnJvemVuIHN0YXRlCi0qIE1ha2UgZGVwZW5kZW5jeSBnZW5lcmF0aW9uOjog
IEdlbmVyYXRpbmcgbWFrZSBkZXBlbmRlbmN5IHJ1bGVzCiAqIERlYnVnZ2luZyBvcHRpb25zOjog
ICAgICAgICAgIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBkZWJ1Z2dpbmcKICogQ29tbWFuZCBs
aW5lIGZpbGVzOjogICAgICAgICAgU3BlY2lmeWluZyBpbnB1dCBmaWxlcyBvbiB0aGUgY29tbWFu
ZCBsaW5lCgpAQCAtNTkwLDkgKzU5MCw5IEBAIEludm9raW5nIG00CiBAbWVudQogKiBPcGVyYXRp
b24gbW9kZXM6OiAgICAgICAgICAgICBDb21tYW5kIGxpbmUgb3B0aW9ucyBmb3Igb3BlcmF0aW9u
IG1vZGVzCiAqIFByZXByb2Nlc3NvciBmZWF0dXJlczo6ICAgICAgIENvbW1hbmQgbGluZSBvcHRp
b25zIGZvciBwcmVwcm9jZXNzb3IgZmVhdHVyZXMKKyogTWFrZSBkZXBlbmRlbmN5IGdlbmVyYXRp
b246OiAgR2VuZXJhdGluZyBtYWtlIGRlcGVuZGVuY3kgcnVsZXMKICogTGltaXRzIGNvbnRyb2w6
OiAgICAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIGxpbWl0cyBjb250cm9sCiAq
IEZyb3plbiBzdGF0ZTo6ICAgICAgICAgICAgICAgIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBm
cm96ZW4gc3RhdGUKLSogTWFrZSBkZXBlbmRlbmN5IGdlbmVyYXRpb246OiAgR2VuZXJhdGluZyBt
YWtlIGRlcGVuZGVuY3kgcnVsZXMKICogRGVidWdnaW5nIG9wdGlvbnM6OiAgICAgICAgICAgQ29t
bWFuZCBsaW5lIG9wdGlvbnMgZm9yIGRlYnVnZ2luZwogKiBDb21tYW5kIGxpbmUgZmlsZXM6OiAg
ICAgICAgICBTcGVjaWZ5aW5nIGlucHV0IGZpbGVzIG9uIHRoZSBjb21tYW5kIGxpbmUKIEBlbmQg
bWVudQpAQCAtODA3LDYgKzgwNywxOTUgQEAgUHJlcHJvY2Vzc29yIGZlYXR1cmVzCiBmaWxlIG5h
bWVzLgogQGVuZCB0YWJsZQoKK0Bub2RlIE1ha2UgZGVwZW5kZW5jeSBnZW5lcmF0aW9uCitAc2Vj
dGlvbiBDb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBNYWtlZmlsZSBkZXBlbmRl
bmN5IHJ1bGVzCisKK01ha2VmaWxlIGRlcGVuZGVuY3kgcnVsZXMgY2FuIGJlIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGJ5IHNwZWNpZnlpbmcKK2JvdGggdGhlIEBjb2Rley0tbWFrZWRlcD19QHZh
cntmaWxlfSBhbmQKK0Bjb2Rley0tbWFrZWRlcC10YXJnZXQ9fUB2YXJ7dGFyZ2V0fSBvcHRpb25z
LgorCitAdGFibGUgQGNvZGUKK0BpdGVtIC0tbWFrZWRlcD1AdmFye2ZpbGV9CitDYXVzZXMgQGNv
ZGV7bTR9IHRvIGdlbmVyYXRlIGEgZGVwZW5kZW5jeSBydWxlIGludG8gdGhlIHNwZWNpZmllZAor
QHZhcntmaWxlfS4gIE1hY3JvIGV4cGFuc2lvbiBvdXRwdXQgaXMgc3RpbGwgd3JpdHRlbiB0byBz
dGRvdXQgYXMKK25vcm1hbC4gIFRoaXMgb3B0aW9uIGlzIGFuYWxvZ291cyB0byB0aGUgQGNvZGV7
LU1GfSBvcHRpb24gb2YKK0Bjb2Rle2djY30uCisKK0BpdGVtIC0tbWFrZWRlcC10YXJnZXQ9QHZh
cnt0YXJnZXR9CitTcGVjaWZpZXMgQHZhcnt0YXJnZXR9IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhl
IGdlbmVyYXRlZCBkZXBlbmRlbmN5CitydWxlLiAgVGhlIHN0cmluZyBAdmFye3RhcmdldH0gaXMg
dXNlZCB2ZXJiYXRpbSwgYW5kIGNhbiBjb250YWluIHNldmVyYWwKK2xvZ2ljYWwgdGFyZ2V0cyBz
ZXBhcmF0ZWQgYnkgc3BhY2VzLiAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0bwor
cHJvcGVybHkgZXhwcmVzcyBjaGFyYWN0ZXJzIHRoYXQgQGNvZGV7bWFrZX0gaGFuZGxlcyBzcGVj
aWFsbHkgKHN1Y2ggYXMKKydAY29kZXskfScsIG9yIHNwYWNlcyB3aXRoaW4gZmlsZSBuYW1lcyku
ICBTaW5jZSBAY29kZXttNH0gc2VuZHMgaXRzCittYWNybyBleHBhbnNpb24gb3V0cHV0IHRvIHN0
ZG91dCwgaXQgbmV2ZXIgcmVhbGx5IGtub3dzIHRoZSBuYW1lIG9mIHRoZQordGFyZ2V0IGZpbGUg
YmVpbmcgZ2VuZXJhdGVkLCBzbyB0aGUgdGFyZ2V0IG11c3QgYWx3YXlzIGJlIHNwZWNpZmllZAor
ZXhwbGljaXRseSBieSB0aGUgdXNlciB3aXRoIHRoaXMgb3B0aW9uLiAgVGhpcyBvcHRpb24gaXMg
YW5hbG9nb3VzIHRvCit0aGUgQGNvZGV7LU1UfSBvcHRpb24gb2YgQGNvZGV7Z2NjfSAoZXhjZXB0
IHRoYXQgQGNvZGV7Z2NjfSBhbGxvd3MKK0Bjb2Rley1NVH0gdG8gYmUgc3BlY2lmaWVkIG11bHRp
cGxlIHRpbWVzKS4KK0BlbmQgdGFibGUKKworTm90ZSB0aGF0IHRoZSBAY29kZXstLW1ha2VkZXA9
fUB2YXJ7ZmlsZX0gYW5kCitAY29kZXttYWtlZGVwLXRhcmdldD19QHZhcnt0YXJnZXR9IG9wdGlv
bnMgbXVzdCBlaXRoZXIgKGEpIGJvdGggYmUKK3NwZWNpZmllZCwgb3IgKGIpIG5laXRoZXIgYmUg
c3BlY2lmaWVkLiAgVGhleSBjYW5ub3QgYmUgdXNlZAoraW5kZXBlbmRlbnRseSBvZiBlYWNoIG90
aGVyLgorCitAY29tbWVudCBvcHRpb25zOiAtLW1ha2VkZXA9VE1QL2RlcGZpbGUgLS1tYWtlZGVw
LXRhcmdldD1UYXJnZXQgZm9vCitAY29tbWVudCBhdXhmaWxlOiBUTVAvZGVwZmlsZQorQGV4YW1w
bGUKKyQgQGtiZHttNCAtSSBleGFtcGxlcyAtLW1ha2VkZXA9VE1QL2RlcGZpbGUgLS1tYWtlZGVw
LXRhcmdldD1UYXJnZXQgZm9vfQorQHJlc3VsdHt9YmFyCiskIEBrYmR7Y2F0IFRNUC9kZXBmaWxl
fQorQGF1eHJlc3VsdHtUTVAvZGVwZmlsZX0jIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IEdO
VSBtNC4KK0BhdXhyZXN1bHR7VE1QL2RlcGZpbGV9VGFyZ2V0OiAuLy4uL2V4YW1wbGVzL2Zvbwor
QGVuZCBleGFtcGxlCisKK0Bjb21tZW50IFNlcGFyYXRlIHRoZXNlIHR3byBleGFtcGxlcy4KK0Bz
cCAxCisKK0Bjb21tZW50IG9wdGlvbnM6IC0tbWFrZWRlcD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAt
dGFyZ2V0PVRhcmdldCBmb28KK0Bjb21tZW50IGF1eGZpbGU6IFRNUC9kZXBmaWxlCitAZXhhbXBs
ZQorJCBAa2Jke200IC1JIGV4YW1wbGVzIC0tbWFrZWRlcD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAt
dGFyZ2V0PVRhcmdldCBmb28gLX0KK0ByZXN1bHR7fWJhcgoraW5jbHVkZShgaW5jbC5tNCcpCitA
cmVzdWx0e31JbmNsdWRlIGZpbGUgc3RhcnQKK0ByZXN1bHR7fWZvbworQHJlc3VsdHt9SW5jbHVk
ZSBmaWxlIGVuZAorQHJlc3VsdHt9CiteRAorJCBAa2Jke2NhdCBUTVAvZGVwZmlsZX0KK0BhdXhy
ZXN1bHR7VE1QL2RlcGZpbGV9IyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBHTlUgbTQuCitA
YXV4cmVzdWx0e1RNUC9kZXBmaWxlfVRhcmdldDogLi8uLi9leGFtcGxlcy9mb28gLi8uLi9leGFt
cGxlcy9pbmNsLm00CitAZW5kIGV4YW1wbGUKKworVGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9w
dGlvbnMgY2FuIGFsc28gYmUgdXNlZCB3aGVuIGRlcGVuZGVuY3kgcnVsZXMKK2FyZSBiZWluZyBn
ZW5lcmF0ZWQgKHRoZXNlIG9wdGlvbnMgYXJlIG9ubHkgdmFsaWQgd2hlbiBib3RoCitAY29kZXtt
YWtlZGVwPX1AdmFye2ZpbGV9IGFuZCBAY29kZXttYWtlZGVwLXRhcmdldD19QHZhcnt0YXJnZXR9
IGhhdmUKK2Fsc28gYmVlbiBzcGVjaWZpZWQpOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIC0tbWFr
ZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlcworQ2F1c2VzIEBjb2Rle200fSB0byBhc3N1bWUgdGhh
dCBhbnkgZmlsZSBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZSB0aGF0CitpcyBtaXNzaW5nIChp
LmUuLCBkb2VzIG5vdCBleGlzdCkgaXMgYW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZmlsZS4K
K0Bjb2Rle000fSBpbmNsdWRlcyBzdWNoIG1pc3NpbmcgZmlsZXMgYXMgZGVwZW5kZW5jaWVzIGlu
IHRoZSBnZW5lcmF0ZWQKK3J1bGUgcmVnYXJkbGVzcy4gIEluIHRoaXMgY2FzZSB0aGUgZGVwZW5k
ZW5jeSBhcHBlYXJzIGV4YWN0bHkgYXMKK3NwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIGFu
ZCBpcyBub3QgbW9kaWZpZWQgYnkgYW55CitAY29kZXstSX1AdmFye3NlYXJjaGRpcn0gcHJlZml4
ZXMuICBOb3RlIHRoYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvdXRwdXQKK2dlbmVyYXRlZCB0byBz
dGRvdXQgd2lsbCBiZSBpbmNvcnJlY3Qgd2hlbiB0aGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUKK21p
c3NpbmcgZmlsZSBpcyBhc3N1bWVkIHRvIGJlIGFuIGVtcHR5IGZpbGUuICBBIHdhcm5pbmcgaXMg
cHJvZHVjZWQgb24KK3N0ZGVyciBmb3IgZWFjaCBtaXNzaW5nIGNvbW1hbmQgbGluZSBmaWxlIGhh
bmRsZWQgaW4gdGhpcyBtYW5uZXIuCisKK0BpdGVtIC0tbWFrZWRlcC1nZW4tbWlzc2luZy1pbmNs
dWRlCitDYXVzZXMgQGNvZGV7bTR9IHRvIGFzc3VtZSB0aGF0IGFueSBmaWxlIGluY2x1ZGVkIHZp
YSB0aGUKK0Bjb2Rle2luY2x1ZGUoKX0gbWFjcm8gdGhhdCBpcyBtaXNzaW5nIChpLmUuLCBkb2Vz
IG5vdCBleGlzdCkgaXMgYW4KK2F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUuICBAY29kZXtN
NH0gaW5jbHVkZXMgc3VjaCBtaXNzaW5nIGZpbGVzIGFzCitkZXBlbmRlbmNpZXMgaW4gdGhlIGdl
bmVyYXRlZCBydWxlIHJlZ2FyZGxlc3MuICBJbiB0aGlzIGNhc2UgdGhlCitkZXBlbmRlbmN5IGFw
cGVhcnMgZXhhY3RseSBhcyBzcGVjaWZpZWQgaW4gdGhlIGFyZ3VtZW50IHRvCitAY29kZXtpbmNs
dWRlKCl9IGFuZCBpcyBub3QgbW9kaWZpZWQgYnkgYW55IEBjb2Rley1JfUB2YXJ7c2VhcmNoZGly
fQorcHJlZml4ZXMuICBOb3RlIHRoYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvdXRwdXQgZ2VuZXJh
dGVkIHRvIHN0ZG91dCB3aWxsCitiZSBpbmNvcnJlY3Qgd2hlbiB0aGlzIGhhcHBlbnMgYmVjYXVz
ZSB0aGUgbWlzc2luZyBmaWxlIGlzIGFzc3VtZWQgdG8gYmUKK2FuIGVtcHR5IGZpbGUuICBUaGlz
IG9wdGlvbiBjYXVzZXMgdGhlIEBjb2Rle200fSBAY29kZXtpbmNsdWRlKCl9IG1hY3JvCit0byBi
ZWhhdmUgbGlrZSBAY29kZXtzaW5jbHVkZSgpfSwgZXhjZXB0IHRoYXQgYSB3YXJuaW5nIG1lc3Nh
Z2UgaXMKK3Byb2R1Y2VkIG9uIHN0ZGVyciB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZXF1ZXN0ZWQg
ZmlsZSB3YXMgbWlzc2luZy4KK1RoaXMgb3B0aW9uIGlzIGFuYWxvZ291cyB0byB0aGUgQGNvZGV7
LU1HfSBvcHRpb24gb2YgQGNvZGV7Z2NjfS4KKworQGl0ZW0gLS1tYWtlZGVwLWdlbi1taXNzaW5n
LXNpbmNsdWRlCitDYXVzZXMgQGNvZGV7bTR9IHRvIGFzc3VtZSB0aGF0IGFueSBmaWxlIGluY2x1
ZGVkIHZpYSB0aGUKK0Bjb2Rle3NpbmNsdWRlKCl9IG1hY3JvIHRoYXQgaXMgbWlzc2luZyAoaS5l
LiwgZG9lcyBub3QgZXhpc3QpIGlzIGFuCithdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlLiAg
QGNvZGV7TTR9IGluY2x1ZGVzIHN1Y2ggbWlzc2luZyBmaWxlcyBhcworZGVwZW5kZW5jaWVzIGlu
IHRoZSBnZW5lcmF0ZWQgcnVsZSByZWdhcmRsZXNzLiAgSW4gdGhpcyBjYXNlIHRoZQorZGVwZW5k
ZW5jeSBhcHBlYXJzIGV4YWN0bHkgYXMgc3BlY2lmaWVkIGluIHRoZSBhcmd1bWVudCB0bworQGNv
ZGV7c2luY2x1ZGUoKX0gYW5kIGlzIG5vdCBtb2RpZmllZCBieSBhbnkgQGNvZGV7LUl9QHZhcntz
ZWFyY2hkaXJ9CitwcmVmaXhlcy4gIE5vdGUgdGhhdCB0aGUgbWFjcm8gZXhwYW5zaW9uIG91dHB1
dCBnZW5lcmF0ZWQgdG8gc3Rkb3V0IHdpbGwKK2JlIGluY29ycmVjdCB3aGVuIHRoaXMgaGFwcGVu
cyBiZWNhdXNlIHRoZSBtaXNzaW5nIGZpbGUgaXMgYXNzdW1lZCB0byBiZQorYW4gZW1wdHkgZmls
ZS4gIFRoaXMgb3B0aW9uIGRvZXMgbm90IGFsdGVyIEBjb2Rle3NpbmNsdWRlKCl9J3MgYmVoYXZp
b3IKK29mIHNpbGVudGx5IGlnbm9yaW5nIHJlcXVlc3RzIHRvIEBjb2Rle3NpbmNsdWRlKCl9IGZp
bGVzIHRoYXQgZG8gbm90IGV4aXN0LgorCitAaXRlbSAtLW1ha2VkZXAtZ2VuLW1pc3NpbmctYWxs
CitUaGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgYWxsIHRocmVlIG9wdGlv
bnMKK0Bjb2Rley0tbWFrZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlc30sCitAY29kZXstLW1ha2Vk
ZXAtZ2VuLW1pc3NpbmctaW5jbHVkZX0gYW5kCitAY29kZXstLW1ha2VkZXAtZ2VuLW1pc3Npbmct
c2luY2x1ZGV9LgorQGVuZCB0YWJsZQorCitOb3RlIHRoYXQgdGhlIGFib3ZlIEBjb2Rle21ha2Vk
ZXAtZ2VuLW1pc3NpbmctKn0gb3B0aW9ucyBhc3N1bWUgdGhhdCB0aGUKK21pc3NpbmcgZmlsZXMg
d2lsbCB1bHRpbWF0ZWx5IG5vdCBAY29kZXtpbmNsdWRlKCl9IG9yIEBjb2Rle3NpbmNsdWRlKCl9
CithbnkgYWRkaXRpb25hbCBmaWxlcyAtLSBpZiB0aGV5IGRvLCB0aGVuIHRoZXNlIGFkZGl0aW9u
YWwgZmlsZXMgd2lsbCBiZQorbWlzc2luZyBmcm9tIHRoZSBnZW5lcmF0ZWQgZGVwZW5kZW5jeSBy
dWxlcy4KKworCitAY29tbWVudCBzdGF0dXM6IDEKK0Bjb21tZW50IG9wdGlvbnM6IC0tbWFrZWRl
cD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAtdGFyZ2V0PVRhcmdldCAtLW1ha2VkZXAtZ2VuLW1pc3Np
bmctYWxsIGZvbyBub25lCitAY29tbWVudCBhdXhmaWxlOiBUTVAvZGVwZmlsZQorQGV4YW1wbGUK
KyQgQGtiZHttNCAtSSBleGFtcGxlcyAtLW1ha2VkZXA9VE1QL2RlcGZpbGUgLS1tYWtlZGVwLXRh
cmdldD1UYXJnZXQgXH0KK0BrYmR7ICAgIC0tbWFrZWRlcC1nZW4tbWlzc2luZy1hbGwgZm9vIG5v
bmUgLX0KK0ByZXN1bHR7fWJhcgorQGVycm9ye31tNDogY2Fubm90IG9wZW4gJ25vbmUnOiBObyBz
dWNoIGZpbGUgb3IgZGlyZWN0b3J5CitpbmNsdWRlKGBpbmNsLm00JykKK0ByZXN1bHR7fUluY2x1
ZGUgZmlsZSBzdGFydAorQHJlc3VsdHt9Zm9vCitAcmVzdWx0e31JbmNsdWRlIGZpbGUgZW5kCitA
cmVzdWx0e30KK2luY2x1ZGUoYG5vbmUyJykKK0ByZXN1bHR7fQorQGVycm9ye31tNDpzdGRpbjoy
OiBpbmNsdWRlOiBjYW5ub3Qgb3BlbiAnbm9uZTInOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5
CitzaW5jbHVkZShgbm9uZTMnKQorQHJlc3VsdHt9CiteRAorJCBAa2Jke2NhdCBUTVAvZGVwZmls
ZX0KK0BhdXhyZXN1bHR7VE1QL2RlcGZpbGV9IyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBH
TlUgbTQuCitAYXV4cmVzdWx0e1RNUC9kZXBmaWxlfVRhcmdldDogLi8uLi9leGFtcGxlcy9mb28g
bm9uZSAuLy4uL2V4YW1wbGVzL2luY2wubTQgbm9uZTIgbm9uZTMKK0BlbmQgZXhhbXBsZQorCitU
aGUgZm9sbG93aW5nIG9wdGlvbnMgY29udHJvbCB0aGUgZ2VuZXJhdGlvbiBvZiBgYHBob255Jycg
dGFyZ2V0cyBmb3IKK2NlcnRhaW4gY2xhc3NlcyBvZiBkZXBlbmRlbmNpZXMuICBUaGVzZSBkdW1t
eSBydWxlcyBhcmUgdXNlZCB0byB3b3JrCithcm91bmQgZXJyb3JzIEBjb2Rle21ha2V9IGdpdmVz
IGlmIHlvdSByZW1vdmUgZmlsZXMgd2l0aG91dCB1cGRhdGluZyB0aGUKK0Bjb2Rle01ha2VmaWxl
fSB0byBtYXRjaC4gIERlcGVuZGVuY2llcyB0aGF0IG1hdGNoIG9uZSBvciBtb3JlIG9mIHRoZXNl
CitjbGFzc2VzIGNhdXNlIGEgc2luZ2xlIGR1bW15IHJ1bGUgdG8gYmUgZ2VuZXJhdGVkIGZvciB0
aGVtOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIC0tbWFrZWRlcC1waG9ueS1hcmdmaWxlcworQ2F1
c2VzIEBjb2Rle200fSB0byBnZW5lcmF0ZSBhIGBgcGhvbnknJyB0YXJnZXQgZm9yIGVhY2ggZmls
ZSB0aGF0IGlzCitzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKworQGl0ZW0gLS1tYWtl
ZGVwLXBob255LWluY2x1ZGUKK0NhdXNlcyBAY29kZXttNH0gdG8gZ2VuZXJhdGUgYSBgYHBob255
JycgdGFyZ2V0IGZvciBlYWNoIGZpbGUgdGhhdCBpcwordGhlIHN1YmplY3Qgb2YgYW4gQGNvZGV7
aW5jbHVkZSgpfSBtYWNyby4gIFRoaXMgb3B0aW9uIGlzIGFuYWxvZ291cyB0bwordGhlIEBjb2Rl
ey1NUH0gb3B0aW9uIG9mIEBjb2Rle2djY30uCisKK0BpdGVtIC0tbWFrZWRlcC1waG9ueS1zaW5j
bHVkZQorQ2F1c2VzIEBjb2Rle200fSB0byBnZW5lcmF0ZSBhIGBgcGhvbnknJyB0YXJnZXQgZm9y
IGVhY2ggZmlsZSB0aGF0IGlzCit0aGUgc3ViamVjdCBvZiBhbiBAY29kZXtzaW5jbHVkZSgpfSBt
YWNyby4KKworQGl0ZW0gLS1tYWtlZGVwLXBob255LWFsbAoraXMgZXF1aXZhbGVudCB0byBzcGVj
aWZ5aW5nIGFsbCB0aHJlZSBvcHRpb25zOgorQGNvZGV7LS1tYWtlZGVwLXBob255LWFyZ2ZpbGVz
fQorQGNvZGV7LS1tYWtlZGVwLXBob255LWluY2x1ZGV9CitAY29kZXstLW1ha2VkZXAtcGhvbnkt
c2luY2x1ZGV9LgorQGVuZCB0YWJsZQorCitAY29tbWVudCBvcHRpb25zOiAtLW1ha2VkZXA9VE1Q
L2RlcGZpbGUgLS1tYWtlZGVwLXRhcmdldD1UYXJnZXQgLS1tYWtlZGVwLXBob255LWFsbCBmb28K
K0Bjb21tZW50IGF1eGZpbGU6IFRNUC9kZXBmaWxlCitAZXhhbXBsZQorJCBAa2Jke200IC1JIGV4
YW1wbGVzIC0tbWFrZGVwPVRNUC9kZXBmaWxlIC0tbWFrZWRlcC10YXJnZXQ9VGFyZ2V0IFx9CitA
a2JkeyAgICAtLW1ha2VkZXAtcGhvbnktYWxsIGZvbyAtfQorQHJlc3VsdHt9YmFyCitpbmNsdWRl
KGBpbmNsLm00JykKK0ByZXN1bHR7fUluY2x1ZGUgZmlsZSBzdGFydAorQHJlc3VsdHt9Zm9vCitA
cmVzdWx0e31JbmNsdWRlIGZpbGUgZW5kCitAcmVzdWx0e30KK15ECiskIEBrYmR7Y2F0IFRNUC9k
ZXBmaWxlfQorQGF1eHJlc3VsdHtUTVAvZGVwZmlsZX0jIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGJ5IEdOVSBtNC4KK0BhdXhyZXN1bHR7VE1QL2RlcGZpbGV9VGFyZ2V0OiAuLy4uL2V4YW1wbGVz
L2ZvbyAuLy4uL2V4YW1wbGVzL2luY2wubTQKK0BhdXhyZXN1bHR7VE1QL2RlcGZpbGV9CitAYXV4
cmVzdWx0e1RNUC9kZXBmaWxlfS4vLi4vZXhhbXBsZXMvZm9vOgorQGF1eHJlc3VsdHtUTVAvZGVw
ZmlsZX0KK0BhdXhyZXN1bHR7VE1QL2RlcGZpbGV9Li8uLi9leGFtcGxlcy9pbmNsLm00OgorQGVu
ZCBleGFtcGxlCisKIEBub2RlIExpbWl0cyBjb250cm9sCiBAc2VjdGlvbiBDb21tYW5kIGxpbmUg
b3B0aW9ucyBmb3IgbGltaXRzIGNvbnRyb2wKCkBAIC05MTQsMTkxICsxMTAzLDYgQEAgRnJvemVu
IHN0YXRlCiBmaWxlcyBhcmUgcmVhZC4KIEBlbmQgdGFibGUKCi1Abm9kZSBNYWtlIGRlcGVuZGVu
Y3kgZ2VuZXJhdGlvbgotQHNlY3Rpb24gQ29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIGdlbmVyYXRp
bmcgTWFrZWZpbGUgZGVwZW5kZW5jeSBydWxlcwotCi1NYWtlZmlsZSBkZXBlbmRlbmN5IHJ1bGVz
IGNhbiBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBzcGVjaWZ5aW5nCi1ib3RoIHRoZSBA
Y29kZXstLW1ha2VkZXA9fUB2YXJ7ZmlsZX0gYW5kCi1AY29kZXstLW1ha2VkZXAtdGFyZ2V0PX1A
dmFye3RhcmdldH0gb3B0aW9ucy4KLQotQHRhYmxlIEBjb2RlCi1AaXRlbSAtLW1ha2VkZXA9QHZh
cntmaWxlfQotQ2F1c2VzIEBjb2Rle200fSB0byBnZW5lcmF0ZSBhIGRlcGVuZGVuY3kgcnVsZSBp
bnRvIHRoZSBzcGVjaWZpZWQKLUB2YXJ7ZmlsZX0uICBNYWNybyBleHBhbnNpb24gb3V0cHV0IGlz
IHN0aWxsIHdyaXR0ZW4gdG8gc3Rkb3V0IGFzCi1ub3JtYWwuICBUaGlzIG9wdGlvbiBpcyBhbmFs
b2dvdXMgdG8gdGhlIEBjb2Rley1NRn0gb3B0aW9uIG9mCi1AY29kZXtnY2N9LgotCi1AaXRlbSAt
LW1ha2VkZXAtdGFyZ2V0PUB2YXJ7dGFyZ2V0fQotU3BlY2lmaWVzIEB2YXJ7dGFyZ2V0fSB0byBi
ZSB0aGUgdGFyZ2V0IG9mIHRoZSBnZW5lcmF0ZWQgZGVwZW5kZW5jeQotcnVsZS4gIFRoZSBzdHJp
bmcgQHZhcnt0YXJnZXR9IGlzIHVzZWQgdmVyYmF0aW0sIGFuZCBjYW4gY29udGFpbiBzZXZlcmFs
Ci1sb2dpY2FsIHRhcmdldHMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gIEl0IGlzIHRoZSB1c2VyJ3Mg
cmVzcG9uc2liaWxpdHkgdG8KLXByb3Blcmx5IGV4cHJlc3MgY2hhcmFjdGVycyB0aGF0IEBjb2Rl
e21ha2V9IGhhbmRsZXMgc3BlY2lhbGx5IChzdWNoIGFzCi0nQGNvZGV7JH0nLCBvciBzcGFjZXMg
d2l0aGluIGZpbGUgbmFtZXMpLiAgU2luY2UgQGNvZGV7bTR9IHNlbmRzIGl0cwotbWFjcm8gZXhw
YW5zaW9uIG91dHB1dCB0byBzdGRvdXQsIGl0IG5ldmVyIHJlYWxseSBrbm93cyB0aGUgbmFtZSBv
ZiB0aGUKLXRhcmdldCBmaWxlIGJlaW5nIGdlbmVyYXRlZCwgc28gdGhlIHRhcmdldCBtdXN0IGFs
d2F5cyBiZSBzcGVjaWZpZWQKLWV4cGxpY2l0bHkgYnkgdGhlIHVzZXIgd2l0aCB0aGlzIG9wdGlv
bi4gIFRoaXMgb3B0aW9uIGlzIGFuYWxvZ291cyB0bwotdGhlIEBjb2Rley1NVH0gb3B0aW9uIG9m
IEBjb2Rle2djY30gKGV4Y2VwdCB0aGF0IEBjb2Rle2djY30gYWxsb3dzCi1AY29kZXstTVR9IHRv
IGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcykuCi1AZW5kIHRhYmxlCi0KLU5vdGUgdGhhdCB0
aGUgQGNvZGV7LS1tYWtlZGVwPX1AdmFye2ZpbGV9IGFuZAotQGNvZGV7bWFrZWRlcC10YXJnZXQ9
fUB2YXJ7dGFyZ2V0fSBvcHRpb25zIG11c3QgZWl0aGVyIChhKSBib3RoIGJlCi1zcGVjaWZpZWQs
IG9yIChiKSBuZWl0aGVyIGJlIHNwZWNpZmllZC4gIFRoZXkgY2Fubm90IGJlIHVzZWQKLWluZGVw
ZW5kZW50bHkgb2YgZWFjaCBvdGhlci4KLQotQGNvbW1lbnQgb3B0aW9uczogLS1tYWtlZGVwPVRN
UC9kZXBmaWxlIC0tbWFrZWRlcC10YXJnZXQ9VGFyZ2V0IGZvbwotQGNvbW1lbnQgYXV4ZmlsZTog
VE1QL2RlcGZpbGUKLUBleGFtcGxlCi0kIEBrYmR7bTQgLUkgZXhhbXBsZXMgLS1tYWtlZGVwPVRN
UC9kZXBmaWxlIC0tbWFrZWRlcC10YXJnZXQ9VGFyZ2V0IGZvb30KLUByZXN1bHR7fWJhcgotQGF1
eHJlc3VsdHtUTVAvZGVwZmlsZX0jIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IEdOVSBtNC4K
LUBhdXhyZXN1bHR7VE1QL2RlcGZpbGV9VGFyZ2V0OiAuLy4uL2V4YW1wbGVzL2ZvbwotQGVuZCBl
eGFtcGxlCi0KLUBjb21tZW50IFNlcGFyYXRlIHRoZXNlIHR3byBleGFtcGxlcy4KLUBzcCAxCi0K
LUBjb21tZW50IG9wdGlvbnM6IC0tbWFrZWRlcD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAtdGFyZ2V0
PVRhcmdldCBmb28KLUBjb21tZW50IGF1eGZpbGU6IFRNUC9kZXBmaWxlCi1AZXhhbXBsZQotJCBA
a2Jke200IC1JIGV4YW1wbGVzIC0tbWFrZWRlcD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAtdGFyZ2V0
PVRhcmdldCBmb28gLX0KLUByZXN1bHR7fWJhcgotaW5jbHVkZShgaW5jbC5tNCcpCi1AcmVzdWx0
e31JbmNsdWRlIGZpbGUgc3RhcnQKLUByZXN1bHR7fWZvbwotQHJlc3VsdHt9SW5jbHVkZSBmaWxl
IGVuZAotQHJlc3VsdHt9Ci1eRAotQGF1eHJlc3VsdHtUTVAvZGVwZmlsZX0jIEF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGJ5IEdOVSBtNC4KLUBhdXhyZXN1bHR7VE1QL2RlcGZpbGV9VGFyZ2V0OiAu
Ly4uL2V4YW1wbGVzL2ZvbyAuLy4uL2V4YW1wbGVzL2luY2wubTQKLUBlbmQgZXhhbXBsZQotCi1U
aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9ucyBjYW4gYWxzbyBiZSB1c2VkIHdoZW4gZGVw
ZW5kZW5jeSBydWxlcwotYXJlIGJlaW5nIGdlbmVyYXRlZCAodGhlc2Ugb3B0aW9ucyBhcmUgb25s
eSB2YWxpZCB3aGVuIGJvdGgKLUBjb2Rle21ha2VkZXA9fUB2YXJ7ZmlsZX0gYW5kIEBjb2Rle21h
a2VkZXAtdGFyZ2V0PX1AdmFye3RhcmdldH0gaGF2ZQotYWxzbyBiZWVuIHNwZWNpZmllZCk6Ci0K
LUB0YWJsZSBAY29kZQotQGl0ZW0gLS1tYWtlZGVwLWdlbi1taXNzaW5nLWFyZ2ZpbGVzCi1DYXVz
ZXMgQGNvZGV7bTR9IHRvIGFzc3VtZSB0aGF0IGFueSBmaWxlIGxpc3RlZCBvbiB0aGUgY29tbWFu
ZCBsaW5lIHRoYXQKLWlzIG1pc3NpbmcgKGkuZS4sIGRvZXMgbm90IGV4aXN0KSBpcyBhbiBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlLgotQGNvZGV7TTR9IGluY2x1ZGVzIHN1Y2ggbWlzc2lu
ZyBmaWxlcyBhcyBkZXBlbmRlbmNpZXMgaW4gdGhlIGdlbmVyYXRlZAotcnVsZSByZWdhcmRsZXNz
LiAgSW4gdGhpcyBjYXNlIHRoZSBkZXBlbmRlbmN5IGFwcGVhcnMgZXhhY3RseSBhcwotc3BlY2lm
aWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGlzIG5vdCBtb2RpZmllZCBieSBhbnkKLUBjb2Rl
ey1JfUB2YXJ7c2VhcmNoZGlyfSBwcmVmaXhlcy4gIE5vdGUgdGhhdCB0aGUgbWFjcm8gZXhwYW5z
aW9uIG91dHB1dAotZ2VuZXJhdGVkIHRvIHN0ZG91dCB3aWxsIGJlIGluY29ycmVjdCB3aGVuIHRo
aXMgaGFwcGVucyBiZWNhdXNlIHRoZQotbWlzc2luZyBmaWxlIGlzIGFzc3VtZWQgdG8gYmUgYW4g
ZW1wdHkgZmlsZS4gIEEgd2FybmluZyBpcyBwcm9kdWNlZCBvbgotc3RkZXJyIGZvciBlYWNoIG1p
c3NpbmcgY29tbWFuZCBsaW5lIGZpbGUgaGFuZGxlZCBpbiB0aGlzIG1hbm5lci4KLQotQGl0ZW0g
LS1tYWtlZGVwLWdlbi1taXNzaW5nLWluY2x1ZGUKLUNhdXNlcyBAY29kZXttNH0gdG8gYXNzdW1l
IHRoYXQgYW55IGZpbGUgaW5jbHVkZWQgdmlhIHRoZQotQGNvZGV7aW5jbHVkZSgpfSBtYWNybyB0
aGF0IGlzIG1pc3NpbmcgKGkuZS4sIGRvZXMgbm90IGV4aXN0KSBpcyBhbgotYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZmlsZS4gIEBjb2Rle000fSBpbmNsdWRlcyBzdWNoIG1pc3NpbmcgZmlsZXMg
YXMKLWRlcGVuZGVuY2llcyBpbiB0aGUgZ2VuZXJhdGVkIHJ1bGUgcmVnYXJkbGVzcy4gIEluIHRo
aXMgY2FzZSB0aGUKLWRlcGVuZGVuY3kgYXBwZWFycyBleGFjdGx5IGFzIHNwZWNpZmllZCBpbiB0
aGUgYXJndW1lbnQgdG8KLUBjb2Rle2luY2x1ZGUoKX0gYW5kIGlzIG5vdCBtb2RpZmllZCBieSBh
bnkgQGNvZGV7LUl9QHZhcntzZWFyY2hkaXJ9Ci1wcmVmaXhlcy4gIE5vdGUgdGhhdCB0aGUgbWFj
cm8gZXhwYW5zaW9uIG91dHB1dCBnZW5lcmF0ZWQgdG8gc3Rkb3V0IHdpbGwKLWJlIGluY29ycmVj
dCB3aGVuIHRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBtaXNzaW5nIGZpbGUgaXMgYXNzdW1lZCB0
byBiZQotYW4gZW1wdHkgZmlsZS4gIFRoaXMgb3B0aW9uIGNhdXNlcyB0aGUgQGNvZGV7bTR9IEBj
b2Rle2luY2x1ZGUoKX0gbWFjcm8KLXRvIGJlaGF2ZSBsaWtlIEBjb2Rle3NpbmNsdWRlKCl9LCBl
eGNlcHQgdGhhdCBhIHdhcm5pbmcgbWVzc2FnZSBpcwotcHJvZHVjZWQgb24gc3RkZXJyIHRvIGlu
ZGljYXRlIHRoYXQgdGhlIHJlcXVlc3RlZCBmaWxlIHdhcyBtaXNzaW5nLgotVGhpcyBvcHRpb24g
aXMgYW5hbG9nb3VzIHRvIHRoZSBAY29kZXstTUd9IG9wdGlvbiBvZiBAY29kZXtnY2N9LgotCi1A
aXRlbSAtLW1ha2VkZXAtZ2VuLW1pc3Npbmctc2luY2x1ZGUKLUNhdXNlcyBAY29kZXttNH0gdG8g
YXNzdW1lIHRoYXQgYW55IGZpbGUgaW5jbHVkZWQgdmlhIHRoZQotQGNvZGV7c2luY2x1ZGUoKX0g
bWFjcm8gdGhhdCBpcyBtaXNzaW5nIChpLmUuLCBkb2VzIG5vdCBleGlzdCkgaXMgYW4KLWF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUuICBAY29kZXtNNH0gaW5jbHVkZXMgc3VjaCBtaXNzaW5n
IGZpbGVzIGFzCi1kZXBlbmRlbmNpZXMgaW4gdGhlIGdlbmVyYXRlZCBydWxlIHJlZ2FyZGxlc3Mu
ICBJbiB0aGlzIGNhc2UgdGhlCi1kZXBlbmRlbmN5IGFwcGVhcnMgZXhhY3RseSBhcyBzcGVjaWZp
ZWQgaW4gdGhlIGFyZ3VtZW50IHRvCi1AY29kZXtzaW5jbHVkZSgpfSBhbmQgaXMgbm90IG1vZGlm
aWVkIGJ5IGFueSBAY29kZXstSX1AdmFye3NlYXJjaGRpcn0KLXByZWZpeGVzLiAgTm90ZSB0aGF0
IHRoZSBtYWNybyBleHBhbnNpb24gb3V0cHV0IGdlbmVyYXRlZCB0byBzdGRvdXQgd2lsbAotYmUg
aW5jb3JyZWN0IHdoZW4gdGhpcyBoYXBwZW5zIGJlY2F1c2UgdGhlIG1pc3NpbmcgZmlsZSBpcyBh
c3N1bWVkIHRvIGJlCi1hbiBlbXB0eSBmaWxlLiAgVGhpcyBvcHRpb24gZG9lcyBub3QgYWx0ZXIg
QGNvZGV7c2luY2x1ZGUoKX0ncyBiZWhhdmlvcgotb2Ygc2lsZW50bHkgaWdub3JpbmcgcmVxdWVz
dHMgdG8gQGNvZGV7c2luY2x1ZGUoKX0gZmlsZXMgdGhhdCBkbyBub3QgZXhpc3QuCi0KLUBpdGVt
IC0tbWFrZWRlcC1nZW4tbWlzc2luZy1hbGwKLVRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8g
c3BlY2lmeWluZyBhbGwgdGhyZWUgb3B0aW9ucwotQGNvZGV7LS1tYWtlZGVwLWdlbi1taXNzaW5n
LWFyZ2ZpbGVzfSwKLUBjb2Rley0tbWFrZWRlcC1nZW4tbWlzc2luZy1pbmNsdWRlfSBhbmQKLUBj
b2Rley0tbWFrZWRlcC1nZW4tbWlzc2luZy1zaW5jbHVkZX0uCi1AZW5kIHRhYmxlCi0KLU5vdGUg
dGhhdCB0aGUgYWJvdmUgQGNvZGV7bWFrZWRlcC1nZW4tbWlzc2luZy0qfSBvcHRpb25zIGFzc3Vt
ZSB0aGF0IHRoZQotbWlzc2luZyBmaWxlcyB3aWxsIHVsdGltYXRlbHkgbm90IEBjb2Rle2luY2x1
ZGUoKX0gb3IgQGNvZGV7c2luY2x1ZGUoKX0KLWFueSBhZGRpdGlvbmFsIGZpbGVzIC0tIGlmIHRo
ZXkgZG8sIHRoZW4gdGhlc2UgYWRkaXRpb25hbCBmaWxlcyB3aWxsIGJlCi1taXNzaW5nIGZyb20g
dGhlIGdlbmVyYXRlZCBkZXBlbmRlbmN5IHJ1bGVzLgotCi0KLUBjb21tZW50IHN0YXR1czogMQot
QGNvbW1lbnQgb3B0aW9uczogLS1tYWtlZGVwPVRNUC9kZXBmaWxlIC0tbWFrZWRlcC10YXJnZXQ9
VGFyZ2V0IC0tbWFrZWRlcC1nZW4tbWlzc2luZy1hbGwgZm9vIG5vbmUKLUBjb21tZW50IGF1eGZp
bGU6IFRNUC9kZXBmaWxlCi1AZXhhbXBsZQotJCBAa2Jke200IC1JIGV4YW1wbGVzIC0tbWFrZWRl
cD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAtdGFyZ2V0PVRhcmdldCBcfQotQGtiZHsgICAgLS1tYWtl
ZGVwLWdlbi1taXNzaW5nLWFsbCBmb28gbm9uZSAtfQotQHJlc3VsdHt9YmFyCi1AZXJyb3J7fW00
OiBjYW5ub3Qgb3BlbiAnbm9uZSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLWluY2x1ZGUo
YGluY2wubTQnKQotQHJlc3VsdHt9SW5jbHVkZSBmaWxlIHN0YXJ0Ci1AcmVzdWx0e31mb28KLUBy
ZXN1bHR7fUluY2x1ZGUgZmlsZSBlbmQKLUByZXN1bHR7fQotaW5jbHVkZShgbm9uZTInKQotQHJl
c3VsdHt9Ci1AZXJyb3J7fW00OnN0ZGluOjI6IGluY2x1ZGU6IGNhbm5vdCBvcGVuICdub25lMic6
IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLXNpbmNsdWRlKGBub25lMycpCi1AcmVzdWx0e30K
LV5ECi1AYXV4cmVzdWx0e1RNUC9kZXBmaWxlfSMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkg
R05VIG00LgotQGF1eHJlc3VsdHtUTVAvZGVwZmlsZX1UYXJnZXQ6IC4vLi4vZXhhbXBsZXMvZm9v
IG5vbmUgLi8uLi9leGFtcGxlcy9pbmNsLm00IG5vbmUyIG5vbmUzCi1AZW5kIGV4YW1wbGUKLQot
VGhlIGZvbGxvd2luZyBvcHRpb25zIGNvbnRyb2wgdGhlIGdlbmVyYXRpb24gb2YgYGBwaG9ueScn
IHRhcmdldHMgZm9yCi1jZXJ0YWluIGNsYXNzZXMgb2YgZGVwZW5kZW5jaWVzLiAgVGhlc2UgZHVt
bXkgcnVsZXMgYXJlIHVzZWQgdG8gd29yawotYXJvdW5kIGVycm9ycyBAY29kZXttYWtlfSBnaXZl
cyBpZiB5b3UgcmVtb3ZlIGZpbGVzIHdpdGhvdXQgdXBkYXRpbmcgdGhlCi1AY29kZXtNYWtlZmls
ZX0gdG8gbWF0Y2guICBEZXBlbmRlbmNpZXMgdGhhdCBtYXRjaCBvbmUgb3IgbW9yZSBvZiB0aGVz
ZQotY2xhc3NlcyBjYXVzZSBhIHNpbmdsZSBkdW1teSBydWxlIHRvIGJlIGdlbmVyYXRlZCBmb3Ig
dGhlbToKLQotQHRhYmxlIEBjb2RlCi1AaXRlbSAtLW1ha2VkZXAtcGhvbnktYXJnZmlsZXMKLUNh
dXNlcyBAY29kZXttNH0gdG8gZ2VuZXJhdGUgYSBgYHBob255JycgdGFyZ2V0IGZvciBlYWNoIGZp
bGUgdGhhdCBpcwotc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0KLUBpdGVtIC0tbWFr
ZWRlcC1waG9ueS1pbmNsdWRlCi1DYXVzZXMgQGNvZGV7bTR9IHRvIGdlbmVyYXRlIGEgYGBwaG9u
eScnIHRhcmdldCBmb3IgZWFjaCBmaWxlIHRoYXQgaXMKLXRoZSBzdWJqZWN0IG9mIGFuIEBjb2Rl
e2luY2x1ZGUoKX0gbWFjcm8uICBUaGlzIG9wdGlvbiBpcyBhbmFsb2dvdXMgdG8KLXRoZSBAY29k
ZXstTVB9IG9wdGlvbiBvZiBAY29kZXtnY2N9LgotCi1AaXRlbSAtLW1ha2VkZXAtcGhvbnktc2lu
Y2x1ZGUKLUNhdXNlcyBAY29kZXttNH0gdG8gZ2VuZXJhdGUgYSBgYHBob255JycgdGFyZ2V0IGZv
ciBlYWNoIGZpbGUgdGhhdCBpcwotdGhlIHN1YmplY3Qgb2YgYW4gQGNvZGV7c2luY2x1ZGUoKX0g
bWFjcm8uCi0KLUBpdGVtIC0tbWFrZWRlcC1waG9ueS1hbGwKLWlzIGVxdWl2YWxlbnQgdG8gc3Bl
Y2lmeWluZyBhbGwgdGhyZWUgb3B0aW9uczoKLUBjb2Rley0tbWFrZWRlcC1waG9ueS1hcmdmaWxl
c30KLUBjb2Rley0tbWFrZWRlcC1waG9ueS1pbmNsdWRlfQotQGNvZGV7LS1tYWtlZGVwLXBob255
LXNpbmNsdWRlfS4KLUBlbmQgdGFibGUKLQotQGNvbW1lbnQgb3B0aW9uczogLS1tYWtlZGVwPVRN
UC9kZXBmaWxlIC0tbWFrZWRlcC10YXJnZXQ9VGFyZ2V0IC0tbWFrZWRlcC1waG9ueS1hbGwgZm9v
Ci1AY29tbWVudCBhdXhmaWxlOiBUTVAvZGVwZmlsZQotQGV4YW1wbGUKLSQgQGtiZHttNCAtSSBl
eGFtcGxlcyAtLW1ha2RlcD1UTVAvZGVwZmlsZSAtLW1ha2VkZXAtdGFyZ2V0PVRhcmdldCBcfQot
QGtiZHsgICAgLS1tYWtlZGVwLXBob255LWFsbCBmb28gLX0KLUByZXN1bHR7fWJhcgotaW5jbHVk
ZShgaW5jbC5tNCcpCi1AcmVzdWx0e31JbmNsdWRlIGZpbGUgc3RhcnQKLUByZXN1bHR7fWZvbwot
QHJlc3VsdHt9SW5jbHVkZSBmaWxlIGVuZAotQHJlc3VsdHt9Ci1eRAotQGF1eHJlc3VsdHtUTVAv
ZGVwZmlsZX0jIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IEdOVSBtNC4KLUBhdXhyZXN1bHR7
VE1QL2RlcGZpbGV9VGFyZ2V0OiAuLy4uL2V4YW1wbGVzL2ZvbyAuLy4uL2V4YW1wbGVzL2luY2wu
bTQKLUBhdXhyZXN1bHR7VE1QL2RlcGZpbGV9Ci1AYXV4cmVzdWx0e1RNUC9kZXBmaWxlfS4vLi4v
ZXhhbXBsZXMvZm9vOgotQGF1eHJlc3VsdHtUTVAvZGVwZmlsZX0KLUBhdXhyZXN1bHR7VE1QL2Rl
cGZpbGV9Li8uLi9leGFtcGxlcy9pbmNsLm00OgotQGVuZCBleGFtcGxlCi0KIEBub2RlIERlYnVn
Z2luZyBvcHRpb25zCiBAc2VjdGlvbiBDb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgZGVidWdnaW5n
CgpkaWZmIC0tZ2l0IGEvc3JjL200LmMgYi9zcmMvbTQuYwppbmRleCBhYTIzMjdhNS4uOWY2YzVm
M2IgMTAwNjQ0Ci0tLSBhL3NyYy9tNC5jCisrKyBiL3NyYy9tNC5jCkBAIC0zNzgsMTcgKzM3OCwx
NyBAQCBtaXNtYXRjaCwgb3Igd2hhdGV2ZXIgdmFsdWUgd2FzIHBhc3NlZCB0byB0aGUgbTRleGl0
IG1hY3JvLlxuXAogZW51bQogewogICBERUJVR0ZJTEVfT1BUSU9OID0gQ0hBUl9NQVggKyAxLCAg
ICAgIC8qIG5vIHNob3J0IG9wdCAqLwotICBXQVJOX01BQ1JPX1NFUVVFTkNFX09QVElPTiwgICAv
KiBubyBzaG9ydCBvcHQgKi8KLSAgTUFLRURFUF9PUFRJT04sICAgICAgICAgICAgICAgICAgICAg
ICAvKiBubyBzaG9ydCBvcHQgKi8KLSAgTUFLRURFUF9UQVJHRVRfT1BUSU9OLCAgICAgICAgICAg
ICAgICAvKiBubyBzaG9ydCBvcHQgKi8KKyAgTUFLRURFUF9PUFRJT04sICAgICAgICAgICAgICAg
Lyogbm8gc2hvcnQgb3B0ICovCisgIE1BS0VERVBfVEFSR0VUX09QVElPTiwgICAgICAgIC8qIG5v
IHNob3J0IG9wdCAqLwogICBNQUtFREVQX0dFTl9NSVNTSU5HX0FSR0ZJTEVTX09QVElPTiwgIC8q
IG5vIHNob3J0IG9wdCAqLwogICBNQUtFREVQX0dFTl9NSVNTSU5HX0lOQ0xVREVfT1BUSU9OLCAg
IC8qIG5vIHNob3J0IG9wdCAqLwogICBNQUtFREVQX0dFTl9NSVNTSU5HX1NJTkNMVURFX09QVElP
TiwgIC8qIG5vIHNob3J0IG9wdCAqLwogICBNQUtFREVQX0dFTl9NSVNTSU5HX0FMTF9PUFRJT04s
ICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwogICBNQUtFREVQX1BIT05ZX0FSR0ZJTEVTX09QVElP
TiwgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwotICBNQUtFREVQX1BIT05ZX0lOQ0xVREVfT1BU
SU9OLCAgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLworICBNQUtFREVQX1BIT05ZX0lOQ0xVREVf
T1BUSU9OLCAvKiBubyBzaG9ydCBvcHQgKi8KICAgTUFLRURFUF9QSE9OWV9TSU5DTFVERV9PUFRJ
T04sICAgICAgICAvKiBubyBzaG9ydCBvcHQgKi8KLSAgTUFLRURFUF9QSE9OWV9BTExfT1BUSU9O
LCAgICAgICAgICAgICAvKiBubyBzaG9ydCBvcHQgKi8KKyAgTUFLRURFUF9QSE9OWV9BTExfT1BU
SU9OLCAgICAgLyogbm8gc2hvcnQgb3B0ICovCisgIFdBUk5fTUFDUk9fU0VRVUVOQ0VfT1BUSU9O
LCAgIC8qIG5vIHNob3J0IG9wdCAqLwoKICAgSEVMUF9PUFRJT04sICAgICAgICAgICAgICAgICAg
Lyogbm8gc2hvcnQgb3B0ICovCiAgIFZFUlNJT05fT1BUSU9OICAgICAgICAgICAgICAgIC8qIG5v
IHNob3J0IG9wdCAqLwpAQCAtNDI0LDE2ICs0MjQsMTggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBv
cHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAgIHsibWFrZWRlcCIsIHJlcXVpcmVkX2FyZ3VtZW50
LCBOVUxMLCBNQUtFREVQX09QVElPTn0sCiAgIHsibWFrZWRlcC10YXJnZXQiLCByZXF1aXJlZF9h
cmd1bWVudCwgTlVMTCwgTUFLRURFUF9UQVJHRVRfT1BUSU9OfSwKICAgeyJtYWtlZGVwLWdlbi1t
aXNzaW5nLWFyZ2ZpbGVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCi0gICAgIE1BS0VERVBfR0VOX01J
U1NJTkdfQVJHRklMRVNfT1BUSU9OfSwKKyAgIE1BS0VERVBfR0VOX01JU1NJTkdfQVJHRklMRVNf
T1BUSU9OfSwKICAgeyJtYWtlZGVwLWdlbi1taXNzaW5nLWluY2x1ZGUiLCBub19hcmd1bWVudCwg
TlVMTCwKLSAgICAgTUFLRURFUF9HRU5fTUlTU0lOR19JTkNMVURFX09QVElPTn0sCisgICBNQUtF
REVQX0dFTl9NSVNTSU5HX0lOQ0xVREVfT1BUSU9OfSwKICAgeyJtYWtlZGVwLWdlbi1taXNzaW5n
LXNpbmNsdWRlIiwgbm9fYXJndW1lbnQsIE5VTEwsCi0gICAgIE1BS0VERVBfR0VOX01JU1NJTkdf
U0lOQ0xVREVfT1BUSU9OfSwKKyAgIE1BS0VERVBfR0VOX01JU1NJTkdfU0lOQ0xVREVfT1BUSU9O
fSwKICAgeyJtYWtlZGVwLWdlbi1taXNzaW5nLWFsbCIsIG5vX2FyZ3VtZW50LCBOVUxMLAotICAg
ICBNQUtFREVQX0dFTl9NSVNTSU5HX0FMTF9PUFRJT059LAotICB7Im1ha2VkZXAtcGhvbnktYXJn
ZmlsZXMiLCBub19hcmd1bWVudCwgTlVMTCwgTUFLRURFUF9QSE9OWV9BUkdGSUxFU19PUFRJT059
LAorICAgTUFLRURFUF9HRU5fTUlTU0lOR19BTExfT1BUSU9OfSwKKyAgeyJtYWtlZGVwLXBob255
LWFyZ2ZpbGVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCisgICBNQUtFREVQX1BIT05ZX0FSR0ZJTEVT
X09QVElPTn0sCiAgIHsibWFrZWRlcC1waG9ueS1pbmNsdWRlIiwgbm9fYXJndW1lbnQsIE5VTEws
IE1BS0VERVBfUEhPTllfSU5DTFVERV9PUFRJT059LAotICB7Im1ha2VkZXAtcGhvbnktc2luY2x1
ZGUiLCBub19hcmd1bWVudCwgTlVMTCwgTUFLRURFUF9QSE9OWV9TSU5DTFVERV9PUFRJT059LAor
ICB7Im1ha2VkZXAtcGhvbnktc2luY2x1ZGUiLCBub19hcmd1bWVudCwgTlVMTCwKKyAgIE1BS0VE
RVBfUEhPTllfU0lOQ0xVREVfT1BUSU9OfSwKICAgeyJtYWtlZGVwLXBob255LWFsbCIsIG5vX2Fy
Z3VtZW50LCBOVUxMLCBNQUtFREVQX1BIT05ZX0FMTF9PUFRJT059LAoKICAgeyJoZWxwIiwgbm9f
YXJndW1lbnQsIE5VTEwsIEhFTFBfT1BUSU9OfSwKQEAgLTcxNiw3ICs3MTgsNyBAQCBtYWluIChp
bnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNoYXIgKmNvbnN0ICplbnZwIE1BWUJFX1VOVVNF
RCkKICAgICAgICAgICAgKHdoaWNoIGRpc2FibGVzIHRoZXNlIHdhcm5pbmdzKS4gICovCiAgICAg
ICAgIG1hY3JvX3NlcXVlbmNlID0gb3B0YXJnOwogICAgICAgICBicmVhazsKLSAKKwogICAgICAg
Y2FzZSBNQUtFREVQX09QVElPTjoKICAgICAgICAgaWYgKG1ha2VkZXBfcGF0aCAhPSBOVUxMKQog
ICAgICAgICAgIHVzYWdlIChFWElUX0ZBSUxVUkUpOwpAQCAtNzg0LDEwICs3ODYsMTIgQEAgbWFp
biAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjaGFyICpjb25zdCAqZW52cCBNQVlCRV9V
TlVTRUQpCiAgICAgICAvKiBNYWtlZGVwIG1vZGUgaXMgTk9UIGFjdGl2ZS4gKi8KICAgICAgIGlm
IChtYWtlZGVwX2dlbl9taXNzaW5nICE9IDApCiAgICAgICAgIG00X2Vycm9yICgwLCAwLCBOVUxM
LAotICAgICAgICAgICAgICAgICAgXygiLS1tYWtlZGVwLWdlbi1taXNzaW5nLSogcmVxdWlyZXMg
LS1tYWtlZGVwIGFuZCAtLW1ha2VkZXAtdGFyZ2V0IikpOworICAgICAgICAgICAgICAgICAgXygi
LS1tYWtlZGVwLWdlbi1taXNzaW5nLSogcmVxdWlyZXMgLS1tYWtlZGVwIGFuZCAiCisgICAgICAg
ICAgICAgICAgICAgICItLW1ha2VkZXAtdGFyZ2V0IikpOwogICAgICAgaWYgKG1ha2VkZXBfcGhv
bnkgIT0gMCkKICAgICAgICAgbTRfZXJyb3IgKDAsIDAsIE5VTEwsCi0gICAgICAgICAgICAgICAg
ICBfKCItLW1ha2VkZXAtcGhvbnktKiByZXF1aXJlcyAtLW1ha2VkZXAgYW5kIC0tbWFrZWRlcC10
YXJnZXQiKSk7CisgICAgICAgICAgICAgICAgICBfKCItLW1ha2VkZXAtcGhvbnktKiByZXF1aXJl
cyAtLW1ha2VkZXAgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgIi0tbWFrZWRlcC10YXJnZXQi
KSk7CiAgICAgICBpZiAoKG1ha2VkZXBfZ2VuX21pc3NpbmcgfCBtYWtlZGVwX3Bob255KSAhPSAw
KQogICAgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9t
NC5oIGIvc3JjL200LmgKaW5kZXggZDJkNWMzZjYuLjVlYjAyOTYyIDEwMDY0NAotLS0gYS9zcmMv
bTQuaAorKysgYi9zcmMvbTQuaApAQCAtOTQsNyArOTQsNyBAQAogIyB1bmRlZiBiaW5kdGV4dGRv
bWFpbgogIyBkZWZpbmUgYmluZHRleHRkb21haW4oRG9tYWlubmFtZSwgRGlybmFtZSkgICAgLyog
ZW1wdHkgKi8KICNlbmRpZgotZXh0ZXJuIGludCBtYWtlZGVwX2dlbl9taXNzaW5nOyAgICAgICAg
IC8qIC0tbWFrZWRlcC1nZW4tbWlzc2luZy0qICovCitleHRlcm4gaW50IG1ha2VkZXBfZ2VuX21p
c3Npbmc7IC8qIC0tbWFrZWRlcC1nZW4tbWlzc2luZy0qICovCgogLyogQml0IG1hc2tzIGluZGlj
YXRpbmcgcGxhY2VzIGEgZmlsZSBpcyByZWZlcmVuY2VkIGZyb20uICovCiAjZGVmaW5lIFJFRl9D
TURfTElORSAgICAweDAxICAgIC8qIEZpbGUgcmVmZXJlbmNlZCBmcm9tIGNvbW1hbmQgbGluZSAq
LwpkaWZmIC0tZ2l0IGEvc3JjL3BhdGguYyBiL3NyYy9wYXRoLmMKaW5kZXggOTNiZDA4ZDIuLjRk
YWI0YmQxIDEwMDY0NAotLS0gYS9zcmMvcGF0aC5jCisrKyBiL3NyYy9wYXRoLmMKQEAgLTM2LDcg
KzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgaW5jbHVkZXMgaW5jbHVkZXM7CiBzdGF0aWMgaW5jbHVk
ZXMgKmRpcl9saXN0OyAgICAgIC8qIHRoZSBsaXN0IG9mIHBhdGggZGlyZWN0b3JpZXMgKi8KIHN0
YXRpYyBpbmNsdWRlcyAqZGlyX2xpc3RfZW5kOyAgLyogdGhlIGVuZCBvZiBzYW1lICovCiBzdGF0
aWMgaW50IGRpcl9tYXhfbGVuZ3RoOyAgICAgIC8qIGxlbmd0aCBvZiBsb25nZXN0IGRpcmVjdG9y
eSBuYW1lICovCi0gCisKIHN0cnVjdCBkZXBlbmRlbmN5CiB7CiAgIHN0cnVjdCBkZXBlbmRlbmN5
ICpuZXh0OyAgICAgIC8qIG5leHQgaW4gbGlzdCBvZiBkZXBlbmRlbmNpZXMgKi8KQEAgLTIxMSw3
ICsyMTEsNyBAQCByZWNvcmRfZGVwZW5kZW5jeSAoY29uc3QgY2hhciAqcGF0aCwgaW50IHJlZl9m
cm9tKQogewogICBkZXBlbmRlbmN5ICpkcDsKICAgZm9yIChkcCA9IGRlcGVuZGVuY3lfbGlzdDsg
ZHAgIT0gTlVMTDsgZHAgPSBkcC0+bmV4dCkKLSAgICBpZiAoc3RyY21wIChwYXRoLCBkcC0+cGF0
aCkgPT0gMCkKKyAgICBpZiAoU1RSRVEgKHBhdGgsIGRwLT5wYXRoKSkKICAgICAgIHsKICAgICAg
ICAgLyogUmVtZW1iZXIgYWxsIHRoZSBwbGFjZXMgdGhpcyBmaWxlIGhhcyBiZWVuIHJlZmVyZW5j
ZWQgZnJvbS4gKi8KICAgICAgICAgZHAtPnJlZl9mcm9tIHw9IHJlZl9mcm9tOwpAQCAtMjU1LDE1
ICsyNTUsMTUgQEAgZ2VuZXJhdGVfbWFrZV9kZXBlbmRlbmNpZXMgKGNvbnN0IGNoYXIgKnBhdGgs
IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHBob255KQogICBmb3IgKGRwID0gZGVwZW5kZW5jeV9s
aXN0OyBkcCAhPSBOVUxMOyBkcCA9IGRwLT5uZXh0KQogICAgIHsKICAgICAgIGxlbiA9IDEgKyBz
dHJsZW4gKGRwLT5wYXRoKTsKLSAgICAgIGlmIChjb2wgKyBsZW4gKyAyID4gbWF4Y29sKSAvKiAr
MiBpcyBmb3IgdHJhaWxpbmcgc3BhY2UvYmFja3NsYXNoICovCisgICAgICBpZiAoY29sICsgbGVu
ICsgMiA+IG1heGNvbCkgICAgICAgLyogKzIgZm9yIHRyYWlsaW5nIHNwYWNlL2JhY2tzbGFzaCAq
LwogICAgICAgICB7Ci0gICAgICAgICAgZnByaW50ZiAoZnAsIiBcXFxuICIpOworICAgICAgICAg
IGZwdXRzICgiIFxcXG4gIiwgZnApOwogICAgICAgICAgIGNvbCA9IDE7CiAgICAgICAgIH0KICAg
ICAgIGZwcmludGYgKGZwLCAiICVzIiwgZHAtPnBhdGgpOwogICAgICAgY29sICs9IGxlbjsKICAg
ICB9Ci0gIGZwcmludGYgKGZwLCAiXG4iKTsKKyAgZnB1dGMgKCdcbicsIGZwKTsKCiAgIC8qIEdl
bmVyYXRlIHBob255IHRhcmdldHMgZm9yIHVzZXItc3BlY2lmaWVkIHN1YnNldCBvZiBkZXBlbmRl
bmNpZXMuICovCiAgIGlmIChwaG9ueSAhPSAwKQotLSAKMi40OS4wCgoKLS0gCkVyaWMgQmxha2Us
IFByaW5jaXBhbCBTb2Z0d2FyZSBFbmdpbmVlcgpSZWQgSGF0LCBJbmMuClZpcnR1YWxpemF0aW9u
OiAgcWVtdS5vcmcgfCBsaWJndWVzdGZzLm9yZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk00LXBhdGNoZXMgbWFpbGluZyBsaXN0Ck00LXBhdGNoZXNA
Z251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9tNC1wYXRjaGVz
Cg==