Re: [PATCH v9 2/5] riscv: add support for SBI Supervisor Software Events extension

Himanshu Chauhan <[email protected]> Wed, 29 Jul 2026 13:17:49 +0530
Newsgroups org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest,org.kernel.vger.linux-perf-users
Message-ID <CA+Ht8=b59YDH+7jrea8PcFq3HtFaSk81O8oyQAQ1+ZP3aCb0QQ@mail.gmail.com>
SGkgWmhhbnBlbmcsCgpUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGJyb2tlbiB3aGVuIEkgcHVsbCB0
aGUgY29tcGxldGUgcGF0Y2ggc2V0IChiNApvciBnaXQgYW0gd2l0aCBtdXR0KS4KCgpPbiBTYXQs
IE1heSA5LCAyMDI2IGF0IDY6NDDigK9QTSBaaGFucGVuZyBaaGFuZwo8emhhbmd6aGFucGVuZy5q
YXNwZXJAYnl0ZWRhbmNlLmNvbT4gd3JvdGU6Cj4KPiBGcm9tOiBDbMOpbWVudCBMw6lnZXIgPGNs
ZWdlckByaXZvc2luYy5jb20+Cj4KPiBUaGUgU0JJIFNTRSBleHRlbnNpb24gYWxsb3dzIHRoZSBz
dXBlcnZpc29yIHNvZnR3YXJlIHRvIGJlIG5vdGlmaWVkIGJ5Cj4gdGhlIFNCSSBvZiBzcGVjaWZp
YyBldmVudHMgdGhhdCBhcmUgbm90IG1hc2thYmxlLiBUaGUgY29udGV4dCBzd2l0Y2ggaXMKPiBo
YW5kbGVkIHBhcnRpYWxseSBieSB0aGUgZmlybXdhcmUgd2hpY2ggd2lsbCBzYXZlIHJlZ2lzdGVy
cyBhNiBhbmQgYTcuCj4gV2hlbiBlbnRlcmluZyBrZXJuZWwgd2UgY2FuIHJlbHkgb24gdGhlc2Ug
MiByZWdpc3RlcnMgdG8gc2V0dXAgdGhlIHN0YWNrCj4gYW5kIHNhdmUgYWxsIHRoZSByZWdpc3Rl
cnMuCj4KPiBTaW5jZSBTU0UgZXZlbnRzIGNhbiBiZSBkZWxpdmVyZWQgYXQgYW55IHRpbWUgdG8g
dGhlIGtlcm5lbCwgaW5jbHVkaW5nCj4gZHVyaW5nIGV4Y2VwdGlvbiBoYW5kbGluZywgd2UgbmVl
ZCBhIHdheSB0byBsb2NhdGUgdGhlIGN1cnJlbnRfdGFzayBmb3IKPiBjb250ZXh0IHRyYWNraW5n
LiBPbiBSSVNDLVYsIGl0IGlzIHN0b3JlZCBpbiBzY3JhdGNoIHdoZW4gaW4gdXNlciBzcGFjZQo+
IG9yIHRwIHdoZW4gaW4ga2VybmVsIHNwYWNlIChpbiB3aGljaCBjYXNlIFNTQ1JBVENIIGlzIHpl
cm8pLiBCdXQgYXQgdGhlCj4gYmVnaW5uaW5nIG9mIGV4Y2VwdGlvbiBoYW5kbGluZywgU1NDUkFU
Q0ggaXMgdXNlZCB0byBzd2FwIHRwIGFuZAo+IGNoZWNrIHRoZSBvcmlnaW4gb2YgdGhlIGV4Y2Vw
dGlvbi4gSWYgaW50ZXJydXB0ZWQgYXQgdGhhdCBwb2ludCwgdGhlbiwKPiB0aGVyZSBpcyBubyB3
YXkgdG8gcmVsaWFibHkga25vdyB3aGVyZSBpcyBsb2NhdGVkIHRoZSBjdXJyZW50Cj4gdGFza19z
dHJ1Y3QuIEV2ZW4gY2hlY2tpbmcgdGhlIGludGVycnVwdGlvbiBsb2NhdGlvbiB3b24ndCB3b3Jr
IGFzIFNTRQo+IGV2ZW50IGNhbiBiZSBuZXN0ZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIgc28gdGhl
IG9yaWdpbmFsIGludGVycnVwdGlvbgo+IHNpdGUgbWlnaHQgYmUgbG9zdCBhdCBzb21lIHBvaW50
LiBJbiBvcmRlciB0byByZXRyaWV2ZSBpdCByZWxpYWJseSwKPiBzdG9yZSB0aGUgY3VycmVudCB0
YXNrIGluIGFuIGFkZGl0aW9uYWwgX19zc2VfZW50cnlfdGFzayBwZXJfY3B1IGFycmF5Lgo+IFRo
aXMgYXJyYXkgaXMgdGhlbiB1c2VkIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHRhc2sgYmFzZWQg
b24gdGhlCj4gaGFydCBJRCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgU1NFIGV2ZW50IGhhbmRsZXIg
aW4gYTYuCj4KPiBUaGF0IGJlaW5nIHNhaWQsIHRoZSB3YXkgdGhlIGN1cnJlbnQgdGFzayBzdHJ1
Y3QgaXMgc3RvcmVkIHNob3VsZAo+IHByb2JhYmx5IGJlIHJld29ya2VkIHRvIGZpbmQgYSBiZXR0
ZXIgcmVsaWFibGUgYWx0ZXJuYXRpdmUuCj4KPiBTaW5jZSBlYWNoIGV2ZW50IChhbmQgZWFjaCBD
UFUgZm9yIGxvY2FsIGV2ZW50cykgaGF2ZSB0aGVpciBvd24KPiBjb250ZXh0IGFuZCBjYW4gcHJl
ZW1wdCBlYWNoIG90aGVyLCBhbGxvY2F0ZSBhIHN0YWNrIChhbmQgYSBzaGFkb3cgc3RhY2sKPiBp
ZiBuZWVkZWQpIGZvciBlYWNoIG9mIHRoZW0gKGFuZCBmb3IgZWFjaCBjcHUgZm9yIGxvY2FsIGV2
ZW50cykuCj4KPiBUaGUgU1NFIGhhbmRsZXIgcnVucyBhcyBhIHN5bnRoZXRpYyBoYW5kbGVyIGVw
aXNvZGUsIGJ1dCBjb21wbGV0aW9uIG11c3QKPiByZXN1bWUgdGhlIGNvbnRleHQgdGhhdCB3YXMg
aW50ZXJydXB0ZWQgYnkgdGhlIFNTRSBldmVudC4gIFByZXNlcnZlIHN0dmVjCj4gYW5kLCB3aGVu
IHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbiBpcyBwcmVzZW50LCBoc3RhdHVzIGFjcm9zcyBkb19z
c2UoKSBzbwo+IHRoZSBoYW5kbGVyIGVwaXNvZGUgZG9lcyBub3QgbGVhayB0cmFwLXZlY3RvciBv
ciB2aXJ0dWFsaXphdGlvbiBzdGF0ZSBpbnRvCj4gdGhlIGludGVycnVwdGVkIGNvbnRleHQuCj4K
PiBXaGVuIGNvbXBsZXRpbmcgdGhlIGV2ZW50LCBpZiB3ZSB3ZXJlIGNvbWluZyBmcm9tIGtlcm5l
bCB3aXRoIGludGVycnVwdHMKPiBkaXNhYmxlZCwgc2ltcGx5IHJldHVybiB0aGVyZS4gSWYgY29t
aW5nIGZyb20gdXNlcnNwYWNlIG9yIGtlcm5lbCB3aXRoCj4gaW50ZXJydXB0cyBlbmFibGVkLCBz
aW11bGF0ZSBhbiBpbnRlcnJ1cHQgZXhjZXB0aW9uIGJ5IHNldHRpbmcgSUVfU0lFIGluCj4gQ1NS
X0lQIHRvIGFsbG93IGRlbGl2ZXJ5IG9mIHNpZ25hbHMgdG8gdXNlciB0YXNrLiBGb3IgaW5zdGFu
Y2UgdGhpcyBjYW4KPiBoYXBwZW4gd2hlbiBhIFJBUyBldmVudCBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgYSB1c2VyIGFwcGxpY2F0aW9uIGFuZCBhCj4gU0lHQlVTIGhhcyBiZWVuIHNlbnQgdG8gYSB0
YXNrLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMu
Y29tPgo+IENvLWRldmVsb3BlZC1ieTogWmhhbnBlbmcgWmhhbmcgPHpoYW5nemhhbnBlbmcuamFz
cGVyQGJ5dGVkYW5jZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogWmhhbnBlbmcgWmhhbmcgPHpoYW5n
emhhbnBlbmcuamFzcGVyQGJ5dGVkYW5jZS5jb20+Cj4gLS0tCj4gIGFyY2gvcmlzY3YvaW5jbHVk
ZS9hc20vYXNtLmggICAgICAgICB8ICAxNCArLQo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Nj
cy5oICAgICAgICAgfCAgIDcgKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oICAgICAg
ICAgfCAgNDcgKysrKysrKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oICAg
fCAgMTQgKysKPiAgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIHwgICAxICsK
PiAgYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgYXJjaC9y
aXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYyAgICAgIHwgIDE0ICsrCj4gIGFyY2gvcmlzY3Yva2Vy
bmVsL3NiaV9zc2UuYyAgICAgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKwo+ICBh
cmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlX2VudHJ5LlMgICAgfCAxODcgKysrKysrKysrKysrKysr
KysrKysrKysrKysrCj4gIDkgZmlsZXMgY2hhbmdlZCwgNDQ0IGluc2VydGlvbnMoKyksIDMgZGVs
ZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Nz
ZS5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMKPiAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVsL3NiaV9zc2VfZW50cnkuUwo+Cj4g
ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmggYi9hcmNoL3Jpc2N2L2lu
Y2x1ZGUvYXNtL2FzbS5oCj4gaW5kZXggZTllOGJhODNlNjMyLi41MGJhY2UwMDA1M2MgMTAwNjQ0
Cj4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaAo+ICsrKyBiL2FyY2gvcmlzY3Yv
aW5jbHVkZS9hc20vYXNtLmgKPiBAQCAtOTAsMTYgKzkwLDI0IEBACj4gIC5lbmRtCj4KPiAgI2lm
ZGVmIENPTkZJR19TTVAKPiAtLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCj4gLSAgICAg
ICBsdyAgICBcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApCj4gLSAgICAgICBzbGxpICBcdG1wLCBc
dG1wLCBSSVNDVl9MR1BUUgo+ICsubWFjcm8gYXNtX3Blcl9jcHVfd2l0aF9jcHUgZHN0IHN5bSB0
bXAgY3B1Cj4gKyAgICAgICBzbGxpICBcdG1wLCBcY3B1LCBSSVNDVl9MR1BUUgo+ICAgICAgICAg
bGEgICAgXGRzdCwgX19wZXJfY3B1X29mZnNldAo+ICAgICAgICAgYWRkICAgXGRzdCwgXGRzdCwg
XHRtcAo+ICAgICAgICAgUkVHX0wgXHRtcCwgMChcZHN0KQo+ICAgICAgICAgbGEgICAgXGRzdCwg
XHN5bQo+ICAgICAgICAgYWRkICAgXGRzdCwgXGRzdCwgXHRtcAo+ICAuZW5kbQo+ICsKPiArLm1h
Y3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCj4gKyAgICAgICBsdyBcdG1wLCBUQVNLX1RJX0NQ
VV9OVU0odHApCj4gKyAgICAgICBhc21fcGVyX2NwdV93aXRoX2NwdSBcZHN0IFxzeW0gXHRtcCBc
dG1wCj4gKy5lbmRtCj4gICNlbHNlIC8qIENPTkZJR19TTVAgKi8KPiArLm1hY3JvIGFzbV9wZXJf
Y3B1X3dpdGhfY3B1IGRzdCBzeW0gdG1wIGNwdQo+ICsgICAgICAgbGEgICAgXGRzdCwgXHN5bQo+
ICsuZW5kbQo+ICsKPiAgLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCj4gICAgICAgICBs
YSAgICBcZHN0LCBcc3ltCj4gIC5lbmRtCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVk
ZS9hc20vc2NzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Njcy5oCj4gaW5kZXggMDIzYTQx
MmZlMzhkLi4wZDcwYTM1YmMwMWEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz
bS9zY3MuaAo+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2NzLmgKPiBAQCAtMTcsNiAr
MTcsMTEgQEAKPiAgICAgICAgIGxvYWRfcGVyX2NwdSBncCwgaXJxX3NoYWRvd19jYWxsX3N0YWNr
X3B0ciwgXHRtcAo+ICAuZW5kbQo+Cj4gKy8qIExvYWQgdGhlIHBlci1DUFUgSVJRIHNoYWRvdyBj
YWxsIHN0YWNrIHRvIGdwLiAqLwo+ICsubWFjcm8gc2NzX2xvYWRfc3NlX3N0YWNrIHJlZ19ldnQK
PiArICAgICAgIFJFR19MIGdwLCBTU0VfUkVHX0VWVF9TSEFET1dfU1RBQ0soXHJlZ19ldnQpCj4g
Ky5lbmRtCj4gKwo+ICAvKiBMb2FkIHRhc2tfc2NzX3NwKGN1cnJlbnQpIHRvIGdwLiAqLwo+ICAu
bWFjcm8gc2NzX2xvYWRfY3VycmVudAo+ICAgICAgICAgUkVHX0wgICBncCwgVEFTS19USV9TQ1Nf
U1AodHApCj4gQEAgLTQwLDYgKzQ1LDggQEAKPiAgLmVuZG0KPiAgLm1hY3JvIHNjc19sb2FkX2ly
cV9zdGFjayB0bXAKPiAgLmVuZG0KPiArLm1hY3JvIHNjc19sb2FkX3NzZV9zdGFjayByZWdfZXZ0
Cj4gKy5lbmRtCj4gIC5tYWNybyBzY3NfbG9hZF9jdXJyZW50Cj4gIC5lbmRtCj4gIC5tYWNybyBz
Y3NfbG9hZF9jdXJyZW50X2lmX3Rhc2tfY2hhbmdlZCBwcmV2Cj4gZGlmZiAtLWdpdCBhL2FyY2gv
cmlzY3YvaW5jbHVkZS9hc20vc3NlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oCj4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQzY2U4YzJiNTIyMQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oCj4gQEAg
LTAsMCArMSw0NyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5
ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNCBSaXZvcyBJbmMuCj4gKyAqLwo+ICsj
aWZuZGVmIF9fQVNNX1NTRV9ICj4gKyNkZWZpbmUgX19BU01fU1NFX0gKPiArCj4gKyNpbmNsdWRl
IDxhc20vc2JpLmg+Cj4gKwo+ICsjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9TU0UKPiArCj4gK3N0
cnVjdCBzc2VfZXZlbnRfaW50ZXJydXB0ZWRfc3RhdGUgewo+ICsgICAgICAgdW5zaWduZWQgbG9u
ZyBhNjsKPiArICAgICAgIHVuc2lnbmVkIGxvbmcgYTc7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qgc3Nl
X2V2ZW50X2FyY2hfZGF0YSB7Cj4gKyAgICAgICB2b2lkICpzdGFjazsKPiArICAgICAgIHZvaWQg
KnNoYWRvd19zdGFjazsKPiArICAgICAgIHVuc2lnbmVkIGxvbmcgdG1wOwo+ICsgICAgICAgc3Ry
dWN0IHNzZV9ldmVudF9pbnRlcnJ1cHRlZF9zdGF0ZSBpbnRlcnJ1cHRlZDsKPiArICAgICAgIHVu
c2lnbmVkIGxvbmcgaW50ZXJydXB0ZWRfcGh5czsKPiArICAgICAgIHUzMiBldnRfaWQ7Cj4gKyAg
ICAgICB1bnNpZ25lZCBpbnQgaGFydF9pZDsKPiArICAgICAgIHVuc2lnbmVkIGludCBjcHVfaWQ7
Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgc3NlX2V2ZW50X2lzX2dsb2JhbCh1MzIg
ZXZ0KQo+ICt7Cj4gKyAgICAgICByZXR1cm4gISEoZXZ0ICYgU0JJX1NTRV9FVkVOVF9HTE9CQUwp
Owo+ICt9Cj4gKwo+ICt2b2lkIGFyY2hfc3NlX2V2ZW50X3VwZGF0ZV9jcHUoc3RydWN0IHNzZV9l
dmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBpbnQgY3B1KTsKPiAraW50IGFyY2hfc3NlX2luaXRf
ZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCB1MzIgZXZ0X2lkLAo+
ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBjcHUpOwo+ICt2b2lkIGFyY2hfc3NlX2ZyZWVf
ZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0KTsKPiAraW50IGFyY2hf
c3NlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCk7
Cj4gKwo+ICt2b2lkIHNzZV9oYW5kbGVfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEg
KmFyY2hfZXZ0LAo+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7
Cj4gK2FzbWxpbmthZ2Ugdm9pZCBoYW5kbGVfc3NlKHZvaWQpOwo+ICthc21saW5rYWdlIHZvaWQg
ZG9fc3NlKHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwKPiArICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWcpOwo+ICsKPiArI2VuZGlmCj4gKwo+ICsj
ZW5kaWYKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaCBi
L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKPiBpbmRleCAwZTcxZWI4MmY5MjAu
LmRlZDhkYzQ0MGIxMiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRj
aF90by5oCj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAo+IEBAIC04
OCw2ICs4OCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZW52Y2ZnKHN0cnVj
dCB0YXNrX3N0cnVjdCAqbmV4dCkKPiAgICAgICAgICAgICAgICAgICAgICAgICA6OiAiciIgKG5l
eHQtPnRocmVhZC5lbnZjZmcpIDogIm1lbW9yeSIpOwo+ICB9Cj4KPiArI2lmZGVmIENPTkZJR19S
SVNDVl9TQklfU1NFCj4gK0RFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgX19z
Ymlfc3NlX2VudHJ5X3Rhc2spOwo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3Ni
aV9zc2VfZW50cnlfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCj4gK3sKPiArICAgICAg
IF9fdGhpc19jcHVfd3JpdGUoX19zYmlfc3NlX2VudHJ5X3Rhc2ssIG5leHQpOwo+ICt9Cj4gKyNl
bHNlCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF9zYmlfc3NlX2VudHJ5X3Rhc2soc3Ry
dWN0IHRhc2tfc3RydWN0ICpuZXh0KQo+ICt7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICBleHRlcm4g
c3RydWN0IHRhc2tfc3RydWN0ICpfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwKPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Kik7Cj4KPiBAQCAtMTIyLDYgKzEzNSw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGlmIChzd2l0Y2hfdG9f
c2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKSAgICAgIFwKPiAgICAgICAgICAgICAgICAgbG9j
YWxfZmx1c2hfaWNhY2hlX2FsbCgpOyAgICAgICAgICAgICAgIFwKPiAgICAgICAgIF9fc3dpdGNo
X3RvX2VudmNmZyhfX25leHQpOyAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIF9fc3dp
dGNoX3NiaV9zc2VfZW50cnlfdGFzayhfX25leHQpOyAgICAgICAgICAgIFwKPiAgICAgICAgICgo
bGFzdCkgPSBfX3N3aXRjaF90byhfX3ByZXYsIF9fbmV4dCkpOyAgICAgICAgIFwKPiAgfSB3aGls
ZSAoMCkKPgo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZv
LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKPiBpbmRleCA1NTAxOWZk
ZmE5ZWMuLmQxNGI0NTYxMGM3MyAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNt
L3RocmVhZF9pbmZvLmgKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZv
LmgKPiBAQCAtMzYsNiArMzYsNyBAQAo+ICAjZGVmaW5lIE9WRVJGTE9XX1NUQUNLX1NJWkUgICAg
IFNaXzRLCj4KPiAgI2RlZmluZSBJUlFfU1RBQ0tfU0laRSAgICAgICAgIFRIUkVBRF9TSVpFCj4g
KyNkZWZpbmUgU1NFX1NUQUNLX1NJWkUgICAgICAgICBUSFJFQURfU0laRQo+Cj4gICNpZm5kZWYg
X19BU1NFTUJMRVJfXwo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxl
IGIvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUKPiBpbmRleCBjYWJiOTljYWRmYjYuLjhkNGFl
ZDYzNjhhNiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZQo+ICsrKyBi
L2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlCj4gQEAgLTEwMSw2ICsxMDEsNyBAQCBvYmotJChD
T05GSUdfRFlOQU1JQ19GVFJBQ0UpICAgICAgICArPSBtY291bnQtZHluLm8KPiAgb2JqLSQoQ09O
RklHX1BFUkZfRVZFTlRTKSAgICAgICs9IHBlcmZfY2FsbGNoYWluLm8KPiAgb2JqLSQoQ09ORklH
X0hBVkVfUEVSRl9SRUdTKSAgICs9IHBlcmZfcmVncy5vCj4gIG9iai0kKENPTkZJR19SSVNDVl9T
QkkpICAgICAgICAgICAgICAgICs9IHNiaS5vIHNiaV9lY2FsbC5vCj4gK29iai0kKENPTkZJR19S
SVNDVl9TQklfU1NFKSAgICArPSBzYmlfc3NlLm8gc2JpX3NzZV9lbnRyeS5vCj4gIGlmZXEgKCQo
Q09ORklHX1JJU0NWX1NCSSksIHkpCj4gIG9iai0kKENPTkZJR19TTVApICAgICAgICAgICAgICAr
PSBzYmktaXBpLm8KPiAgb2JqLSQoQ09ORklHX1NNUCkgKz0gY3B1X29wc19zYmkubwo+IGRpZmYg
LS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jIGIvYXJjaC9yaXNjdi9rZXJu
ZWwvYXNtLW9mZnNldHMuYwo+IGluZGV4IGFmODI3NDQ4YTYwOS4uN2NjMDNmNWEwNjczIDEwMDY0
NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMKPiArKysgYi9hcmNoL3Jp
c2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jCj4gQEAgLTE1LDYgKzE1LDggQEAKPiAgI2luY2x1ZGUg
PGFzbS9wdHJhY2UuaD4KPiAgI2luY2x1ZGUgPGFzbS9jcHVfb3BzX3NiaS5oPgo+ICAjaW5jbHVk
ZSA8YXNtL3N0YWNrdHJhY2UuaD4KPiArI2luY2x1ZGUgPGFzbS9zYmkuaD4KPiArI2luY2x1ZGUg
PGFzbS9zc2UuaD4KPiAgI2luY2x1ZGUgPGFzbS9zdXNwZW5kLmg+Cj4KPiAgdm9pZCBhc21fb2Zm
c2V0cyh2b2lkKTsKPiBAQCAtNTMzLDYgKzUzNSwxOCBAQCB2b2lkIGFzbV9vZmZzZXRzKHZvaWQp
Cj4gICAgICAgICBERUZJTkUoRlJFR1NfQTYsICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IF9f
YXJjaF9mdHJhY2VfcmVncywgYTYpKTsKPiAgICAgICAgIERFRklORShGUkVHU19BNywgICAgICAg
ICAgICBvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCBhNykpOwo+ICAjZW5kaWYK
PiArCj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1NTRQo+ICsgICAgICAgT0ZGU0VUKFNTRV9S
RUdfRVZUX1NUQUNLLCBzc2VfZXZlbnRfYXJjaF9kYXRhLCBzdGFjayk7Cj4gKyAgICAgICBPRkZT
RVQoU1NFX1JFR19FVlRfU0hBRE9XX1NUQUNLLCBzc2VfZXZlbnRfYXJjaF9kYXRhLCBzaGFkb3df
c3RhY2spOwo+ICsgICAgICAgT0ZGU0VUKFNTRV9SRUdfRVZUX1RNUCwgc3NlX2V2ZW50X2FyY2hf
ZGF0YSwgdG1wKTsKPiArICAgICAgIE9GRlNFVChTU0VfUkVHX0hBUlRfSUQsIHNzZV9ldmVudF9h
cmNoX2RhdGEsIGhhcnRfaWQpOwo+ICsgICAgICAgT0ZGU0VUKFNTRV9SRUdfQ1BVX0lELCBzc2Vf
ZXZlbnRfYXJjaF9kYXRhLCBjcHVfaWQpOwo+ICsKPiArICAgICAgIERFRklORShTQklfRVhUX1NT
RSwgU0JJX0VYVF9TU0UpOwo+ICsgICAgICAgREVGSU5FKFNCSV9TU0VfRVZFTlRfQ09NUExFVEUs
IFNCSV9TU0VfRVZFTlRfQ09NUExFVEUpOwo+ICsgICAgICAgREVGSU5FKEFTTV9OUl9DUFVTLCBD
T05GSUdfTlJfQ1BVUyk7Cj4gKyNlbmRpZgo+ICAjaWZkZWYgQ09ORklHX1JJU0NWX1NCSQo+ICAg
ICAgICAgREVGSU5FKFNCSV9FWFRfRldGVCwgU0JJX0VYVF9GV0ZUKTsKPiAgICAgICAgIERFRklO
RShTQklfRVhUX0ZXRlRfU0VULCBTQklfRVhUX0ZXRlRfU0VUKTsKPiBkaWZmIC0tZ2l0IGEvYXJj
aC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jCj4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYzMGFlOWZmNzdjOQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMKPiBAQCAt
MCwwICsxLDE2MiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1s
YXRlcgo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgUml2b3MgSW5jLgo+ICsgKi8KPiAr
I2luY2x1ZGUgPGxpbnV4L25taS5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2NzLmg+Cj4gKyNpbmNs
dWRlIDxsaW51eC9iaXRmaWVsZC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGVyY3B1LWRlZnMuaD4K
PiArCj4gKyNpbmNsdWRlIDxhc20vYXNtLXByb3RvdHlwZXMuaD4KPiArI2luY2x1ZGUgPGFzbS9z
d2l0Y2hfdG8uaD4KPiArI2luY2x1ZGUgPGFzbS9pcnFfc3RhY2suaD4KPiArI2luY2x1ZGUgPGFz
bS9zYmkuaD4KPiArI2luY2x1ZGUgPGFzbS9zc2UuaD4KPiArCj4gK0RFRklORV9QRVJfQ1BVKHN0
cnVjdCB0YXNrX3N0cnVjdCAqLCBfX3NiaV9zc2VfZW50cnlfdGFzayk7Cj4gKwo+ICt2b2lkIF9f
d2VhayBzc2VfaGFuZGxlX2V2ZW50KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2
dCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gK3sKPiArfQo+ICsKPiArdm9pZCBkb19zc2Uoc3Ry
dWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykK
PiArewo+ICsgICAgICAgbm1pX2VudGVyKCk7Cj4gKwo+ICsgICAgICAgLyogUmV0cmlldmUgbWlz
c2luZyBHUFJzIGZyb20gU0JJICovCj4gKyAgICAgICBzYmlfZWNhbGwoU0JJX0VYVF9TU0UsIFNC
SV9TU0VfRVZFTlRfQVRUUl9SRUFELCBhcmNoX2V2dC0+ZXZ0X2lkLAo+ICsgICAgICAgICAgICAg
ICAgIFNCSV9TU0VfQVRUUl9JTlRFUlJVUFRFRF9BNiwKPiArICAgICAgICAgICAgICAgICAoU0JJ
X1NTRV9BVFRSX0lOVEVSUlVQVEVEX0E3IC0gU0JJX1NTRV9BVFRSX0lOVEVSUlVQVEVEX0E2KSAr
IDEsCj4gKyAgICAgICAgICAgICAgICAgYXJjaF9ldnQtPmludGVycnVwdGVkX3BoeXMsIDAsIDAp
Owo+ICsKPiArICAgICAgIG1lbWNweSgmcmVncy0+YTYsICZhcmNoX2V2dC0+aW50ZXJydXB0ZWQs
IHNpemVvZihhcmNoX2V2dC0+aW50ZXJydXB0ZWQpKTsKPiArCj4gKyAgICAgICBzc2VfaGFuZGxl
X2V2ZW50KGFyY2hfZXZ0LCByZWdzKTsKPiArCj4gKyAgICAgICBubWlfZXhpdCgpOwo+ICt9Cj4g
Kwo+ICtzdGF0aWMgdm9pZCAqYWxsb2NfdG9fc3RhY2tfcG9pbnRlcih2b2lkICphbGxvYykKPiAr
ewo+ICsgICAgICAgcmV0dXJuIGFsbG9jID8gYWxsb2MgKyBTU0VfU1RBQ0tfU0laRSA6IE5VTEw7
Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkICpzdGFja19wb2ludGVyX3RvX2FsbG9jKHZvaWQgKnN0
YWNrKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gc3RhY2sgLSBTU0VfU1RBQ0tfU0laRTsKPiArfQo+
ICsKPiArI2lmZGVmIENPTkZJR19WTUFQX1NUQUNLCj4gK3N0YXRpYyB2b2lkICpzc2Vfc3RhY2tf
YWxsb2ModW5zaWduZWQgaW50IGNwdSkKPiArewo+ICsgICAgICAgdm9pZCAqc3RhY2sgPSBhcmNo
X2FsbG9jX3ZtYXBfc3RhY2soU1NFX1NUQUNLX1NJWkUsIGNwdV90b19ub2RlKGNwdSkpOwo+ICsK
PiArICAgICAgIHJldHVybiBhbGxvY190b19zdGFja19wb2ludGVyKHN0YWNrKTsKPiArfQo+ICsK
PiArc3RhdGljIHZvaWQgc3NlX3N0YWNrX2ZyZWUodm9pZCAqc3RhY2spCj4gK3sKPiArICAgICAg
IHZmcmVlKHN0YWNrX3BvaW50ZXJfdG9fYWxsb2Moc3RhY2spKTsKPiArfQo+ICsKPiArc3RhdGlj
IHZvaWQgYXJjaF9zc2Vfc3RhY2tfY3B1X3N5bmMoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEg
KmFyY2hfZXZ0KQo+ICt7Cj4gKyAgICAgICB2b2lkICpwX3N0YWNrID0gYXJjaF9ldnQtPnN0YWNr
Owo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBzdGFjayA9ICh1bnNpZ25lZCBsb25nKXN0YWNrX3Bv
aW50ZXJfdG9fYWxsb2MocF9zdGFjayk7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHN0YWNrX2Vu
ZCA9IHN0YWNrICsgU1NFX1NUQUNLX1NJWkU7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAq
IEZsdXNoIHRoZSB0bGIgdG8gYXZvaWQgdGFraW5nIGFueSBleGNlcHRpb24gd2hlbiBhY2Nlc3Np
bmcgdGhlCj4gKyAgICAgICAgKiB2bWFwcGVkIHN0YWNrIGluc2lkZSB0aGUgU1NFIGhhbmRsZXIK
PiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKHNzZV9ldmVudF9pc19nbG9iYWwoYXJjaF9ldnQt
PmV2dF9pZCkpCj4gKyAgICAgICAgICAgICAgIGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2Uoc3RhY2ss
IHN0YWNrX2VuZCk7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIGxvY2FsX2ZsdXNo
X3RsYl9rZXJuZWxfcmFuZ2Uoc3RhY2ssIHN0YWNrX2VuZCk7Cj4gK30KPiArI2Vsc2UgLyogQ09O
RklHX1ZNQVBfU1RBQ0sgKi8KPiArc3RhdGljIHZvaWQgKnNzZV9zdGFja19hbGxvYyh1bnNpZ25l
ZCBpbnQgY3B1KQo+ICt7Cj4gKyAgICAgICB2b2lkICpzdGFjayA9IGttYWxsb2MoU1NFX1NUQUNL
X1NJWkUsIEdGUF9LRVJORUwpOwo+ICsKPiArICAgICAgIHJldHVybiBhbGxvY190b19zdGFja19w
b2ludGVyKHN0YWNrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc3NlX3N0YWNrX2ZyZWUodm9p
ZCAqc3RhY2spCj4gK3sKPiArICAgICAgIGtmcmVlKHN0YWNrX3BvaW50ZXJfdG9fYWxsb2Moc3Rh
Y2spKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXJjaF9zc2Vfc3RhY2tfY3B1X3N5bmMoc3Ry
dWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0KSB7fQo+ICsjZW5kaWYgLyogQ09ORklH
X1ZNQVBfU1RBQ0sgKi8KPiArCj4gK3N0YXRpYyBpbnQgc3NlX2luaXRfc2NzKGludCBjcHUsIHN0
cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCkKPiArewo+ICsgICAgICAgdm9pZCAq
c3RhY2s7Cj4gKwo+ICsgICAgICAgaWYgKCFzY3NfaXNfZW5hYmxlZCgpKQo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICBzdGFjayA9IHNjc19hbGxvYyhjcHVfdG9fbm9k
ZShjcHUpKTsKPiArICAgICAgIGlmICghc3RhY2spCj4gKyAgICAgICAgICAgICAgIHJldHVybiAt
RU5PTUVNOwo+ICsKPiArICAgICAgIGFyY2hfZXZ0LT5zaGFkb3dfc3RhY2sgPSBzdGFjazsKPiAr
Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBhcmNoX3NzZV9ldmVudF91cGRh
dGVfY3B1KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwgaW50IGNwdSkKPiAr
ewo+ICsgICAgICAgYXJjaF9ldnQtPmNwdV9pZCA9IGNwdTsKPiArICAgICAgIGFyY2hfZXZ0LT5o
YXJ0X2lkID0gY3B1aWRfdG9faGFydGlkX21hcChjcHUpOwo+ICt9Cj4gKwo+ICtpbnQgYXJjaF9z
c2VfaW5pdF9ldmVudChzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQsIHUzMiBl
dnRfaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGNwdSkKPiArewo+ICsgICAgICAg
dm9pZCAqc3RhY2s7Cj4gKwo+ICsgICAgICAgYXJjaF9ldnQtPmV2dF9pZCA9IGV2dF9pZDsKPiAr
ICAgICAgIHN0YWNrID0gc3NlX3N0YWNrX2FsbG9jKGNwdSk7Cj4gKyAgICAgICBpZiAoIXN0YWNr
KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBhcmNoX2V2
dC0+c3RhY2sgPSBzdGFjazsKPiArCj4gKyAgICAgICBpZiAoc3NlX2luaXRfc2NzKGNwdSwgYXJj
aF9ldnQpKSB7Cj4gKyAgICAgICAgICAgICAgIHNzZV9zdGFja19mcmVlKGFyY2hfZXZ0LT5zdGFj
ayk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgICAgfQo+ICsKPiAr
ICAgICAgIGlmIChzc2VfZXZlbnRfaXNfZ2xvYmFsKGV2dF9pZCkpIHsKPiArICAgICAgICAgICAg
ICAgYXJjaF9ldnQtPmludGVycnVwdGVkX3BoeXMgPQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2aXJ0X3RvX3BoeXMoJmFyY2hfZXZ0LT5pbnRlcnJ1cHRlZCk7Cj4g
KyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICBhcmNoX2V2dC0+aW50ZXJydXB0ZWRf
cGh5cyA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJfY3B1X3B0cl90b19w
aHlzKCZhcmNoX2V2dC0+aW50ZXJydXB0ZWQpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGFy
Y2hfc3NlX2V2ZW50X3VwZGF0ZV9jcHUoYXJjaF9ldnQsIGNwdSk7Cj4gKwo+ICsgICAgICAgcmV0
dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgYXJjaF9zc2VfZnJlZV9ldmVudChzdHJ1Y3Qgc3NlX2V2
ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQpCj4gK3sKPiArICAgICAgIHNjc19mcmVlKGFyY2hfZXZ0
LT5zaGFkb3dfc3RhY2spOwo+ICsgICAgICAgc3NlX3N0YWNrX2ZyZWUoYXJjaF9ldnQtPnN0YWNr
KTsKPiArfQo+ICsKPiAraW50IGFyY2hfc3NlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBzc2VfZXZl
bnRfYXJjaF9kYXRhICphcmNoX2V2dCkKPiArewo+ICsgICAgICAgc3RydWN0IHNiaXJldCBzcmV0
Owo+ICsKPiArICAgICAgIGFyY2hfc3NlX3N0YWNrX2NwdV9zeW5jKGFyY2hfZXZ0KTsKPiArCj4g
KyAgICAgICBzcmV0ID0gc2JpX2VjYWxsKFNCSV9FWFRfU1NFLCBTQklfU1NFX0VWRU5UX1JFR0lT
VEVSLCBhcmNoX2V2dC0+ZXZ0X2lkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgbG9uZyloYW5kbGVfc3NlLCAodW5zaWduZWQgbG9uZylhcmNoX2V2dCwgMCwKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIHNiaV9lcnJfbWFw
X2xpbnV4X2Vycm5vKHNyZXQuZXJyb3IpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv
a2VybmVsL3NiaV9zc2VfZW50cnkuUyBiL2FyY2gvcmlzY3Yva2VybmVsL3NiaV9zc2VfZW50cnku
Uwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MDg2NzUxZTY2
NDQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZV9lbnRy
eS5TCj4gQEAgLTAsMCArMSwxODcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ
TC0yLjAtb3ItbGF0ZXIgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDI1IFJpdm9zIElu
Yy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGlu
dXgvbGlua2FnZS5oPgo+ICsKPiArI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS1tYWNyb3MuaD4K
PiArI2luY2x1ZGUgPGFzbS9hc20uaD4KPiArI2luY2x1ZGUgPGFzbS9jc3IuaD4KPiArI2luY2x1
ZGUgPGFzbS9od2NhcC5oPgo+ICsjaW5jbHVkZSA8YXNtL3Njcy5oPgo+ICsKPiArLyogV2hlbiBl
bnRlcmluZyBoYW5kbGVfc3NlLCB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycyBhcmUgc2V0Ogo+ICsg
KiBhNjogY29udGFpbnMgdGhlIGhhcnRpZAo+ICsgKiBhNzogY29udGFpbnMgYSBzc2VfZXZlbnRf
YXJjaF9kYXRhIHN0cnVjdCBwb2ludGVyCj4gKyAqLwo+ICtTWU1fQ09ERV9TVEFSVChoYW5kbGVf
c3NlKQo+ICsgICAgICAgLyogU2F2ZSBzdGFjayB0ZW1wb3JhcmlseSAqLwo+ICsgICAgICAgUkVH
X1Mgc3AsIFNTRV9SRUdfRVZUX1RNUChhNykKPiArICAgICAgIC8qIFNldCBlbnRyeSBzdGFjayAq
Lwo+ICsgICAgICAgUkVHX0wgc3AsIFNTRV9SRUdfRVZUX1NUQUNLKGE3KQo+ICsKPiArICAgICAg
IGFkZGkgc3AsIHNwLCAtKFBUX1NJWkVfT05fU1RBQ0spCj4gKyAgICAgICBSRUdfUyByYSwgUFRf
UkEoc3ApCj4gKyAgICAgICBSRUdfUyBzMCwgUFRfUzAoc3ApCj4gKyAgICAgICBSRUdfUyBzMSwg
UFRfUzEoc3ApCj4gKyAgICAgICBSRUdfUyBzMiwgUFRfUzIoc3ApCj4gKyAgICAgICBSRUdfUyBz
MywgUFRfUzMoc3ApCj4gKyAgICAgICBSRUdfUyBzNCwgUFRfUzQoc3ApCj4gKyAgICAgICBSRUdf
UyBzNSwgUFRfUzUoc3ApCj4gKyAgICAgICBSRUdfUyBzNiwgUFRfUzYoc3ApCj4gKyAgICAgICBS
RUdfUyBzNywgUFRfUzcoc3ApCj4gKyAgICAgICBSRUdfUyBzOCwgUFRfUzgoc3ApCj4gKyAgICAg
ICBSRUdfUyBzOSwgUFRfUzkoc3ApCj4gKyAgICAgICBSRUdfUyBzMTAsIFBUX1MxMChzcCkKPiAr
ICAgICAgIFJFR19TIHMxMSwgUFRfUzExKHNwKQo+ICsgICAgICAgUkVHX1MgdHAsIFBUX1RQKHNw
KQo+ICsgICAgICAgUkVHX1MgdDAsIFBUX1QwKHNwKQo+ICsgICAgICAgUkVHX1MgdDEsIFBUX1Qx
KHNwKQo+ICsgICAgICAgUkVHX1MgdDIsIFBUX1QyKHNwKQo+ICsgICAgICAgUkVHX1MgdDMsIFBU
X1QzKHNwKQo+ICsgICAgICAgUkVHX1MgdDQsIFBUX1Q0KHNwKQo+ICsgICAgICAgUkVHX1MgdDUs
IFBUX1Q1KHNwKQo+ICsgICAgICAgUkVHX1MgdDYsIFBUX1Q2KHNwKQo+ICsgICAgICAgUkVHX1Mg
Z3AsIFBUX0dQKHNwKQo+ICsgICAgICAgUkVHX1MgYTAsIFBUX0EwKHNwKQo+ICsgICAgICAgUkVH
X1MgYTEsIFBUX0ExKHNwKQo+ICsgICAgICAgUkVHX1MgYTIsIFBUX0EyKHNwKQo+ICsgICAgICAg
UkVHX1MgYTMsIFBUX0EzKHNwKQo+ICsgICAgICAgUkVHX1MgYTQsIFBUX0E0KHNwKQo+ICsgICAg
ICAgUkVHX1MgYTUsIFBUX0E1KHNwKQo+ICsKPiArICAgICAgIC8qIFJldHJpZXZlIGVudHJ5IHNw
ICovCj4gKyAgICAgICBSRUdfTCBhNCwgU1NFX1JFR19FVlRfVE1QKGE3KQo+ICsgICAgICAgLyog
U2F2ZSBDU1JzICovCj4gKyAgICAgICBjc3JyIGEwLCBDU1JfRVBDCj4gKyAgICAgICBjc3JyIGEx
LCBDU1JfU1NUQVRVUwo+ICsgICAgICAgY3NyciBhMiwgQ1NSX1NUVkFMCj4gKyAgICAgICBjc3Jy
IGEzLCBDU1JfU0NBVVNFCj4gKwo+ICsgICAgICAgUkVHX1MgYTAsIFBUX0VQQyhzcCkKPiArICAg
ICAgIFJFR19TIGExLCBQVF9TVEFUVVMoc3ApCj4gKyAgICAgICBSRUdfUyBhMiwgUFRfQkFEQURE
UihzcCkKPiArICAgICAgIFJFR19TIGEzLCBQVF9DQVVTRShzcCkKPiArICAgICAgIFJFR19TIGE0
LCBQVF9TUChzcCkKPiArCj4gKyAgICAgICAvKiBEaXNhYmxlIHVzZXIgbWVtb3J5IGFjY2VzcyBh
bmQgZmxvYXRpbmcvdmVjdG9yIGNvbXB1dGluZyAqLwo+ICsgICAgICAgbGkgdDAsIFNSX1NVTSB8
IFNSX0ZTX1ZTCj4gKyAgICAgICBjc3JjIENTUl9TVEFUVVMsIHQwCj4gKwo+ICsgICAgICAgbG9h
ZF9nbG9iYWxfcG9pbnRlcgo+ICsgICAgICAgc2NzX2xvYWRfc3NlX3N0YWNrIGE3Cj4gKwo+ICsj
aWZkZWYgQ09ORklHX1NNUAo+ICsgICAgICAgbHcgdDQsIFNTRV9SRUdfSEFSVF9JRChhNykKPiAr
ICAgICAgIGx3IHQzLCBTU0VfUkVHX0NQVV9JRChhNykKPiArCj4gKyAgICAgICBibmUgdDQsIGE2
LCAuTGZpbmRfaGFydF9pZF9zbG93cGF0aAo+ICsKPiArLkxjcHVfaWRfZm91bmQ6Cj4gKyNlbHNl
Cj4gKyAgICAgICBtdiB0MywgemVybwo+ICsjZW5kaWYKPiArCj4gKyAgICAgICBhc21fcGVyX2Nw
dV93aXRoX2NwdSB0MiBfX3NiaV9zc2VfZW50cnlfdGFzayB0MSB0Mwo+ICsgICAgICAgUkVHX0wg
dHAsIDAodDIpCj4gKwo+ICsgICAgICAgbXYgYTEsIHNwIC8qIHB0X3JlZ3Mgb24gc3RhY2sgKi8K
PiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogUnVuIHRoZSBTU0UgaGFuZGxlciB3aXRoIHRo
ZSBub3JtYWwgZXhjZXB0aW9uIHZlY3RvciwgYnV0IHJlc3RvcmUgdGhlCj4gKyAgICAgICAgKiBp
bnRlcnJ1cHRlZCBzdHZlYyBiZWZvcmUgY29tcGxldGluZyB0aGUgZXZlbnQuIFNTRSBjYW4gYXJy
aXZlIHdoaWxlCj4gKyAgICAgICAgKiB0aGUga2VybmVsIGlzIHVzaW5nIGEgdGVtcG9yYXJ5IHRy
YXAgdmVjdG9yIGluIGEgc2Vuc2l0aXZlIGVudHJ5IHBhdGguCj4gKyAgICAgICAgKi8KPiArICAg
ICAgIGNzcnIgczMsIENTUl9TVFZFQwo+ICsgICAgICAgbGEgdDAsIGhhbmRsZV9leGNlcHRpb24K
PiArICAgICAgIGNzcncgQ1NSX1NUVkVDLCB0MAo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAg
KiBQcmVzZXJ2ZSB0aGUgZnVsbCBIUy1tb2RlIHZpcnR1YWxpemF0aW9uIHN0YXRlIGFjcm9zcyB0
aGUgaGFuZGxlci4KPiArICAgICAgICAqIGhzdGF0dXMgaXMgbGl2ZSBzdXBlcnZpc29yIHN0YXRl
IHJhdGhlciB0aGFuIGFuIFNTRSBpbnRlcnJ1cHRlZAo+ICsgICAgICAgICogYXR0cmlidXRlLCBh
bmQgT3BlblNCSSBjb25zdW1lcyBoc3RhdHVzLlNQViBkdXJpbmcgZXZlbnQgY29tcGxldGlvbi4K
PiArICAgICAgICAqIFNhdmluZyB0aGUgd2hvbGUgQ1NSIGtlZXBzIHRoZSBoYW5kbGVyIGVwaXNv
ZGUgdHJhbnNwYXJlbnQgdG8gS1ZNIGFuZAo+ICsgICAgICAgICogYXZvaWRzIGhhdmluZyB0byBp
bmZlciB3aGljaCBoc3RhdHVzIGJpdHMgbWF5IG1hdHRlciB0byBhIGd1ZXN0IHJlc3VtZS4KPiAr
ICAgICAgICAqLwo+ICsgICAgICAgQUxURVJOQVRJVkUoIm5vcCIsICJjc3JyIHM1LCBoc3RhdHVz
IiwgMCwgUklTQ1ZfSVNBX0VYVF9oLCAxKQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBT
YXZlIHNzY3JhdGNoIGZvciByZXN0b3JhdGlvbiBzaW5jZSB3ZSBtaWdodCBoYXZlIGludGVycnVw
dGVkIHRoZQo+ICsgICAgICAgICoga2VybmVsIGluIGVhcmx5IGV4Y2VwdGlvbiBwYXRoIGFuZCB0
aHVzLCB3ZSBkb24ndCBrbm93IHRoZSBjb250ZW50IG9mCj4gKyAgICAgICAgKiBzc2NyYXRjaC4K
PiArICAgICAgICAqLwo+ICsgICAgICAgY3NycncgczQsIENTUl9TU0NSQVRDSCwgeDAKPiArCj4g
KyAgICAgICBtdiBhMCwgYTcKPiArCj4gKyAgICAgICBjYWxsIGRvX3NzZQo+ICsKPiArICAgICAg
IGNzcncgQ1NSX1NTQ1JBVENILCBzNAo+ICsgICAgICAgQUxURVJOQVRJVkUoIm5vcCIsICJjc3J3
IGhzdGF0dXMsIHM1IiwgMCwgUklTQ1ZfSVNBX0VYVF9oLCAxKQo+ICsgICAgICAgY3NydyBDU1Jf
U1RWRUMsIHMzCj4gKwo+ICsgICAgICAgUkVHX0wgYTAsIFBUX1NUQVRVUyhzcCkKPiArICAgICAg
IFJFR19MIGExLCBQVF9FUEMoc3ApCj4gKyAgICAgICBSRUdfTCBhMiwgUFRfQkFEQUREUihzcCkK
PiArICAgICAgIFJFR19MIGEzLCBQVF9DQVVTRShzcCkKPiArICAgICAgIGNzcncgQ1NSX1NTVEFU
VVMsIGEwCj4gKyAgICAgICBjc3J3IENTUl9FUEMsIGExCj4gKyAgICAgICBjc3J3IENTUl9TVFZB
TCwgYTIKPiArICAgICAgIGNzcncgQ1NSX1NDQVVTRSwgYTMKPiArCj4gKyAgICAgICBSRUdfTCBy
YSwgUFRfUkEoc3ApCj4gKyAgICAgICBSRUdfTCBzMCwgUFRfUzAoc3ApCj4gKyAgICAgICBSRUdf
TCBzMSwgUFRfUzEoc3ApCj4gKyAgICAgICBSRUdfTCBzMiwgUFRfUzIoc3ApCj4gKyAgICAgICBS
RUdfTCBzMywgUFRfUzMoc3ApCj4gKyAgICAgICBSRUdfTCBzNCwgUFRfUzQoc3ApCj4gKyAgICAg
ICBSRUdfTCBzNSwgUFRfUzUoc3ApCj4gKyAgICAgICBSRUdfTCBzNiwgUFRfUzYoc3ApCj4gKyAg
ICAgICBSRUdfTCBzNywgUFRfUzcoc3ApCj4gKyAgICAgICBSRUdfTCBzOCwgUFRfUzgoc3ApCj4g
KyAgICAgICBSRUdfTCBzOSwgUFRfUzkoc3ApCj4gKyAgICAgICBSRUdfTCBzMTAsIFBUX1MxMChz
cCkKPiArICAgICAgIFJFR19MIHMxMSwgUFRfUzExKHNwKQo+ICsgICAgICAgUkVHX0wgdHAsIFBU
X1RQKHNwKQo+ICsgICAgICAgUkVHX0wgdDAsIFBUX1QwKHNwKQo+ICsgICAgICAgUkVHX0wgdDEs
IFBUX1QxKHNwKQo+ICsgICAgICAgUkVHX0wgdDIsIFBUX1QyKHNwKQo+ICsgICAgICAgUkVHX0wg
dDMsIFBUX1QzKHNwKQo+ICsgICAgICAgUkVHX0wgdDQsIFBUX1Q0KHNwKQo+ICsgICAgICAgUkVH
X0wgdDUsIFBUX1Q1KHNwKQo+ICsgICAgICAgUkVHX0wgdDYsIFBUX1Q2KHNwKQo+ICsgICAgICAg
UkVHX0wgZ3AsIFBUX0dQKHNwKQo+ICsgICAgICAgUkVHX0wgYTAsIFBUX0EwKHNwKQo+ICsgICAg
ICAgUkVHX0wgYTEsIFBUX0ExKHNwKQo+ICsgICAgICAgUkVHX0wgYTIsIFBUX0EyKHNwKQo+ICsg
ICAgICAgUkVHX0wgYTMsIFBUX0EzKHNwKQo+ICsgICAgICAgUkVHX0wgYTQsIFBUX0E0KHNwKQo+
ICsgICAgICAgUkVHX0wgYTUsIFBUX0E1KHNwKQo+ICsKPiArICAgICAgIFJFR19MIHNwLCBQVF9T
UChzcCkKPiArCj4gKyAgICAgICBsaSBhNywgU0JJX0VYVF9TU0UKPiArICAgICAgIGxpIGE2LCBT
QklfU1NFX0VWRU5UX0NPTVBMRVRFCj4gKyAgICAgICBlY2FsbAo+ICsKPiArI2lmZGVmIENPTkZJ
R19TTVAKPiArLkxmaW5kX2hhcnRfaWRfc2xvd3BhdGg6Cj4gKwo+ICsgICAgICAgLyogUmVzdG9y
ZSBjdXJyZW50IHRhc2sgc3RydWN0IGZyb20gX19zYmlfc3NlX2VudHJ5X3Rhc2sgKi8KPiArICAg
ICAgIGxpIHQxLCBBU01fTlJfQ1BVUwo+ICsgICAgICAgLyogU2xvd3BhdGggdG8gZmluZCB0aGUg
Q1BVIGlkIGFzc29jaWF0ZWQgdG8gdGhlIGhhcnQgaWQgKi8KPiArICAgICAgIGxhIHQwLCBfX2Nw
dWlkX3RvX2hhcnRpZF9tYXAKPiArCj4gKy5MaGFydF9pZF9sb29wOgo+ICsgICAgICAgUkVHX0wg
dDIsIDAodDApCj4gKyAgICAgICBiZXEgdDIsIGE2LCAuTGNwdV9pZF9mb3VuZAo+ICsKPiArICAg
ICAgIC8qIEluY3JlbWVudCBwb2ludGVyIGFuZCBDUFUgbnVtYmVyICovCj4gKyAgICAgICBhZGRp
IHQzLCB0MywgMQo+ICsgICAgICAgYWRkaSB0MCwgdDAsIFJJU0NWX1NaUFRSCj4gKyAgICAgICBi
bHR1IHQzLCB0MSwgLkxoYXJ0X2lkX2xvb3AKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICog
VGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIHNpbmNlIHdlIGV4cGVjdCB0aGUgaGFydF9pZCB0byBt
YXRjaCBvbmUKVGhlIGNvZGUgZm9sbG93aW5nIGdvZXMgbWlzc2luZyBpbiB0aGlzIGZpbGUuCgo+
ICsgICAgICAgICogb2Ygb3VyIENQVSwgYnV0IGJldHRlciBiZSBzYWZlIHRoYW4gc29ycnkKPiAr
ICAgICAgICAqLwo+ICsgICAgICAgbGEgdHAsIGluaXRfdGFzawo+ICsgICAgICAgbGEgYTAsIHNz
ZV9oYXJ0X2lkX3BhbmljX3N0cmluZwo+ICsgICAgICAgbGEgdDAsIHBhbmljCj4gKyAgICAgICBq
YWxyIHQwCj4gKyNlbmRpZgo+ICsKPiArU1lNX0NPREVfRU5EKGhhbmRsZV9zc2UpCj4gKwo+ICtT
WU1fREFUQV9TVEFSVF9MT0NBTChzc2VfaGFydF9pZF9wYW5pY19zdHJpbmcpCj4gKyAgICAuYXNj
aWkgIlVuYWJsZSB0byBtYXRjaCBoYXJ0X2lkIHdpdGggY3B1XDAiCj4gK1NZTV9EQVRBX0VORChz
c2VfaGFydF9pZF9wYW5pY19zdHJpbmcpCgpSZWdhcmRzCkhpbWFuc2h1Cj4gLS0KPiAyLjUwLjEg
KEFwcGxlIEdpdC0xNTUpCj4KCi0tIAprdm0tcmlzY3YgbWFpbGluZyBsaXN0Cmt2bS1yaXNjdkBs
aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz
dGluZm8va3ZtLXJpc2N2Cg==