Re: [RFC PATCH v3 09/19] target/arm: Add named cpu model infra + graviton3 named model

Khushit Shah <[email protected]> Wed, 5 Aug 2026 11:35:11 +0000
Newsgroups org.nongnu.qemu-arm,dev.linux.lists.kvmarm,org.nongnu.qemu-devel
Message-ID <[email protected]>
DQoNCj4gT24gMjYgSnVsIDIwMjYsIGF0IDc6MDTigK9QTSwgRXJpYyBBdWdlciA8ZXJpYy5hdWdl
ckByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+ICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KPiAgQ0FVVElPTjogRXh0
ZXJuYWwgRW1haWwNCj4gDQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIQ0KPiANCj4gSGkgS2h1c2hpdCwNCj4gDQo+
IE9uIDcvMTYvMjYgMTE6MzggUE0sIEtodXNoaXQgU2hhaCB3cm90ZToNCj4+IEZyb206IFNoYWp1
IEFicmFoYW0gPHNoYWp1LmFicmFoYW1AbnV0YW5peC5jb20+DQo+PiANCj4+IEludHJvZHVjZSBh
IHNtYWxsIG5hbWVkLUNQVS1tb2RlbCBsYXllciBvbiB0b3Agb2YgdGhlIGZpZWxkLWJhY2tlZA0K
Pj4gcHJvcGVydHkgaW5mcmFzdHJ1Y3R1cmUuIEVhY2ggbW9kZWwgaXMgYSBmbGF0IHRhYmxlIG9m
IChuYW1lLCB2YWx1ZSkNCj4+IG92ZXJyaWRlcyBhbmQgYSBwYXJlbnQgcG9pbnRlci4gQXQgaW5z
dGFuY2UtaW5pdCwgdGhlIHBhcmVudCBjaGFpbiBpcw0KPj4gd2Fsa2VkIHJvb3QtZmlyc3QgYW5k
IGV2ZXJ5IGxldmVsJ3MgcHJvcGVydGllcyBhcmUgYXBwbGllZCB2aWEgUU9NLA0KPj4gc28gYSBj
aGlsZCBlbnRyeSBvdmVycmlkZXMgaXRzIGFuY2VzdG9ycyBmb3IgdGhlIHNhbWUgbmFtZS4NCj4+
IA0KPj4gRm9yIGV4YW1wbGUsIHRoZSBncmF2aXRvbjMtdjEgbmFtZWQgbW9kZWwgaGllcmFyY2h5
IGlzOg0KPj4gbm9uLXplcm8tZGVmYXVsdHMtdjEgICAgS25vd24gbm9uLXplcm8gZGVmYXVsdCBJ
RCByZWdzIGZpZWxkIHZhbHVlcw0KPj4gIGFybS12OF80LWEtdjEgICAgICAgQVJNdjguNC1BIGFy
Y2hpdGVjdHVyYWwgbWFuZGF0ZQ0KPj4gICAgbmVvdmVyc2UtdjEtdjEgICAgTmVvdmVyc2UgVjEN
Cj4+ICAgICAgZ3Jhdml0b24zLXYxICAgIEFXUyBHcmF2aXRvbjMNCj4+IA0KPj4gbm9uLXplcm8t
ZGVmYXVsdHMtdjE6DQo+PiAgIEZpZWxkIHRoYXQgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIHNv
bWUgbm9uIHplcm8gdmFsdWUgYnkgZGVmYXVsdC4NCj4gZm9sbG93aW5nIHdoaWNoIHNwZWNpZmlj
YXRpb24/IFRoaXMgaXMgbm90IGNsZWFyIHRvIG1lLiBJcyB0aGF0IGxheWVyDQo+IHJlYWxseSBt
ZWFuaW5nZnVsPyBTaG91bGRuJ3Qgd2Ugc3RhcnQgd2l0aCB0aGUgbmV4dCBvbmU/DQoNCk9rYXks
IG1ha2VzIHNlbnNlLiBXZSBjYW4gZ2V0IHJpZCBvZiB0aGlzIGxheWVyLg0KDQo+PiANCj4+IGFy
bS12OF80LWEtdjE6DQo+PiAgT25seSBmZWF0dXJlcyBtYW5kYXRlZCBieSB0aGUgQVJNIEFSTS4N
Cj4+IA0KPj4gbmVvdmVyc2UtdjEtdjE6DQo+PiAgUmVmZXJlbmNlIG1hbnVhbCBkZXJpdmVkIGZl
YXR1cmUgdmFsdWVzIGZvciB0aGUgcmVmZXJlbmNlIGNvcmUuDQo+PiAgVmFsdWVzIGRpZmZlciBm
cm9tIFRSTSB2YWx1ZXMgYmFzZWQgb24gd2hhdCB3YXMgZXhwb3NlZCB0byB0aGUgZ3Vlc3QNCj4+
ICB3aXRoIC1jcHUgaG9zdC4NCj4+IA0KPj4gZ3Jhdml0b24zLXYxOg0KPj4gIFNvQyBpbnRlZ3Jh
dGlvbiBjaG9pY2VzIChjcnlwdG8gcGluLCBjYWNoZSBoaW50cywgUEF1dGggYWxnKS4NCj4+IA0K
Pj4gVGhlIG1vZGVsIHZhbHVlcyBhcmUgZmlndXJlZCBvdXQgZnJvbSBJRCByZWdpc3RlciBkdW1w
IHZpc2libGUgdG8NCj4+IFFFTVUgd2l0aCAtY3B1IGhvc3Qgb24gR3Jhdml0b24zIG1hY2hpbmUu
DQo+PiANCj4+IE1vZGVsIHJlYWxpemF0aW9uOg0KPj4gMS4gWmVybyBvdXQgSUQgcmVncyBhcnJh
eS4NCj4+IDIuIEFkZCBhbGwgcHJvcGVydGllcyB0byB0aGUgQ1BVIE9iamVjdA0KPj4gMy4gYXJt
X3JlYWxpemVfbW9kZWxfY2hhaW46IFdhbGsgdGhlIHBhcmVudCBjaGFpbiBmcm9tIHJvb3QgZmly
c3QgYW5kDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseSBhbGwgdGhlIHByb3Bl
cnRpZXMuDQo+PiANCj4+IENvLWF1dGhvcmVkLWJ5OiBTaGFqdSBBYnJhaGFtIDxzaGFqdS5hYnJh
aGFtQG51dGFuaXguY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogS2h1c2hpdCBTaGFoIDxraHVzaGl0
LnNoYWhAbnV0YW5peC5jb20+DQo+PiAtLS0NCj4+IGh3L2FybS92aXJ0LmMgICAgICAgICAgICAg
ICB8ICAgNSArDQo+PiB0YXJnZXQvYXJtL2FybS1jcHUtbW9kZWxzLmMgfCAzMzYgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiB0YXJnZXQvYXJtL2FybS1jcHUtbW9kZWxz
LmggfCAgMzUgKysrKw0KPj4gdGFyZ2V0L2FybS9tZXNvbi5idWlsZCAgICAgIHwgICA3ICstDQo+
PiA0IGZpbGVzIGNoYW5nZWQsIDM4MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPj4g
Y3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuYw0KPj4gY3JlYXRl
IG1vZGUgMTAwNjQ0IHRhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuaA0KPj4gDQo+PiBkaWZmIC0t
Z2l0IGEvaHcvYXJtL3ZpcnQuYyBiL2h3L2FybS92aXJ0LmMNCj4+IGluZGV4IGZlMTkwMzA4ODYu
LjM0ZTU2ZGMxZjEgMTAwNjQ0DQo+PiAtLS0gYS9ody9hcm0vdmlydC5jDQo+PiArKysgYi9ody9h
cm0vdmlydC5jDQo+PiBAQCAtMzgxMiw2ICszODEyLDExIEBAIHN0YXRpYyBHUHRyQXJyYXkgKnZp
cnRfZ2V0X3ZhbGlkX2NwdV90eXBlcyhjb25zdCBNYWNoaW5lU3RhdGUgKm1zKQ0KPj4gICAgICAg
ICAgICAgZ19wdHJfYXJyYXlfYWRkKHZjdCwgZ19zdHJkdXAoQVJNX0NQVV9UWVBFX05BTUUoImhv
c3QiKSkpOw0KPj4gICAgICAgICB9DQo+PiAgICAgfQ0KPj4gKyAgICBpZiAoa3ZtX2VuYWJsZWQo
KSAmJiB0YXJnZXRfYWFyY2g2NCgpKSB7DQo+PiArICAgICAgICBnX3B0cl9hcnJheV9hZGQodmN0
LCBnX3N0cmR1cChBUk1fQ1BVX1RZUEVfTkFNRSgiYXJtLXY4XzQtYS12MSIpKSk7DQo+PiArICAg
ICAgICBnX3B0cl9hcnJheV9hZGQodmN0LCBnX3N0cmR1cChBUk1fQ1BVX1RZUEVfTkFNRSgibmVv
dmVyc2UtdjEtdjEiKSkpOw0KPj4gKyAgICAgICAgZ19wdHJfYXJyYXlfYWRkKHZjdCwgZ19zdHJk
dXAoQVJNX0NQVV9UWVBFX05BTUUoImdyYXZpdG9uMy12MSIpKSk7DQo+PiArICAgIH0NCj4+ICAg
ICBnX3B0cl9hcnJheV9hZGQodmN0LCBnX3N0cmR1cChBUk1fQ1BVX1RZUEVfTkFNRSgibWF4Iikp
KTsgcmV0dXJuIHZjdDsgZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuYw0K
Pj4gYi90YXJnZXQvYXJtL2FybS1jcHUtbW9kZWxzLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5k
ZXgNCj4+IDAwMDAwMDAwMDAuLjc0N2UwZGYwMTAgLS0tIC9kZXYvbnVsbCArKysgYi90YXJnZXQv
YXJtL2FybS1jcHUtbW9kZWxzLmMNCj4+IEBAIC0wLDAgKzEsMzM2IEBAICsvKiArICogQVJNIG5h
bWVkIENQVSBtb2RlbCBkZWZpbml0aW9ucy4gKyAqICsgKg0KPj4gRWFjaCBtb2RlbCBpcyBkZWZp
bmVkIGFzIGFuIGFycmF5IG9mIE1PREVMX1BST1AgbWFjcm8sIGxpc3Rpbmcgb25seSArDQo+PiAq
IHRoZSBwcm9wZXJ0aWVzIHRoYXQgRElGRkVSIGZyb20gdGhlIHBhcmVudCBtb2RlbC4gKyAqICsg
KiBBdA0KPj4gcmVhbGlzYXRpb24gdGhlIHBhcmVudCBjaGFpbiBpcyB3YWxrZWQgcm9vdC1maXJz
dCBhbmQgKyAqIGV2ZXJ5DQo+PiBsZXZlbCdzIHByb3BzIGFyZSBhcHBsaWVkIHZpYSBRT00sIHNv
IHRoZSBsZWFmJ3MgdmFsdWVzICsgKiBuYXR1cmFsbHkNCj4+IG92ZXJyaWRlIGl0cyBhbmNlc3Rv
cnMuICsgKiArICogSGllcmFyY2h5OiArICogKyAqDQo+PiBub24temVyby1kZWZhdWx0cy12MSBL
bm93biBub24temVybyBkZWZhdWx0IElEIHJlZyBmaWVsZCB2YWx1ZXMgKyAqDQo+PiBhcm0tdjhf
NC1hLXYxIEFSTXY4LjQtQSBhcmNoaXRlY3R1cmFsIG1hbmRhdGUgKyAqIG5lb3ZlcnNlLXYxLXYx
DQo+PiBOZW92ZXJzZSBWMSAoVFJNIDEwMjY0OSkgKyAqIGdyYXZpdG9uMy12MSBBV1MgR3Jhdml0
b24zICsgKiArICoNCj4+IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVy
ICsgKi8gKyArI2luY2x1ZGUgInFlbXUvb3NkZXAuaCINCj4+ICsjaW5jbHVkZSAicWFwaS9lcnJv
ci5oIg0KPj4gKyNpbmNsdWRlICJxZW11L2Vycm9yLXJlcG9ydC5oIg0KPj4gKyNpbmNsdWRlICJz
eXN0ZW0va3ZtLmgiDQo+PiArI2luY2x1ZGUgImNwdS5oIg0KPj4gKyNpbmNsdWRlICJpbnRlcm5h
bHMuaCINCj4+ICsjaW5jbHVkZSAia3ZtX2FybS5oIg0KPj4gKyNpbmNsdWRlICJhcm0tY3B1LW1v
ZGVscy5oIg0KPj4gKyNpbmNsdWRlICJjcHUtaWRyZWdzLmgiDQo+PiArDQo+PiArI2RlZmluZSBN
T0RFTF9QUk9QX0ZJRUxEX1NUUiAgc3RyDQo+PiArI2RlZmluZSBNT0RFTF9QUk9QX0ZJRUxEX0JP
T0wgYg0KPj4gKyNkZWZpbmUgTU9ERUxfUFJPUF9GSUVMRF9OVU0gIG51bQ0KPj4gKw0KPj4gKyNk
ZWZpbmUgTU9ERUxfUFJPUChfbmFtZSwgX3R5cGUsIF92YWx1ZSkgXA0KPj4gKyAgICB7IC5uYW1l
ID0gKF9uYW1lKSwgLnR5cGUgPSBBUk1fTU9ERUxfUFJPUF8jI190eXBlLCBcDQo+PiArICAgICAg
LnUuTU9ERUxfUFJPUF9GSUVMRF8jI190eXBlID0gKF92YWx1ZSkgfQ0KPj4gKw0KPj4gKyNkZWZp
bmUgTU9ERUxfUFJPUF9FTkQgIHsgLm5hbWUgPSBOVUxMIH0NCj4gDQo+IFJlZ2FyZGluZyBzZXR0
aW5ncyBzb21laG93IHdlIGVuZCB1cCB3aXRoIHNvbWV0aGluZyB0aGF0IGlzIHF1aXRlDQo+IHNp
bWlsYXIgdG8gVENHIENQVQ0KPiBkZWZpbml0aW9ucyBsaWtlIGluDQo+IGFhcmNoNjRfbmVvdmVy
c2VfbjFfaW5pdGZuKCkuIFRvIG1lIHRoaXMgaXMgaW4gZ2VuZXJhbCBtb3JlIHJlYWRhYmxlDQo+
IGJlY2F1c2Ugd2UgdXNlIG5hbWUgZmllbGRzIGluc3RlYWQgb2YgcHV0dGluZyB0aGUgZnVsbCBy
ZWcgdmFsdWUuDQo+IFRoaXMgZG9lcyBub3QgcHJldmVudCB1cyBmcm9tIGFkZGluZyBjb21tZW50
cyBhbG9uZyBzZXR0aW5ncyB0byBtYWtlDQo+IHRoaXMgbW9yZSByZWFkYWJsZSBhbmQgZXhwbGlj
aXQuDQoNCkNhbiB5b3UgcGxlYXNlIHNwZWNpZnkgZnVydGhlciBvbiB3aGF0IHR5cGVzIG9mIGNv
bW1lbnRzPw0KTGlrZSB3aGF0IGRvZXMgZWFjaCBwcm9wZXJ0eSB2YWx1ZSBtZWFucz8NCg0KPj4g
Kw0KPj4gKy8qDQo+PiArICogVGhlc2UgZmllbGRzIHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBz
b21lIG5vbi16ZXJvIGRlZmF1bHQgdmFsdWVzLg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBjb25zdCBB
cm1Nb2RlbFByb3BWYWx1ZSBub25femVyb19kZWZhdWx0c192MV9wcm9wc1tdID0gew0KPj4gKyAg
ICAvKiBJRF9BQTY0UEZSMF9FTDEgKi8NCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FB
NjRQRlIwX0VMMV9FTDAiLCBOVU0sIDBiMDAwMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JF
R19JRF9BQTY0UEZSMF9FTDFfRUwxIiwgTlVNLCAwYjAwMDEpLA0KPj4gKyAgICBNT0RFTF9QUk9Q
KCJTWVNSRUdfSURfQUE2NFBGUjBfRUwxX0ZQIiwgTlVNLCAwYjExMTEpLA0KPj4gKyAgICBNT0RF
TF9QUk9QKCJTWVNSRUdfSURfQUE2NFBGUjBfRUwxX0FkdlNJTUQiLCBOVU0sIDBiMTExMSksDQo+
PiArDQo+PiArICAgIC8qIElEX0FBNjRQRlIxX0VMMSAqLw0KPj4gKyAgICBNT0RFTF9QUk9QKCJT
WVNSRUdfSURfQUE2NFBGUjFfRUwxX01URV9mcmFjIiwgTlVNLCAwYjExMTEpLA0KPiBzbyBJIHN0
aWxsIGJlbGlldmUgd2Ugd2FudCBhIHdyYXBwZXIgdGhhdCB0cmFuc3BhcmVudGx5IGVpdGhlciBz
ZXRzIGENCj4gcHJvcCBpZiB0aGUgZmllbGQgaGFwcGVucyB0byBiZSB3cml0YWJsZSBvciBzaW1w
bHkgcGVyZm9ybXMgY2hlY2tzDQo+IGFnYWluc3QgdGhlIGhvc3QgaWYgdGhlIHByb3AgaXMgbm90
IGF2YWlsYWJsZS4NCg0KQ2Fu4oCZdCB3ZSBkbyB0aGF0IGVhc2lseSBhZnRlcndhcmRzIG9uY2Ug
dGhlIElEIHJlZyB2aWV3IGlzIGZpbmFsaXNlZD8NCkRvaW5nIGl0IGhlcmUgbWVhbnMgYWxsIHRo
ZSBxbXAgcGF0aHMgd2hpY2ggZG8gbm90IGludGVuZCB0byBhY3R1YWxseQ0KY3JlYXRlIGFueSB2
Q1BVcyB3aWxsIGVycm9yIG91dCBoZXJlLCB3aGljaCBpcyB1bmRlc2lyYWJsZS4NCg0KPj4gKw0K
Pj4gKyAgICAvKiBJRF9BQTY0TU1GUjBfRUwxICovDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JF
R19JRF9BQTY0TU1GUjBfRUwxX1RHcmFuNjQiLCBOVU0sIDBiMTExMSksDQo+PiArICAgIE1PREVM
X1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjBfRUwxX1RHcmFuNCIsIE5VTSwgMGIxMTExKSwNCj4+
ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfVEdyYW4xNl8yIiwgTlVN
LCAwYjAwMDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1NRlIwX0VMMV9U
R3JhbjY0XzIiLCBOVU0sIDBiMDAwMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B
QTY0TU1GUjBfRUwxX1RHcmFuNF8yIiwgTlVNLCAwYjAwMDEpLA0KPj4gKw0KPj4gKyAgICAvKiBJ
RF9BQTY0REZSMF9FTDEgKi8NCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRERlIw
X0VMMV9EZWJ1Z1ZlciIsIE5VTSwgMHg2KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lE
X0FBNjRERlIwX0VMMV9Eb3VibGVMb2NrIiwgTlVNLCAwYjExMTEpLA0KPj4gKw0KPj4gKyAgICAv
KiBDVFJfRUwwICovDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0wxSXAiLCBO
VU0sIDBiMTApLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfQ1RSX0VMMF9SRVMxXzMxIiwg
TlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgLyogSURfQUE2NE1NRlI0X0VMMSAqLw0KPj4gKyAgICBN
T0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1NRlI0X0VMMV9FMkgwIiwgTlVNLCAwYjExMTEpLA0K
Pj4gKw0KPj4gKyAgICBNT0RFTF9QUk9QX0VORCwNCj4+ICt9Ow0KPiANCj4gVG8gZWFzZSB0aGUg
cmV2aWV3IEkgd291bGQgc3VnZ2VzdCB0byBwdXQgYSBkdW1wIG9mIGFsbCBpZCByZWdzIG9mIGEN
Cj4gbGVhZiBtb2RlbCBpbiB0aGUgY29tbWl0IGRlc2NyaXB0aW9uLiBJdCBpcyBsZXNzIGVycm9y
IHByb25lIHRoYXQNCj4gdW5kZXJzdGFuZGluZyB0aGUgdmFyaW91cyBvdmVycmlkZXMuDQo+IEkg
d291bGQgc3VnZ2VzdCB0byBoYXZlIHNlcGFyYXRlIHBhdGNoZXMgZm9yIGVhY2ggbW9kZWwgdG9v
Lg0KDQpBY2sgdG8gYm90aC4gV2lsbCBkbyB0aGlzIGluIHY0Lg0KDQo+IFNvIHlvdSBzYWlkIGEg
bGVhZiBtb2RlbCBzaGFsbCBoYXZlIGV4cGxpY2l0IHZhbHVlcyBmb3IgZWFjaCBmaWVsZCwNCj4g
aW5jbHVkaW5nIG5vbiB3cml0YWJsZSBvbmVzLiBUaGUgY29kZSBkb2VzIG5vdCBjaGVjayB0aGF0
LiBIb3cgZG8gd2UNCj4gbWFrZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBzZXR0aW5ncz8NCg0K
SSBhbSBub3Qgc3VyZSB3aGVyZSBJIHNheSB0aGF0LCBhc3N1bXB0aW9uIGlzOg0KQmFzZSBtb2Rl
bCBzdGFydHMgd2l0aCBhIHplcm9lZCBJTyByZWcgdmlldywgZWFjaCBtb2RlbCBpbg0KY2hhaW4g
YXBwbGllcyBzb21lIHNldHRpbmdzLCBhIGNoaWxkIG1vZGVs4oCZcyBzZXR0aW5nDQpvdmVycmlk
ZXMgcGFyZW50c+KAmSBzZXR0aW5ncy4NCg0KRm9yIHZlcmlmaWNhdGlvbiB3ZSBjYW4gZHVtcCB0
aGUgbGVhZiBJRCByZWdzIHZpZXcsIGl0DQpzaG91bGQgbWF0Y2ggd2l0aCB0aGUgb25lIGluIHRo
ZSBjb21taXQgbWVzc2FnZSBhcyBwZXINCnlvdXIgc3VnZ2VzdGlvbi4NCj4+ICsNCj4+ICtzdGF0
aWMgY29uc3QgQXJtTW9kZWxQcm9wVmFsdWUgYXJtdjhfNF9hX3YxX3Byb3BzW10gPSB7DQo+PiAr
ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjBfRUwxX0NSQzMyIiwgTlVNLCAxKSwN
Cj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfQXRvbWljIiwgTlVN
LCAyKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfSFBEUyIs
IE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjFfRUwxX0xP
IiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FS
MV9FTDFfRFBCIiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lE
X0FBNjRQRlIwX0VMMV9SQVMiLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdf
SURfQUE2NFBGUjFfRUwxX1JBU19mcmFjIiwgTlVNLCAwKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxf
UFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfUEFOIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9E
RUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMl9FTDFfVUFPIiwgTlVNLCAxKSwNCj4+ICsgICAg
TU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMl9FTDFfQ25QIiwgTlVNLCAxKSwNCj4+ICsg
ICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMl9FTDFfSUVTQiIsIE5VTSwgMSksDQo+
PiArDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0UEZSMF9FTDFfRElUIiwgTlVN
LCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRERlIwX0VMMV9EZWJ1Z1Zl
ciIsIE5VTSwgOSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0REZSMF9FTDFf
UE1VVmVyIiwgTlVNLCA1KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FS
MF9FTDFfVFMiLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NElT
QVIxX0VMMV9MUkNQQyIsIE5VTSwgMiksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B
QTY0TU1GUjJfRUwxX0FUIiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lE
X0FBNjRNTUZSMl9FTDFfSURTIiwgTlVNLCAxKSwNCj4+ICsgICAgLyogS1ZNIHplcm9lcyBvdXQg
dGhlc2UgZmllbGQgd2hlbiBNVEUgaXMgbm90IGVuYWJsZWQuICovDQo+PiArICAgIE1PREVMX1BS
T1AoIlNZU1JFR19JRF9BQTY0UEZSMV9FTDFfTVRFX2ZyYWMiLCBOVU0sIDApLA0KPj4gKyAgICBN
T0RFTF9QUk9QX0VORCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBBcm1Nb2RlbFBy
b3BWYWx1ZSBuZW92ZXJzZV92MV92MV9wcm9wc1tdID0gew0KPj4gKyAgICBNT0RFTF9QUk9QKCJT
WVNSRUdfTUlEUl9FTDFfSW1wbGVtZW50ZXIiLCBOVU0sIDB4NDEpLA0KPj4gKyAgICBNT0RFTF9Q
Uk9QKCJTWVNSRUdfTUlEUl9FTDFfVmFyaWFudCIsIE5VTSwgMHgxKSwNCj4+ICsgICAgTU9ERUxf
UFJPUCgiU1lTUkVHX01JRFJfRUwxX0FyY2hpdGVjdHVyZSIsIE5VTSwgMHhGKSwNCj4+ICsgICAg
TU9ERUxfUFJPUCgiU1lTUkVHX01JRFJfRUwxX1BhcnROdW0iLCBOVU0sIDB4RDQwKSwNCj4+ICsg
ICAgTU9ERUxfUFJPUCgiU1lTUkVHX01JRFJfRUwxX1JldmlzaW9uIiwgTlVNLCAweDEpLA0KPj4g
Kw0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NERGUjBfRUwxX0JSUHMiLCBOVU0s
IDB4NSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0REZSMF9FTDFfV1JQcyIs
IE5VTSwgMHgzKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRERlIwX0VMMV9D
VFhfQ01QcyIsIE5VTSwgMHgxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRE
RlIwX0VMMV9Eb3VibGVMb2NrIiwgTlVNLCAweEYpLA0KPj4gKw0KPj4gKyAgICBNT0RFTF9QUk9Q
KCJTWVNSRUdfSURfQUE2NElTQVIwX0VMMV9SRE0iLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9Q
Uk9QKCJTWVNSRUdfSURfQUE2NElTQVIwX0VMMV9EUCIsIE5VTSwgMSksDQo+PiArICAgIE1PREVM
X1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjBfRUwxX0ZITSIsIE5VTSwgMSksDQo+PiArDQo+PiAr
ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0RQQiIsIE5VTSwgMiksDQo+
PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0pTQ1ZUIiwgTlVNLCAx
KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FSMV9FTDFfRkNNQSIsIE5V
TSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0JGMTYi
LCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NElTQVIxX0VMMV9E
R0giLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NElTQVIxX0VM
MV9JOE1NIiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FB
NjRQRlIwX0VMMV9GUCIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B
QTY0UEZSMF9FTDFfQWR2U0lNRCIsIE5VTSwgMSksDQo+PiArDQo+PiArICAgIE1PREVMX1BST1Ao
IlNZU1JFR19JRF9BQTY0UEZSMF9FTDFfUkFTIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9ERUxfUFJP
UCgiU1lTUkVHX0lEX0FBNjRQRlIxX0VMMV9SQVNfZnJhYyIsIE5VTSwgMCksDQo+PiArDQo+PiAr
ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0UEZSMF9FTDFfQ1NWMiIsIE5VTSwgMSksDQo+
PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0UEZSMV9FTDFfQ1NWMl9mcmFjIiwgTlVN
LCAwKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRQRlIwX0VMMV9D
U1YzIiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRQ
RlIxX0VMMV9TU0JTIiwgTlVNLCAyKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVH
X0lEX0FBNjRNTUZSMF9FTDFfUEFSYW5nZSIsIE5VTSwgNSksDQo+PiArICAgIE1PREVMX1BST1Ao
IlNZU1JFR19JRF9BQTY0TU1GUjBfRUwxX0FTSURCaXRzIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9E
RUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfQmlnRW5kIiwgTlVNLCAxKSwNCj4+ICsg
ICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfU05TTWVtIiwgTlVNLCAxKSwN
Cj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfVEdyYW40IiwgTlVN
LCAwKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfVEdyYW4x
NiIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjBfRUwx
X1RHcmFuNjQiLCBOVU0sIDApLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1N
RlIwX0VMMV9UR3JhbjRfMiIsIE5VTSwgMCksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19J
RF9BQTY0TU1GUjBfRUwxX1RHcmFuMTZfMiIsIE5VTSwgMCksDQo+PiArICAgIE1PREVMX1BST1Ao
IlNZU1JFR19JRF9BQTY0TU1GUjBfRUwxX1RHcmFuNjRfMiIsIE5VTSwgMCksDQo+PiArICAgIE1P
REVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjFfRUwxX0hBRkRCUyIsIE5VTSwgMiksDQo+PiAr
ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjFfRUwxX1ZNSURCaXRzIiwgTlVNLCAy
KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfVkgiLCBOVU0s
IDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1NRlIxX0VMMV9IUERTIiwg
TlVNLCAyKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfWE5Y
IiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFf
U3BlY1NFSSIsIE5VTSwgMCksDQo+PiArDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B
QTY0TU1GUjJfRUwxX0ZXQiIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19J
RF9BQTY0TU1GUjJfRUwxX0JCTSIsIE5VTSwgMiksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JF
R19JRF9BQTY0TU1GUjJfRUwxX0VWVCIsIE5VTSwgMiksDQo+PiArDQo+PiArICAgIE1PREVMX1BS
T1AoIlNZU1JFR19JRF9BQTY0TU1GUjRfRUwxX0UySDAiLCBOVU0sIDApLA0KPj4gKw0KPj4gKyAg
ICBNT0RFTF9QUk9QKCJTWVNSRUdfQ1RSX0VMMF9JbWluTGluZSIsIE5VTSwgNCksDQo+PiArICAg
IE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0wxSXAiLCBOVU0sIDMpLA0KPj4gKyAgICBNT0RF
TF9QUk9QKCJTWVNSRUdfQ1RSX0VMMF9EbWluTGluZSIsIE5VTSwgNCksDQo+PiArICAgIE1PREVM
X1BST1AoIlNZU1JFR19DVFJfRUwwX0VSRyIsIE5VTSwgNCksDQo+PiArICAgIE1PREVMX1BST1Ao
IlNZU1JFR19DVFJfRUwwX0NXRyIsIE5VTSwgNCksDQo+PiArDQo+PiArICAgIE1PREVMX1BST1Ao
IlNZU1JFR19EQ1pJRF9FTDBfQlMiLCBOVU0sIDB4NCksDQo+PiArDQo+PiArICAgIC8qIHBhdXRo
ICovDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0FQQSIsIE5V
TSwgMyksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0dQQSIs
IE5VTSwgMSksDQo+PiArDQo+PiArICAgIC8qIHN2ZSAqLw0KPj4gKyAgICBNT0RFTF9QUk9QKCJT
WVNSRUdfSURfQUE2NFBGUjBfRUwxX1NWRSIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1Ao
IlNZU1JFR19JRF9BQTY0WkZSMF9FTDFfQkYxNiIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BS
T1AoIlNZU1JFR19JRF9BQTY0WkZSMF9FTDFfSThNTSIsIE5VTSwgMSksDQo+PiArICAgIE1PREVM
X1BST1AoInN2ZTEyOCIsIEJPT0wsIHRydWUpLA0KPj4gKw0KPj4gKyAgICBNT0RFTF9QUk9QX0VO
RCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBBcm1Nb2RlbFByb3BWYWx1ZSBncmF2
aXRvbjNfdjFfcHJvcHNbXSA9IHsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJ
U0FSMF9FTDFfQUVTIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FB
NjRJU0FSMF9FTDFfU0hBMSIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19J
RF9BQTY0SVNBUjBfRUwxX1NIQTIiLCBOVU0sIDIpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNS
RUdfSURfQUE2NElTQVIwX0VMMV9TSEEzIiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgi
U1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfU00zIiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJP
UCgiU1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfU000IiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxf
UFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfUk5EUiIsIE5VTSwgMSksDQo+PiArDQo+PiAr
ICAgIE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0lEQyIsIE5VTSwgMSksDQo+PiArICAgIE1P
REVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0RJQyIsIE5VTSwgMSksDQo+PiArDQo+PiArICAgIE1P
REVMX1BST1AoIlNZU1JFR19SRVZJRFJfRUwxX1ZBTCIsIE5VTSwgMSksDQo+PiArDQo+PiArICAg
IE1PREVMX1BST1BfRU5ELA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IEFybU5hbWVk
Q3B1TW9kZWwgYXJtX2NwdV9tb2RlbHNbXSA9IHsNCj4+ICsgICAgew0KPj4gKyAgICAgICAgLm5h
bWUgICA9ICJub24temVyby1kZWZhdWx0cy12MSIsDQo+PiArICAgICAgICAucGFyZW50ID0gTlVM
TCwNCj4+ICsgICAgICAgIC5wcm9wcyAgPSBub25femVyb19kZWZhdWx0c192MV9wcm9wcywNCj4+
ICsgICAgfSwNCj4+ICsgICAgew0KPj4gKyAgICAgICAgLm5hbWUgICA9ICJhcm0tdjhfNC1hLXYx
IiwNCj4+ICsgICAgICAgIC5wYXJlbnQgPSAibm9uLXplcm8tZGVmYXVsdHMtdjEiLA0KPj4gKyAg
ICAgICAgLnByb3BzICA9IGFybXY4XzRfYV92MV9wcm9wcywNCj4+ICsgICAgfSwNCj4+ICsgICAg
ew0KPj4gKyAgICAgICAgLm5hbWUgICA9ICJuZW92ZXJzZS12MS12MSIsDQo+PiArICAgICAgICAu
cGFyZW50ID0gImFybS12OF80LWEtdjEiLA0KPj4gKyAgICAgICAgLnByb3BzICA9IG5lb3ZlcnNl
X3YxX3YxX3Byb3BzLA0KPj4gKyAgICB9LA0KPj4gKyAgICB7DQo+PiArICAgICAgICAubmFtZSAg
ID0gImdyYXZpdG9uMy12MSIsDQo+PiArICAgICAgICAucGFyZW50ID0gIm5lb3ZlcnNlLXYxLXYx
IiwNCj4+ICsgICAgICAgIC5wcm9wcyAgPSBncmF2aXRvbjNfdjFfcHJvcHMsDQo+PiArICAgIH0s
DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgQVJNQ1BVSW5mbyBhcm1fbmFtZWRfY3B1X2luZm9z
W0FSUkFZX1NJWkUoYXJtX2NwdV9tb2RlbHMpXTsNCj4+ICtjb25zdCBBcm1OYW1lZENwdU1vZGVs
ICphcm1fZmluZF9tb2RlbChjb25zdCBjaGFyICpuYW1lKQ0KPj4gK3sNCj4+ICsgICAgc2l6ZV90
IGk7DQo+PiArICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGFybV9jcHVfbW9kZWxzKTsg
aSsrKSB7DQo+PiArICAgICAgICBpZiAoZ19zdHJfZXF1YWwoYXJtX2NwdV9tb2RlbHNbaV0ubmFt
ZSwgbmFtZSkpIHsNCj4+ICsgICAgICAgICAgICByZXR1cm4gJmFybV9jcHVfbW9kZWxzW2ldOw0K
Pj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiArICAgIHJldHVybiBOVUxMOw0KPj4gK30NCj4+
ICsNCj4+ICtzdGF0aWMgdm9pZCBhcm1fYXBwbHlfbW9kZWxfcHJvcHMoT2JqZWN0ICpvYmosIGNv
bnN0IEFybU1vZGVsUHJvcFZhbHVlICpwcm9wcywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPj4gK3sNCj4+ICsgICAgY29uc3QgQXJtTW9kZWxQ
cm9wVmFsdWUgKnB2Ow0KPj4gKyAgICBFUlJQX0dVQVJEKCk7DQo+PiArDQo+PiArICAgIGZvciAo
cHYgPSBwcm9wczsgcHYtPm5hbWU7IHB2KyspIHsNCj4+ICsgICAgICAgIHN3aXRjaCAocHYtPnR5
cGUpIHsNCj4+ICsgICAgICAgIGNhc2UgQVJNX01PREVMX1BST1BfQk9PTDoNCj4+ICsgICAgICAg
ICAgICBvYmplY3RfcHJvcGVydHlfc2V0X2Jvb2wob2JqLCBwdi0+bmFtZSwgcHYtPnUuYiwgZXJy
cCk7DQo+PiArICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICBjYXNlIEFSTV9NT0RFTF9Q
Uk9QX05VTToNCj4+ICsgICAgICAgICAgICBvYmplY3RfcHJvcGVydHlfc2V0X3VpbnQob2JqLCBw
di0+bmFtZSwgcHYtPnUubnVtLCBlcnJwKTsNCj4+ICsgICAgICAgICAgICBicmVhazsNCj4+ICsg
ICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsN
Cj4+ICsgICAgICAgIH0NCj4+ICsgICAgICAgIGlmICgqZXJycCkgew0KPj4gKyAgICAgICAgICAg
IGVycm9yX3ByZXBlbmQoZXJycCwgInByb3BlcnR5ICclcyc6ICIsIHB2LT5uYW1lKTsNCj4+ICsg
ICAgICAgICAgICByZXR1cm47DQo+PiArICAgICAgICB9DQo+PiArICAgIH0NCj4+ICt9DQo+PiAr
DQo+PiArc3RhdGljIHZvaWQgYXJtX3JlYWxpemVfbW9kZWxfY2hhaW4oT2JqZWN0ICpvYmosIGNv
bnN0IEFybU5hbWVkQ3B1TW9kZWwgKm1vZGVsLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVycm9yICoqZXJycCkNCj4+ICt7DQo+PiArICAgIGNvbnN0IEFybU5hbWVk
Q3B1TW9kZWwgKmN1ciwgKnBhcmVudDsNCj4+ICsgICAgY29uc3QgQXJtTmFtZWRDcHVNb2RlbCAq
Y2hhaW5bQVJSQVlfU0laRShhcm1fY3B1X21vZGVscyldOw0KPj4gKyAgICBzaXplX3QgZGVwdGgg
PSAwOw0KPj4gKyAgICBmb3IgKGN1ciA9IG1vZGVsOyBjdXI7ICkgew0KPj4gKyAgICAgICAgaWYg
KGRlcHRoID49IEFSUkFZX1NJWkUoY2hhaW4pKSB7DQo+PiArICAgICAgICAgICAgZXJyb3Jfc2V0
ZyhlcnJwLCAibW9kZWwgJyVzJzogcGFyZW50IGNoYWluIHRvbyBkZWVwICINCj4+ICsgICAgICAg
ICAgICAgICAgICAgICAgICIocG9zc2libGUgY3ljbGUpIiwgbW9kZWwtPm5hbWUpOw0KPj4gKyAg
ICAgICAgICAgIHJldHVybjsNCj4+ICsgICAgICAgIH0NCj4+ICsgICAgICAgIGNoYWluW2RlcHRo
KytdID0gY3VyOw0KPj4gKw0KPj4gKyAgICAgICAgaWYgKCFjdXItPnBhcmVudCkgew0KPj4gKyAg
ICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICAgICAgcGFyZW50ID0gYXJt
X2ZpbmRfbW9kZWwoY3VyLT5wYXJlbnQpOw0KPj4gKyAgICAgICAgaWYgKCFwYXJlbnQpIHsNCj4+
ICsgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJtb2RlbCAnJXMnOiB1bmtub3duIHBhcmVu
dCAnJXMnIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGN1ci0+bmFtZSwgY3VyLT5wYXJl
bnQpOw0KPj4gKyAgICAgICAgICAgIHJldHVybjsNCj4+ICsgICAgICAgIH0NCj4+ICsgICAgICAg
IGN1ciA9IHBhcmVudDsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICB3aGlsZSAoZGVwdGgtLSkg
ew0KPj4gKyAgICAgICAgYXJtX2FwcGx5X21vZGVsX3Byb3BzKG9iaiwgY2hhaW5bZGVwdGhdLT5w
cm9wcywgZXJycCk7DQo+PiArICAgICAgICBpZiAoKmVycnApIHsNCj4+ICsgICAgICAgICAgICBy
ZXR1cm47DQo+PiArICAgICAgICB9DQo+PiArICAgIH0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj
IHZvaWQgYXJtX25hbWVkX2NwdV9pbml0Zm4oT2JqZWN0ICpvYmopDQo+PiArew0KPj4gKyAgICBB
Uk1DUFUgKmNwdSA9IEFSTV9DUFUob2JqKTsNCj4+ICsgICAgQVJNQ1BVQ2xhc3MgKmFjYyA9IEFS
TV9DUFVfR0VUX0NMQVNTKG9iaik7DQo+PiArICAgIGNvbnN0IEFybU5hbWVkQ3B1TW9kZWwgKm1v
ZGVsID0gYXJtX2ZpbmRfbW9kZWwoYWNjLT5pbmZvLT5uYW1lKTsNCj4+ICsgICAgaWYgKCFtb2Rl
bCkgew0KPj4gKyAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIENQVSBtb2RlbCBlbnRyeSBub3Qg
Zm91bmQpIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBhY2MtPmluZm8tPm5hbWUpOw0KPj4g
KyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGlmICgha3ZtX2VuYWJs
ZWQoKSkgew0KPj4gKyAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIENQVSBtb2RlbCByZXF1aXJl
cyBLVk0gKC1hY2NlbCBrdm0pIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBhY2MtPmluZm8t
Pm5hbWUpOw0KPj4gKyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGt2
bV9hcm1fc2V0X2NwdV9mZWF0dXJlc19mcm9tX2hvc3QoY3B1KTsNCj4+ICsgICAgaWYgKCFhcm1f
ZmVhdHVyZSgmY3B1LT5lbnYsIEFSTV9GRUFUVVJFX0FBUkNINjQpKSB7DQo+PiArICAgICAgICBy
ZXR1cm47DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgLyogMS4gUmVzZXQgSUQgcmVncyB0byAw
ICovDQo+PiArICAgIG1lbXNldChjcHUtPmlzYXIuaWRyZWdzLCAwLCBzaXplb2YoY3B1LT5pc2Fy
LmlkcmVncykpOw0KPj4gKw0KPj4gKyAgICAvKiAyLiBBZGQgc3ZlTk5OTiBhbmQgU1lTUkVHXyBw
cm9wZXJ0aWVzICovDQo+PiArICAgIGFhcmNoNjRfYWRkX3N2ZV9wcm9wZXJ0aWVzKG9iaik7DQo+
PiArICAgIGFhcmNoNjRfYWRkX2lkcmVnc19wcm9wZXJ0aWVzKG9iaik7DQo+PiArDQo+PiArICAg
IC8qIDMuIFJlYWxpemUgdGhlIG1vZGVsIGNoYWluLiAqLw0KPj4gKyAgICBhcm1fcmVhbGl6ZV9t
b2RlbF9jaGFpbihvYmosIG1vZGVsLCAmZXJyb3JfYWJvcnQpOw0KPj4gK30NCj4+ICsNCj4+ICt2
b2lkIGFybV9yZWdpc3Rlcl9uYW1lZF9jcHVfbW9kZWxzKHZvaWQpDQo+PiArew0KPj4gKyAgICBz
aXplX3QgaTsNCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXJtX2NwdV9tb2Rl
bHMpOyBpKyspIHsNCj4+ICsgICAgICAgIGFybV9uYW1lZF9jcHVfaW5mb3NbaV0ubmFtZSA9IGFy
bV9jcHVfbW9kZWxzW2ldLm5hbWU7DQo+PiArICAgICAgICBhcm1fbmFtZWRfY3B1X2luZm9zW2ld
LmluaXRmbiA9IGFybV9uYW1lZF9jcHVfaW5pdGZuOw0KPj4gKyAgICAgICAgYXJtX2NwdV9yZWdp
c3RlcigmYXJtX25hbWVkX2NwdV9pbmZvc1tpXSk7DQo+PiArICAgIH0NCj4+ICt9DQo+PiArDQo+
PiArdHlwZV9pbml0KGFybV9yZWdpc3Rlcl9uYW1lZF9jcHVfbW9kZWxzKQ0KPj4gZGlmZiAtLWdp
dCBhL3RhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuaCBiL3RhcmdldC9hcm0vYXJtLWNwdS1tb2Rl
bHMuaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAuLmFjNGU1
MTA0OTkNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL3RhcmdldC9hcm0vYXJtLWNwdS1tb2Rl
bHMuaA0KPj4gQEAgLTAsMCArMSwzNSBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBHUEwtMi4wLW9yLWxhdGVyICovDQo+PiArLyoNCj4+ICsgKiBBUk0gbmFtZWQgQ1BVIG1vZGVs
IGRlZmluaXRpb25zIC0gcHVibGljIEFQSS4NCj4+ICsgKi8NCj4+ICsjaWZuZGVmIEFSTV9DUFVf
TU9ERUxTX0gNCj4+ICsjZGVmaW5lIEFSTV9DUFVfTU9ERUxTX0gNCj4+ICsNCj4+ICsjaW5jbHVk
ZSAicWFwaS9lcnJvci5oIg0KPj4gKyNpbmNsdWRlICJxb20vb2JqZWN0LmgiDQo+PiArDQo+PiAr
dHlwZWRlZiBlbnVtIEFybU1vZGVsUHJvcFR5cGUgew0KPj4gKyAgICBBUk1fTU9ERUxfUFJPUF9C
T09MLA0KPj4gKyAgICBBUk1fTU9ERUxfUFJPUF9OVU0sDQo+PiArfSBBcm1Nb2RlbFByb3BUeXBl
Ow0KPj4gKw0KPj4gK3R5cGVkZWYgc3RydWN0IEFybU1vZGVsUHJvcFZhbHVlIHsNCj4+ICsgICAg
Y29uc3QgY2hhciAgICAgKm5hbWU7DQo+PiArICAgIEFybU1vZGVsUHJvcFR5cGUgdHlwZTsNCj4+
ICsgICAgdW5pb24gew0KPj4gKyAgICAgICAgYm9vbCAgICAgICAgICAgIGI7DQo+PiArICAgICAg
ICB1aW50NjRfdCAgICAgICAgbnVtOw0KPj4gKyAgICB9IHU7DQo+PiArfSBBcm1Nb2RlbFByb3BW
YWx1ZTsNCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCBBcm1OYW1lZENwdU1vZGVsIHsNCj4+ICsg
ICAgY29uc3QgY2hhciAgICAgICAgICAgICAgKm5hbWU7DQo+PiArICAgIGNvbnN0IGNoYXIgICAg
ICAgICAgICAgICpwYXJlbnQ7DQo+PiArICAgIGNvbnN0IEFybU1vZGVsUHJvcFZhbHVlICpwcm9w
czsNCj4+ICt9IEFybU5hbWVkQ3B1TW9kZWw7DQo+PiArDQo+PiArdm9pZCBhcm1fcmVnaXN0ZXJf
bmFtZWRfY3B1X21vZGVscyh2b2lkKTsNCj4+ICsNCj4+ICtjb25zdCBBcm1OYW1lZENwdU1vZGVs
ICphcm1fZmluZF9tb2RlbChjb25zdCBjaGFyICpuYW1lKTsNCj4+ICsNCj4+ICsjZW5kaWYgLyog
QVJNX0NQVV9NT0RFTFNfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0vbWVzb24uYnVp
bGQgYi90YXJnZXQvYXJtL21lc29uLmJ1aWxkDQo+PiBpbmRleCA2NGQxZWM2M2FiLi43MmVlZDFi
Y2M2IDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9tZXNvbi5idWlsZA0KPj4gKysrIGIvdGFy
Z2V0L2FybS9tZXNvbi5idWlsZA0KPj4gQEAgLTEwLDcgKzEwLDcgQEAgYXJtX3VzZXJfc3MuYWRk
KGZpbGVzKCdnZGJzdHViLmMnKSkNCj4+IA0KPj4gYXJtX3NzLmFkZCh3aGVuOiAnVEFSR0VUX0FB
UkNINjQnLCBpZl90cnVlOiBmaWxlcygNCj4+ICAgJ2NwdTY0LmMnLA0KPj4gLSAgJ2dkYnN0dWI2
NC5jJw0KPj4gKyAgJ2dkYnN0dWI2NC5jJywNCj4+ICkpDQo+PiANCj4+IGFybV9jb21tb25fc3Mu
YWRkKGZpbGVzKA0KPj4gQEAgLTIxLDcgKzIxLDEwIEBAIGFybV9jb21tb25fc3lzdGVtX3NzLmFk
ZChmaWxlcygNCj4+ICAgJ2FybS1xbXAtY21kcy5jJywNCj4+ICAgJ2NwdS1pZHJlZ3MuYycsDQo+
PiApKQ0KPj4gLWFybV9zeXN0ZW1fc3MuYWRkKHdoZW46ICdDT05GSUdfS1ZNJywgaWZfdHJ1ZTog
ZmlsZXMoJ2h5cF9nZGJzdHViLmMnLCAna3ZtLmMnKSkNCj4+ICthcm1fc3lzdGVtX3NzLmFkZCh3
aGVuOiAnVEFSR0VUX0FBUkNINjQnLCBpZl90cnVlOiBmaWxlcygnYXJtLWNwdS1tb2RlbHMuYycp
KQ0KPj4gK2FybV9zeXN0ZW1fc3MuYWRkKHdoZW46ICdDT05GSUdfS1ZNJywNCj4+ICsgICAgICAg
ICAgICAgICAgICBpZl90cnVlOiBmaWxlcygnaHlwX2dkYnN0dWIuYycsDQo+PiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2t2bS5jJykpDQo+PiBhcm1fc3lzdGVtX3NzLmFkZCh3
aGVuOiAnQ09ORklHX0hWRicsIGlmX3RydWU6IGZpbGVzKCdoeXBfZ2Ric3R1Yi5jJykpDQo+PiAN
Cj4+IGFybV91c2VyX3NzLmFkZChmaWxlcygnY3B1LmMnKSkNCj4gVGhhbmtzDQo+IA0KPiBFcmlj
DQoNCg0K