Re: [RFC PATCH v3 14/19] target/arm/kvm: compute supported values for ID register fields

Khushit Shah <[email protected]> Wed, 5 Aug 2026 09:58:44 +0000
Newsgroups org.nongnu.qemu-arm,dev.linux.lists.kvmarm,org.nongnu.qemu-devel
Message-ID <[email protected]>
DQoNCj4gT24gMjYgSnVsIDIwMjYsIGF0IDc6NTLigK9QTSwgRXJpYyBBdWdlciA8ZXJpYy5hdWdl
ckByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+ICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KPiAgQ0FVVElPTjogRXh0
ZXJuYWwgRW1haWwNCj4gDQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIQ0KPiANCj4gSGkgS2h1c2hpdCwNCj4gDQo+
IE9uIDcvMTYvMjYgMTE6MzggUE0sIEtodXNoaXQgU2hhaCB3cm90ZToNCj4+IEFkZCBhcm1fZmll
bGRfZ2V0X3N1cHBvcnRlZF92YWx1ZXMoKSB3aGljaCwgZm9yIGEgZ2l2ZW4gSUQgcmVnaXN0ZXIN
Cj4+IGZpZWxkLCBidWlsZHMgdGhlIHNldCBvZiB2YWx1ZXMgS1ZNIGFsbG93cyBpdCB0byB0YWtl
IG9uIHRoZSBsaXZlIGhvc3QuDQo+PiANCj4+IE5vbi13cml0YWJsZSBmaWVsZHMgYXJlIHBpbm5l
ZCB0byB0aGUgaG9zdCB2YWx1ZS4gV3JpdGFibGUgZmllbGRzIGZvbGxvdw0KPj4gdGhlaXIgcGVy
IGZpZWxkIGNvbnN0cmFpbnRzLiBUaGlzIGZ1bmN0aW9uIGxpa2VseSBuZWVkcyBjaGFuZ2Ugd2hl
bg0KPj4gS1ZNIHN0YXJ0cyBleHBvc2luZyBhIG5ldyB3cml0YWJsZSBmaWVsZCB0aGF0IGlzIG5v
dCBsb3dlci1zYWZlLCBoZW5jZSwNCj4+IHRoZSBzcGVjaWFsIGhhbmRsaW5nIG9mIFRHcmFuWF8y
L1NwZWNTRUkvTDFJcC9NSURSL1JFVklEUi9BSURSLg0KPiBzbyB0aGlzIGxvb2tzIHF1aXRlIHJp
c2t5LiANCkkgYWdyZWUuDQoNCldoYXQgYXJlIHlvdXIgdGhvdWdodHMgb24gaGF2aW5nIGEgYXV0
aG9yaXRhdGl2ZSBsaXN0IGluIFFFTVUgb2YgYWxsDQp3cml0YWJsZSBmaWVsZHM/IE5vIG1hdHRl
ciB3aGF0IEtWTSBleHBvc2VzIGFzIHdyaXRhYmxlLCBhY3R1YWwgZmllbGRzDQp3ZSBhbGxvdyB0
byBiZSB3cml0YWJsZSB3aWxsIGJlIGludGVyc2VjdGlvbiBvZiBLVk0gd3JpdGFibGUgKyBRRU1V
DQp3cml0YWJsZS4gV2hlbiBUaGUgUUVNVSBsaXN0IGlzIHVwZGF0ZWQgd2UgbWFrZSBzdXJlIHRo
aW5ncyBsaWtlIHRoaXMNCmZ1bmN0aW9uIGlzIHVwZGF0ZWQuDQoNClRoaXMgZ2V04oCZcyByaWQg
b2YgY2FzZXMgd2hlcmUgd2Ugc2lsZW50bHkgc3VwcG9ydCB3cml0aW5nIHRvIGEgZmllbGQuDQpJ
dCBpcyBzaW1pbGFyIHRvIHg4NiwgUUVNVSBvbmx5IHN1cHBvcnRzIHdyaXRpbmcgdG8gc3BlY2lm
aWMgQ1BVSUQNCmxlYWZzIChieSB0aGUgZGVmaW5lZCBQcm9wZXJ0aWVzKSBhbmQgbm90IGp1c3Qg
YW55IENQVUlEIGxlYWZzLg0KDQo+PiANCj4+IENyb3NzLWZpZWxkIGNvbnN0cmFpbnRzIGFyZSBu
b3QgbW9kZWxsZWQ7IGZvciBleGFtcGxlIElEX0FBNjRaRlIwX0VMMQ0KPj4gaXMgZ2F0ZWQgYnkg
U1ZFLiBSZXByb2R1Y2luZyBldmVyeSBpbnRlci1maWVsZCBkZXBlbmRlbmN5IGluIFFFTVUNCj4+
IHdvdWxkIG9ubHkgZHVwbGljYXRlIEtWTSdzIGxvZ2ljIGFuZCBkcmlmdCBvdXQgb2Ygc3luYyB3
aXRoIGl0Lg0KPiANCj4gSXNuJ3QgcW1wX3F1ZXJ5X2NwdV9tb2RlbF9leHBhbnNpb24gc3VmZmlj
aWVudD8gSW4gZ2VuZXJhbCB1cHBlciBsYXllcnMNCj4gd2lsbCB0cnkgdG8gYXBwbHkgcmF3IG5h
bWVkIG1vZGVscy4gSWYgYWp1c3RlbWVudHMgYXJlIG5lZWRlZCBiZXR3ZWVuDQo+IHNvdXJjZSBh
bmQgZGVzdGluYXRpb24sIHdlIGtub3cgZmllbGQgY2FuZGlkYXRlIHZhbHVlcyAoZWl0aGVyIHRo
ZQ0KPiBzb3VyY2Ugb3IgZGVzdCBvbmUpIGFuZCB0aGlzIGxhdHRlciBjYW4gYmUgZGlyZWN0bHkg
dHJpZWQgdXNpbmcNCj4gcW1wX3F1ZXJ5X2NwdV9tb2RlbF9leHBhbnNpb24gd3JpdGUuIE9uIHRv
cCBvZiB0aGF0DQo+IHFtcF9xdWVyeV9jcHVfbW9kZWxfZXhwYW5zaW9uIGNhbiBiZSBkaXJlY3Rs
eSBjaGVja2VkIGFnYWluc3QgYSBzY3JhdGNoDQo+IHZjcHUgcmV1c2luZyB0aGUgbG9naWMgaW1w
bGVtZW50ZWQgYXQga2VybmVsIGxldmVsLg0KDQpJIGFtIG5vdCBzdXJlIGlmIGl0IGlzIGFjY2Vw
dGFibGUgZm9yIHF1ZXJ5X2NwdV9tb2RlbF9leHBhbnNpb24gc2hvdWxkIGZhaWwNCmlmIG1vZGVs
IGlzIG5vdCByZWFsaXNhYmxlLiBPbiBhdCBsZWFzdCB4ODYgaXQgZG9lcyBub3QuIEl0IGp1c3Qg
cmV0dXJucyB0aGUNCnN0YXRlIHdoaWNoIFFFTVUgd291bGQgcmVxdWVzdCBLVk0gZm9yIHRoZSBn
aXZlbiBjb25maWd1cmF0aW9ucy4NCg0KUmVmOg0KaHR0cHM6Ly9naXRodWIuY29tL3FlbXUvcWVt
dS9ibG9iLzNlM2NjYWIxMDZmODc5YjE1MTJmOGUwZDUxYTgyN2RkNGRlMzBlMjIvdGFyZ2V0L2kz
ODYvY3B1LmMjTDk2ODkNCg0KY3B1LWRlZmluaXRpb25zIGlzIG1heWJlIGEgYmV0dGVyIGNhbmRp
ZGF0ZSBmb3IgYWxnbyB5b3UgYXJlIGRlc2NyaWJpbmcsIGJ1dA0KaXQgd2lsbCBub3QgdGFrZSB0
aGUgdXNlciBvdmVycmlkZXMgaW50byBjb25zaWRlcmF0aW9ucyBhbmQgb25seSBzYXkgaWYgYQ0K
YmFzZSBtb2RlbCBpcyB1c2FibGUgb3Igbm90DQoNCg0KPj4gU2lnbmVkLW9mZi1ieTogS2h1c2hp
dCBTaGFoIDxraHVzaGl0LnNoYWhAbnV0YW5peC5jb20+DQo+PiAtLS0NCj4+IHRhcmdldC9hcm0v
a3ZtLmMgICAgIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysNCj4+IHRhcmdldC9hcm0va3ZtX2FybS5oIHwgMjYgKysrKysrKysrKysrDQo+PiAyIGZpbGVz
IGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspDQo+PiANCj4+IGRpZmYgLS1naXQgYS90YXJnZXQv
YXJtL2t2bS5jIGIvdGFyZ2V0L2FybS9rdm0uYw0KPj4gaW5kZXggYzM4Yjk5Y2ZjZS4uOGY0NTJm
OTU3MCAxMDA2NDQNCj4+IC0tLSBhL3RhcmdldC9hcm0va3ZtLmMNCj4+ICsrKyBiL3RhcmdldC9h
cm0va3ZtLmMNCj4+IEBAIC0xMjYyLDYgKzEyNjIsMTA1IEBAIGJvb2wga3ZtX2FybV9jcHVfcG9z
dF9sb2FkKEFSTUNQVSAqY3B1KQ0KPj4gICAgIHJldHVybiB0cnVlOw0KPj4gfQ0KPj4gDQo+PiAr
c3RhdGljIGJvb2wgYXJtX2ZpZWxkX2lzX3NpZ25lZChjb25zdCBBUk02NFN5c1JlZ0ZpZWxkICpm
aWVsZCkNCj4+ICt7DQo+PiArICAgIHJldHVybiBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9BQTY0
TU1GUjBfRUwxX0lEWCwgIlRHcmFuNCIpICAgIHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRj
aGVzKGZpZWxkLCBJRF9BQTY0TU1GUjBfRUwxX0lEWCwgIlRHcmFuNjQiKSAgIHx8DQo+PiArICAg
ICAgICAgICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9NTUZSMF9FTDFfSURYLCAiSW5uZXJTaHIi
KSAgICAgIHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9NTUZSMF9F
TDFfSURYLCAiT3V0ZXJTaHIiKSAgICAgIHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRjaGVz
KGZpZWxkLCBJRF9BQTY0REZSMF9FTDFfSURYLCAiRG91YmxlTG9jayIpIHx8DQo+PiArICAgICAg
ICAgICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9BQTY0REZSMF9FTDFfSURYLCAiUE1VVmVyIikg
ICAgIHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9ERlIwX0VMMV9J
RFgsICJQZXJmTW9uIikgICAgICAgIHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRjaGVzKGZp
ZWxkLCBJRF9BQTY0UEZSMV9FTDFfSURYLCAiTVRFX2ZyYWMiKSAgIHx8DQo+PiArICAgICAgICAg
ICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9BQTY0TU1GUjRfRUwxX0lEWCwgIkUySDAiKSAgICAg
IHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9ERlIxX0VMMV9JRFgs
ICJNVFBNVSIpICAgICAgICAgIHx8DQo+PiArICAgICAgICAgICBmaWVsZF9tYXRjaGVzKGZpZWxk
LCBJRF9BQTY0UEZSMF9FTDFfSURYLCAiRlAiKSAgICAgICAgIHx8DQo+PiArICAgICAgICAgICBm
aWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9BQTY0UEZSMF9FTDFfSURYLCAiQWR2U0lNRCIpOw0KPiBD
YW4ndCB3ZSBleHRyYWN0IHRoaXMgZnJvbSBSZWdpc3Rlci5qc29uIGluc3RlYWQ/DQoNCkFGQUlL
LCBUaGVyZSBpcyBub3Qgc2lnbmVkbmVzcyBkYXRhIGluIFJlZ2lzdGVyLmpzb24NCg0KPj4gK30N
Cj4+ICsNCj4+ICtzdGF0aWMgdm9pZCByYW5nZXNfYWRkKEdBcnJheSAqcmFuZ2VzLCB1aW50NjRf
dCBtaW4sIHVpbnQ2NF90IG1heCkNCj4+ICt7DQo+PiArICAgIEFybUZpZWxkUmFuZ2UgciA9IHsg
Lm1pbiA9IG1pbiwgLm1heCA9IG1heCB9Ow0KPj4gKyAgICBnX2FycmF5X2FwcGVuZF92YWwocmFu
Z2VzLCByKTsNCj4+ICt9DQo+PiArDQo+PiArdm9pZCBhcm1fZmllbGRfZ2V0X3N1cHBvcnRlZF92
YWx1ZXMoY29uc3QgQVJNNjRTeXNSZWdGaWVsZCAqZmllbGQsDQo+PiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJNSVNBUmVnaXN0ZXJzICpob3N0X2lzYXIsDQo+
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJtRmllbGRWYWx1ZVNldCAq
KnZhbHVlX3NldCkNCj4+ICt7DQo+PiArICAgIGJvb2wgaXNfc2lnbmVkID0gYXJtX2ZpZWxkX2lz
X3NpZ25lZChmaWVsZCk7DQo+PiArICAgIHVpbnQ2NF90IGhvc3QgPSBleHRyYWN0NjQoaG9zdF9p
c2FyLT5pZHJlZ3NbZmllbGQtPmluZGV4XSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWVsZC0+c2hpZnQsIGZpZWxkLT5sZW5ndGgpOw0KPj4gKyAgICBHQXJyYXkgKnJhbmdl
cyA9IGdfYXJyYXlfbmV3KGZhbHNlLCBmYWxzZSwgc2l6ZW9mKEFybUZpZWxkUmFuZ2UpKTsNCj4+
ICsNCj4+ICsgICAgLyogQSBub24td3JpdGFibGUgZmllbGQgY2FuIG9ubHkgZXZlciBob2xkIHRo
ZSBob3N0IHZhbHVlLiAqLw0KPj4gKyAgICBpZiAoIWFybV9maWVsZF9pc193cml0YWJsZShmaWVs
ZCkpIHsNCj4+ICsgICAgICAgIHJhbmdlc19hZGQocmFuZ2VzLCBob3N0LCBob3N0KTsNCj4+ICsg
ICAgICAgIGdvdG8gZG9uZTsNCj4geW91IGFscmVhZHkgZ2V0IHRoaXMgaW5mbyBmcm9tIHFtcF9x
dWVyeV9jcHVfbW9kZWxfZXhwYW5zaW9uDQpDYW4geW91IHBsZWFzZSBlbGFib3JhdGUgaG93PyBJ
IHRob3VnaHQgdGhlIGN1cnJlbnQgcW1wX3F1ZXJ5X2NwdV9tb2RlbF9leHBhbnNpb24NCihZb3Vy
IHY2KSBvbmx5IHJldHVybnMgdGhlIHdyaXRhYmxlIGZpZWxkLg0KKEkgaGF2ZSBub3QgeWV0IGxv
b2tlZCBhdCB2NykNCg0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGlmIChmaWVsZF9tYXRjaGVz
KGZpZWxkLCBJRF9BQTY0TU1GUjBfRUwxX0lEWCwgIlRHcmFuNF8yIikgIHx8DQo+PiArICAgICAg
ICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9BQTY0TU1GUjBfRUwxX0lEWCwgIlRHcmFuMTZfMiIp
IHx8DQo+PiArICAgICAgICBmaWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9BQTY0TU1GUjBfRUwxX0lE
WCwgIlRHcmFuNjRfMiIpKSB7DQo+PiArICAgICAgICAvKiBFaXRoZXIgc3VwcG9ydCB0aGUgaG9z
dCB2YWx1ZSBvciB0aGUgIm9mZiIgdmFsdWUgKi8NCj4+ICsgICAgICAgIHJhbmdlc19hZGQocmFu
Z2VzLCBob3N0LCBob3N0KTsNCj4+ICsgICAgICAgIGlmIChob3N0ICE9IDEpIHsgLyogMSA9ICJv
ZmYiICovDQo+PiArICAgICAgICAgICAgcmFuZ2VzX2FkZChyYW5nZXMsIDEsIDEpOw0KPj4gKyAg
ICAgICAgfQ0KPj4gKyAgICB9IGVsc2UgaWYgKGZpZWxkX21hdGNoZXMoZmllbGQsIENUUl9FTDBf
SURYLCAiTDFJcCIpKSB7DQo+PiArICAgICAgICAvKiBPbmx5IHNhZmUgdG8gZG93bmdyYWRlIHRv
IFZJUFQsIG90aGVyIHZhbHVlcyBhcmUgcmVzZXJ2ZWQuICovDQo+PiArICAgICAgICByYW5nZXNf
YWRkKHJhbmdlcywgaG9zdCwgaG9zdCk7DQo+PiArICAgICAgICBpZiAoaG9zdCAhPSAyKSB7IC8q
IDIgPSAiVklQVCIgKi8NCj4+ICsgICAgICAgICAgICByYW5nZXNfYWRkKHJhbmdlcywgMiwgMik7
DQo+PiArICAgICAgICB9DQo+PiArICAgIH0gZWxzZSBpZiAoZmllbGRfbWF0Y2hlcyhmaWVsZCwg
SURfQUE2NE1NRlIxX0VMMV9JRFgsICJTcGVjU0VJIikgfHwNCj4+ICsgICAgICAgICAgICAgICBm
aWVsZF9tYXRjaGVzKGZpZWxkLCBJRF9NTUZSNF9FTDFfSURYLCAiU3BlY1NFSSIpKSB7DQo+PiAr
ICAgICAgICAvKiBJdCBpcyBzYWZlIHRvIHVwZ3JhZGUgU3BlY1NFSSB0byAxLCBvdGhlciB2YWx1
ZXMgYXJlIHJlc2VydmVkLiAqLw0KPj4gKyAgICAgICAgcmFuZ2VzX2FkZChyYW5nZXMsIGhvc3Qs
IGhvc3QpOw0KPj4gKyAgICAgICAgaWYgKGhvc3QgIT0gMSkgew0KPj4gKyAgICAgICAgICAgIHJh
bmdlc19hZGQocmFuZ2VzLCAxLCAxKTsNCj4+ICsgICAgICAgIH0NCj4+ICsgICAgfSBlbHNlIGlm
IChmaWVsZC0+aW5kZXggPT0gTUlEUl9FTDFfSURYIHx8DQo+PiArICAgICAgICAgICAgICAgZmll
bGQtPmluZGV4ID09IFJFVklEUl9FTDFfSURYIHx8DQo+PiArICAgICAgICAgICAgICAgZmllbGQt
PmluZGV4ID09IEFJRFJfRUwxX0lEWCkgew0KPj4gKyAgICAgICAgLyoNCj4+ICsgICAgICAgICAq
IE5vIHJlc3RyaWN0aW9uIG9uIHZhbHVlIHRoYXQgY2FuIGJlIHNldCBmb3IgaW1wbGVtZW50YXRp
b24gSUQNCj4+ICsgICAgICAgICAqIHJlZ2lzdGVycyBmaWVsZHMuDQo+PiArICAgICAgICAgKi8N
Cj4+ICsgICAgICAgIHVpbnQ2NF90IG1heCA9IDA7DQo+PiArICAgICAgICBpZiAoZmllbGQtPmxl
bmd0aCA9PSA2NCkgew0KPj4gKyAgICAgICAgICAgIG1heCA9IH4wVUxMOw0KPj4gKyAgICAgICAg
fSBlbHNlIHsNCj4+ICsgICAgICAgICAgICBtYXggPSAoMVVMTCA8PCBmaWVsZC0+bGVuZ3RoKSAt
IDE7DQo+PiArICAgICAgICB9DQo+PiArICAgICAgICByYW5nZXNfYWRkKHJhbmdlcywgMCwgbWF4
KTsNCj4+ICsgICAgfSBlbHNlIHsNCj4+ICsgICAgICAgIC8qDQo+PiArICAgICAgICAgKiBBZnRl
ciBoYW5kbGluZyB0aGUgc3BlY2lhbCBjYXNlcywgb3RoZXIgd3JpdGFibGUgZmllbGRzIGFyZQ0K
Pj4gKyAgICAgICAgICogZWl0aGVyIGxvd2VyLXNhZmUgb3Igc2lnbmVkIGxvd2VyLXNhZmUuDQo+
PiArICAgICAgICAgKi8NCj4+ICsgICAgICAgIGlmIChmaWVsZC0+YXJjaF92YWxzX2NvdW50KSB7
DQo+PiArICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGZpZWxkLT5hcmNoX3Zh
bHNfY291bnQ7IGkrKykgew0KPj4gKyAgICAgICAgICAgICAgICB1aW50NjRfdCBhdiA9IGZpZWxk
LT5hcmNoX3ZhbHNbaV0udmFsdWU7DQo+PiArICAgICAgICAgICAgICAgIGludDY0X3QgdiA9IGlz
X3NpZ25lZCA/DQo+PiArICAgICAgICAgICAgICAgICAgICBzZXh0cmFjdDY0KGF2LCAwLCBmaWVs
ZC0+bGVuZ3RoKSA6IChpbnQ2NF90KWF2Ow0KPj4gKyAgICAgICAgICAgICAgICBpbnQ2NF90IGh2
ID0gaXNfc2lnbmVkID8NCj4+ICsgICAgICAgICAgICAgICAgICAgIHNleHRyYWN0NjQoaG9zdCwg
MCwgZmllbGQtPmxlbmd0aCkgOiAoaW50NjRfdClob3N0Ow0KPj4gKyAgICAgICAgICAgICAgICBp
ZiAodiA8PSBodikgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VzX2FkZChyYW5nZXMs
IGF2LCBhdik7DQo+PiArICAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgICAgICB9DQo+PiAr
ICAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAgIGdfYXNzZXJ0KCFpc19zaWduZWQpOyAv
KiBObyBzaWduZWQgZmllbGQgd2l0aCBubyBhcmNoIHZhbHMgKi8NCj4+ICsgICAgICAgICAgICBy
YW5nZXNfYWRkKHJhbmdlcywgMCwgaG9zdCk7DQo+PiArICAgICAgICB9DQo+PiArICAgIH0NCj4+
ICtkb25lOg0KPj4gKyAgICAqdmFsdWVfc2V0ID0gZ19uZXcwKEFybUZpZWxkVmFsdWVTZXQsIDEp
Ow0KPj4gKyAgICAoKnZhbHVlX3NldCktPm5fcmFuZ2VzID0gcmFuZ2VzLT5sZW47DQo+PiArICAg
ICgqdmFsdWVfc2V0KS0+cmFuZ2VzID0gKEFybUZpZWxkUmFuZ2UgKilnX2FycmF5X2ZyZWUocmFu
Z2VzLCBmYWxzZSk7DQo+PiArfQ0KPj4gKw0KPj4gc3RhdGljIGJvb2wgYXJtX2ZpZWxkX3NraXBf
d3JpdGViYWNrX2Fsd2F5cyhjb25zdCBBUk02NFN5c1JlZ0ZpZWxkICpmaWVsZCkNCj4+IHsNCj4+
ICAgICAvKg0KPj4gZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0va3ZtX2FybS5oIGIvdGFyZ2V0L2Fy
bS9rdm1fYXJtLmgNCj4+IGluZGV4IDEzM2EwMjYwMzYuLjlmMTVjOTFjNGUgMTAwNjQ0DQo+PiAt
LS0gYS90YXJnZXQvYXJtL2t2bV9hcm0uaA0KPj4gKysrIGIvdGFyZ2V0L2FybS9rdm1fYXJtLmgN
Cj4+IEBAIC0xNDMsNiArMTQzLDMyIEBAIHZvaWQga3ZtX2FybV9zZXRfY3B1X2ZlYXR1cmVzX2Zy
b21faG9zdChBUk1DUFUgKmNwdSk7DQo+PiB2b2lkIGt2bV9hcm1fYWRkX3ZjcHVfcHJvcGVydGll
cyhBUk1DUFUgKmNwdSk7DQo+PiANCj4+IHR5cGVkZWYgc3RydWN0IEFSTTY0U3lzUmVnIEFSTTY0
U3lzUmVnOw0KPj4gK3R5cGVkZWYgc3RydWN0IEFSTTY0U3lzUmVnRmllbGQgQVJNNjRTeXNSZWdG
aWVsZDsNCj4+ICt0eXBlZGVmIHN0cnVjdCBBUk1JU0FSZWdpc3RlcnMgQVJNSVNBUmVnaXN0ZXJz
Ow0KPj4gKw0KPj4gK3R5cGVkZWYgc3RydWN0IEFybUZpZWxkUmFuZ2Ugew0KPj4gKyAgICB1aW50
NjRfdCBtaW47DQo+PiArICAgIHVpbnQ2NF90IG1heDsNCj4+ICt9IEFybUZpZWxkUmFuZ2U7DQo+
PiArDQo+PiArdHlwZWRlZiBzdHJ1Y3QgQXJtRmllbGRWYWx1ZVNldCB7DQo+PiArICAgIEFybUZp
ZWxkUmFuZ2UgKnJhbmdlczsNCj4+ICsgICAgc2l6ZV90IG5fcmFuZ2VzOw0KPj4gK30gQXJtRmll
bGRWYWx1ZVNldDsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBhcm1fZmllbGRfZ2V0X3N1cHBvcnRl
ZF92YWx1ZXM6DQo+PiArICogQGZpZWxkOiBUaGUgZmllbGQgdG8gZ2V0IHRoZSBzdXBwb3J0ZWQg
dmFsdWVzIGZvcg0KPj4gKyAqIEBob3N0X2lzYXI6IFRoZSBob3N0IElTQVIgcmVnaXN0ZXJzDQo+
PiArICogQHZhbHVlX3NldDogVGhlIHNldCBvZiBzdXBwb3J0ZWQgdmFsdWVzIGZvciB0aGUgQGZp
ZWxkDQo+PiArICoNCj4+ICsgKiBXaWxsIGJlIGFsbG9jYXRlZCBhbmQgZmlsbGVkIGluIHdpdGgg
dGhlIHN1cHBvcnRlZCB2YWx1ZXMgZm9yIHRoZSBAZmllbGQNCj4+ICsgKiBiYXNlZCBvbiB0aGUg
aG9zdF9pc2FyIGFuZCB3aGV0aGVyIHRoZSBmaWVsZCBpcyB3cml0YWJsZSBvciBub3QuDQo+PiAr
ICogVGhlIGNhbGxlciBtdXN0IGZyZWUgdGhlIHZhbHVlX3NldC4NCj4+ICsgKi8NCj4+ICt2b2lk
IGFybV9maWVsZF9nZXRfc3VwcG9ydGVkX3ZhbHVlcyhjb25zdCBBUk02NFN5c1JlZ0ZpZWxkICpm
aWVsZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUk1J
U0FSZWdpc3RlcnMgKmhvc3RfaXNhciwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBcm1GaWVsZFZhbHVlU2V0ICoqdmFsdWVfc2V0KTsNCj4+IA0KPj4gLyoqDQo+PiAg
KiBrdm1fYXJtX3N0ZWFsX3RpbWVfZmluYWxpemU6DQo+IFRoYW5rcw0KPiANCj4gRXJpYw0KDQoN
Cg==