Re: [PATCH 3/3] platform: generic: spacemit: k3: add platform support

Bo Gan <[email protected]> Mon, 3 Aug 2026 16:44:09 -0700
Newsgroups org.infradead.lists.opensbi
Message-ID <[email protected]>
SGkgVHJveSwKClNlZSBteSBjb21tZW50cyBiZWxvdzoKCk9uIDcvMjQvMjYgMDI6MjcsIFRyb3kg
TWl0Y2hlbGwgd3JvdGU6Cj4gRnJvbTogWGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNw
YWNlbWl0LmNvbT4KPiAKPiBBZGQgaW5pdGlhbCBPcGVuU0JJIHBsYXRmb3JtIHN1cHBvcnQgZm9y
IHRoZSBTcGFjZW1pVCBLMyBTb0MsIHdoaWNoCj4gaGFzIDE2IGhhcnRzICg4IFgxMDAgaGFydHMg
aW4gY2x1c3RlcnMgQzAvQzEsIDggQTEwMCBoYXJ0cyBpbiBDMi9DMykuCj4gCj4gRHVyaW5nIGNv
bGQgYm9vdCwgdGhlIGJvb3QgaGFydCBzZXRzIHdhcm0tYm9vdCBlbnRyeSB2ZWN0b3JzIGZvciBh
bGwKPiBmb3VyIGNsdXN0ZXJzLCBlbmFibGVzIENDSSBzbm9vcGluZywgY2xlYXJzIFBNVSBwb3dl
ci1kb3duIHZvdGUgYml0cwo+IGZvciBhbGwgaGFydHMgc28gV0ZJIGRvZXMgbm90IHRyaWdnZXIg
cG93ZXItZG93biwgYW5kIHdha2VzIGFsbAo+IG5vbi1ib290IGhhcnRzICgxLTE1KSBzbyB0aGV5
IGVudGVyIFdGSSB3YWl0aW5nIGZvciB0aGUga2VybmVsLgo+IAo+IFBlci1oYXJ0IGluaXRpYWxp
emF0aW9uIHByb2dyYW1zIFBNQSBhdHRyaWJ1dGVzLCBlbmFibGVzIGRjYWNoZS9pY2FjaGUKPiB2
aWEgTVNFVFVQLCBzZXRzIHNtcGVuW3hdIGluIE1MMlNFVFVQIHRvIGVuYWJsZSBMMSBELWNhY2hl
IHNub29waW5nCj4gYW5kIHByZWZldGNoIGZvciB0aGlzIGNvcmUgKGhhcmR3YXJlIHRoZW4gbWFp
bnRhaW5zIGNvaGVyZW5jeSBiZXR3ZWVuCj4gdGhpcyBjb3JlJ3MgTDEgRC1jYWNoZSBhbmQgYWxs
IG90aGVyIGNhY2hlcyBpbiB0aGUgc3lzdGVtKSwgYW5kIGVuYWJsZXMKPiB0aGUgSCBleHRlbnNp
b24gaW4gTUlTQSBmb3IgWDEwMCBoYXJ0cyAoTUlTQS5IIGlzIHdyaXRhYmxlIG9uIEszIFgxMDAK
PiBjb3JlczsgTS1tb2RlIG11c3Qgc2V0IGl0IGV4cGxpY2l0bHkgdG8gYWN0aXZhdGUgaHlwZXJ2
aXNvciBzdXBwb3J0KS4KPiAKPiBrM19hc20uUyBwcm92aWRlcyB0aGUgd2FybS1ib290IGVudHJ5
IHN0dWIgdGhhdCBlbmFibGVzIGNhY2hlcyBhbmQKPiBzZXRzIHNtcGVuW3hdIHRvIGVuYWJsZSBM
MSBELWNhY2hlIHNub29waW5nIGJlZm9yZSBqdW1waW5nIHRvIEMgY29kZS4KPiBUaGlzIGVuc3Vy
ZXMgdGhhdCB3aGVuIHRoZSBib290IGhhcnQgd2FrZXMgdGhlIG90aGVyIGNvcmVzLCB0aG9zZSBj
b3Jlcwo+IGVudGVyIHdpdGggdGhlaXIgbG9jYWwgY2FjaGVzIGFjdGl2ZSBhbmQgTDEgRC1jYWNo
ZSBjb2hlcmVuY3kgZW5hYmxlZAo+IHNvIHRoZXkgY2FuIG9ic2VydmUgYW55IHNoYXJlZC1kYXRh
IHdyaXRlcyBtYWRlIGJ5IHRoZSBib290IGhhcnQgZHVyaW5nCj4gY29sZC1ib290IGluaXRpYWxp
emF0aW9uLiBUaGUgYm9vdCBoYXJ0IGVuYWJsZXMgZ2xvYmFsIENDSS01NTAKPiBzbm9vcC9EVk0g
cmVxdWVzdHMgc2VwYXJhdGVseSBiZWZvcmUgd2FraW5nIHRoZSBzZWNvbmRhcnkgaGFydHMuCj4g
Cj4gTmV3IGZpbGVzOgo+IC0gcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szLmg6
IEszLXNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zCj4gLSBwbGF0Zm9ybS9nZW5lcmljL2lu
Y2x1ZGUvc3BhY2VtaXQvazNfYXNtLmg6Cj4gICAgd2FybS1ib290IGVudHJ5IHN5bWJvbCBkZWNs
YXJhdGlvbgo+IC0gcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rMy5jOiBLMyBwbGF0Zm9ybSBk
cml2ZXIKPiAtIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazNfYXNtLlM6IHdhcm0tYm9vdCBh
c3NlbWJseSBlbnRyeSBzdHViCj4gCj4gU2lnbmVkLW9mZi1ieTogWGlhbmJpbiBaaHUgPHhpYW5i
aW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiBDby1kZXZlbG9wZWQtYnk6IFRyb3kgTWl0Y2hl
bGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFRy
b3kgTWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29tPgo+IC0tLQo+ICAg
cGxhdGZvcm0vZ2VuZXJpYy9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgICA1ICsKPiAgIHBs
YXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcgICAgICAgICB8ICAgMSArCj4gICBwbGF0
Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvY29tbW9uLmggfCAgIDQgKy0KPiAgIHBsYXRm
b3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9rMy5oICAgICB8IDE0NCArKysrKysrKysrKysr
KysrCj4gICBwbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmggfCAgMTYg
KysKPiAgIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazMuYyAgICAgICAgICAgICB8IDI2NCAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1p
dC9rM19hc20uUyAgICAgICAgIHwgIDMzICsrKysKPiAgIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2Vt
aXQvb2JqZWN0cy5tayAgICAgICB8ICAgMiArCj4gICA4IGZpbGVzIGNoYW5nZWQsIDQ2OCBpbnNl
cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVy
aWMvS2NvbmZpZyBiL3BsYXRmb3JtL2dlbmVyaWMvS2NvbmZpZwo+IGluZGV4IDk1ODYxMGQzLi4w
MzAyZWRhNiAxMDA2NDQKPiAtLS0gYS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcKPiArKysgYi9w
bGF0Zm9ybS9nZW5lcmljL0tjb25maWcKPiBAQCAtMTA5LDYgKzEwOSwxMSBAQCBjb25maWcgUExB
VEZPUk1fU1BBQ0VNSVRfSzEKPiAgIAlzZWxlY3QgUExBVEZPUk1fU1BBQ0VNSVQKPiAgIAlkZWZh
dWx0IG4KPiAgIAo+ICtjb25maWcgUExBVEZPUk1fU1BBQ0VNSVRfSzMKPiArCWJvb2wgIlNwYWNl
bWl0IEszIHN1cHBvcnQiCj4gKwlzZWxlY3QgUExBVEZPUk1fU1BBQ0VNSVQKPiArCWRlZmF1bHQg
bgo+ICsKPiAgIGNvbmZpZyBDUFVfTUlQU19QODcwMAo+ICAgCWJvb2wKPiAgIAlkZWZhdWx0IG4K
PiBkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZyBiL3BsYXRm
b3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcKPiBpbmRleCAzNDFmNmIyNS4uNThkNDA4OTgg
MTAwNjQ0Cj4gLS0tIGEvcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZwo+ICsrKyBi
L3BsYXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcKPiBAQCAtMTUsNiArMTUsNyBAQCBD
T05GSUdfUExBVEZPUk1fVEhFQUQ9eQo+ICAgQ09ORklHX1BMQVRGT1JNX01JUFNfUDg3MDBfRVlF
UTdIPXkKPiAgIENPTkZJR19QTEFURk9STV9NSVBTX1A4NzAwX0JPU1RPTj15Cj4gICBDT05GSUdf
UExBVEZPUk1fU1BBQ0VNSVRfSzE9eQo+ICtDT05GSUdfUExBVEZPUk1fU1BBQ0VNSVRfSzM9eQo+
ICAgQ09ORklHX0ZEVF9DQUNIRT15Cj4gICBDT05GSUdfRkRUX0NBQ0hFX0FOREVTX0xMQ0FDSEU9
eQo+ICAgQ09ORklHX0ZEVF9DQUNIRV9TSUZJVkVfQ0NBQ0hFPXkKPiBkaWZmIC0tZ2l0IGEvcGxh
dGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2NvbW1vbi5oIGIvcGxhdGZvcm0vZ2VuZXJp
Yy9pbmNsdWRlL3NwYWNlbWl0L2NvbW1vbi5oCj4gaW5kZXggMzE3YmIzZTkuLjdiNTBjYzRmIDEw
MDY0NAo+IC0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9jb21tb24uaAo+
ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9jb21tb24uaAo+IEBAIC05
LDcgKzksOSBAQAo+ICAgI2lmbmRlZiBfX1JJU0NWX1NQQUNFTUlUX0NPTU1PTl9IX18KPiAgICNk
ZWZpbmUgX19SSVNDVl9TUEFDRU1JVF9DT01NT05fSF9fCj4gICAKPiArI2lmbmRlZiBfX0FTU0VN
QkxZX18KPiAgICNpbmNsdWRlIDxzYmkvc2JpX2JpdG9wcy5oPgo+ICsjZW5kaWYKPiAgIAo+ICAg
I2RlZmluZSBDU1JfTVNFVFVQCQkJCTB4N2MwCj4gICAjZGVmaW5lIENTUl9NTDJTRVRVUAkJCQkw
eDdmMAo+IEBAIC03NCw3ICs3Niw3IEBACj4gICAjZGVmaW5lIFBNVV9BUF9JRExFX0NPUkVfSURM
RQkJCUJJVCgwKQo+ICAgLyogYml0IDE6IENPUkVfUFdSRFdOIC0gcG93ZXIgb2ZmIGNvcmUgb24g
V0ZJIChyZXF1aXJlcyBDT1JFX0lETEUgc2V0KSAqLwo+ICAgI2RlZmluZSBQTVVfQVBfSURMRV9D
T1JFX1BXUkRXTgkJCUJJVCgxKQo+IC0vKiBiaXQgMjogQ29yZSBMMSBTUkFNIFBvd2VyIERvd24g
LSByZXNlcnZlZC9ub3QgdXNlZCBpbiBLMSBhbmQgSzMgKi8KPiArLyogYml0IDI6IENvcmUgTDEg
U1JBTSBQb3dlciBEb3duIC0gcmVzZXJ2ZWQgaW4gSzEsIHVzZWQgaW4gSzMgKi8KPiAgICNkZWZp
bmUgUE1VX0FQX0lETEVfQ09SRV9MMV9TUkFNX1BXUkRXTgkJQklUKDIpCj4gICAvKiBiaXQgMzog
TUFTS19HSUNfTklSUV9UT19DT1JFIC0gbWFzayBuSVJRIGZyb20gR0lDLCBhdXRvLWNsZWFyZWQg
YnkgSFcgb24gcG93ZXItZG93biBlbnRyeSAqLwo+ICAgI2RlZmluZSBQTVVfQVBfSURMRV9NQVNL
X0dJQ19OSVJRCQlCSVQoMykKPiBkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRl
L3NwYWNlbWl0L2szLmggYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazMuaAo+
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmE4NGQ5ZWQ4Cj4gLS0tIC9k
ZXYvbnVsbAo+ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9rMy5oCj4g
QEAgLTAsMCArMSwxNDQgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs
YXVzZSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjYgU3BhY2VtaVQKPiArICogQXV0
aG9yczoKPiArICogICBYaWFuYmluIFpodSA8eGlhbmJpbi56aHVAbGludXguc3BhY2VtaXQuY29t
Pgo+ICsgKiAgIFRyb3kgTWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29t
Pgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19SSVNDVl9TUEFDRU1JVF9LM19IX18KPiArI2RlZmlu
ZSBfX1JJU0NWX1NQQUNFTUlUX0szX0hfXwo+ICsKPiArI2luY2x1ZGUgPHNwYWNlbWl0L2NvbW1v
bi5oPgo+ICsKPiArLyogUE1BIGNvbmZpZ3VyYXRpb24gQ1NSICovCj4gKyNkZWZpbmUgQ1NSX1BN
QUNGRzAJCQkJMHhiYzAKPiArCj4gKy8qCj4gKyAqIFBNQUNGRzAgYXVkaW8gYnVmZmVyIHJlZ2lv
biBmaWVsZDogYml0cyBbNTU6NDhdLgo+ICsgKiBNYXNrIGFuZCBhdHRyaWJ1dGUgYXJlIGFwcGxp
ZWQgYWZ0ZXIgYSA0OC1iaXQgc2hpZnQgYmVjYXVzZQo+ICsgKiBjc3JjL2NzcnMgb25seSBhY2Nl
cHQgYSAxMi1iaXQgaW1tZWRpYXRlIG9yIGEgcmVnaXN0ZXIuCj4gKyAqLwo+ICsjZGVmaW5lIFBN
QUNGRzBfQVVESU9fQlVGX0ZJRUxEX01BU0sJCTB4ZmYKPiArI2RlZmluZSBQTUFDRkcwX0FVRElP
X0JVRl9GSUVMRF9TSElGVAkJNDgKPiArI2RlZmluZSBQTUFDRkcwX0FVRElPX0JVRl9BVFRSX0NB
Q0hFQUJMRQkweDIwCj4gKwo+ICsvKgo+ICsgKiBQTUFDRkcwIFhJUCByZWdpb24gZmllbGQ6IGJp
dHMgWzIzOjE2XS4KPiArICogTG93ZXIgMTIgYml0cyBhcmUgemVybyBzbyBHQVMgZW1pdHMgYSBz
aW5nbGUgbHVpIGluc3RydWN0aW9uLgo+ICsgKi8KPiArI2RlZmluZSBQTUFDRkcwX1hJUF9GSUVM
RF9DTEVBUgkJCTB4MDBmZjAwMDBVTAo+ICsjZGVmaW5lIFBNQUNGRzBfWElQX0FUVFJfSU8JCQkw
eDAwMjIwMDAwVUwKPiArCj4gKyNkZWZpbmUgQ1NSX01MMkhJTlQJCQkJMHg3ZjcKPiArCj4gKy8q
IEVuYWJsZSBpbnN0cnVjdGlvbiBwcmVmZXRjaCBpbiBMMiBjYWNoZSBvbiBtaXNzICovCj4gKyNk
ZWZpbmUgTUwyU0VUVVBfSVBSRgkJCQlCSVQoMTYpCj4gKy8qIEVuYWJsZSBUTEIgcHJlZmV0Y2gg
aW4gTDIgY2FjaGUgKi8KPiArI2RlZmluZSBNTDJTRVRVUF9UUFJGCQkJCUJJVCgxOCkKPiArLyog
RW5hYmxlIHRvcC1vZi1jbGsgb2YgdHJhY2UgKi8KPiArI2RlZmluZSBNTDJISU5UX1RSQUNFX1RP
UF9JQ0dFTgkJCUJJVCgyNikKPiArCj4gKy8qCj4gKyAqIENvbWJpbmVkIE1TRVRVUCBmbGFncyBl
bmFibGVkIGF0IGJvb3QgdGltZTogREV8SUV8QlBFfFBGRXxNTUV8RUNDRS4KPiArICogRXhwcmVz
c2VkIGFzIGEgcGxhaW4gaGV4IGNvbnN0YW50IHNvIGl0IGNhbiBiZSB1c2VkIGluIGFzc2VtYmx5
IChCSVQoKQo+ICsgKiBleHBhbmRzIHRvIDFVTDw8biB3aGljaCBHQVMgY2Fubm90IGV2YWx1YXRl
KS4KPiArICovCj4gKyNkZWZpbmUgTVNFVFVQX0JPT1RfRkxBR1MJCQkweDEwMDczCj4gKwo+ICsv
KiBBMTAwIGNvcmVzOiBoYXJ0IDgtMTEgYmVsb25nIHRvIEMyIGNsdXN0ZXIsIGhhcnQgMTItMTUg
dG8gQzMgY2x1c3RlciAqLwo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRThfV0FLRVVQCQkJKFBNVV9B
UF9CQVNFICsgMHgzNjApCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JFOV9XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDM2NCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMF9XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDM2OCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMV9XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDM2YykKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMl9XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDIyYykKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxM19XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDIzMCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxNF9XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDIzNCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxNV9XQUtFVVAJCQkoUE1VX0FQ
X0JBU0UgKyAweDIzOCkKPiArCj4gKy8qIEExMDAgcGVyLWNvcmUgaWRsZSBjb25maWcgcmVnaXN0
ZXJzIChoYXJ0cyA4LTE1KSAqLwo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRThfSURMRV9DRkcJCQko
UE1VX0FQX0JBU0UgKyAweDM0MCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkU5X0lETEVfQ0ZHCQkJ
KFBNVV9BUF9CQVNFICsgMHgzNDQpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JFMTBfSURMRV9DRkcJ
CQkoUE1VX0FQX0JBU0UgKyAweDM0OCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMV9JRExFX0NG
RwkJCShQTVVfQVBfQkFTRSArIDB4MzRjKQo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRTEyX0lETEVf
Q0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMGMpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JFMTNfSURM
RV9DRkcJCQkoUE1VX0FQX0JBU0UgKyAweDIxMCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxNF9J
RExFX0NGRwkJCShQTVVfQVBfQkFTRSArIDB4MjE0KQo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRTE1
X0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMTgpCj4gKwo+ICsvKiBDWCBDQVBNUCBjbHVz
dGVyIGlkbGUgY29uZmlnIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzAJCShQTVVfQVBfQkFTRSArIDB4MTIwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzEJCShQTVVfQVBfQkFTRSArIDB4MGU0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzIJCShQTVVfQVBfQkFTRSArIDB4MTUwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzMJCShQTVVfQVBfQkFTRSArIDB4MTU0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzQJCShQTVVfQVBfQkFTRSArIDB4MzE0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzUJCShQTVVfQVBfQkFTRSArIDB4MzE4KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzYJCShQTVVfQVBfQkFTRSArIDB4MzFjKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzcJCShQTVVfQVBfQkFTRSArIDB4MzIwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzgJCShQTVVfQVBfQkFTRSArIDB4MzUwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzkJCShQTVVfQVBfQkFTRSArIDB4MzU0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF
X0NGRzEwCQkoUE1VX0FQX0JBU0UgKyAweDM1OCkKPiArI2RlZmluZSBQTVVfQ1hfQ0FQTVBfSURM
RV9DRkcxMQkJKFBNVV9BUF9CQVNFICsgMHgzNWMpCj4gKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lE
TEVfQ0ZHMTIJCShQTVVfQVBfQkFTRSArIDB4MjFjKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9J
RExFX0NGRzEzCQkoUE1VX0FQX0JBU0UgKyAweDIyMCkKPiArI2RlZmluZSBQTVVfQ1hfQ0FQTVBf
SURMRV9DRkcxNAkJKFBNVV9BUF9CQVNFICsgMHgyMjQpCj4gKyNkZWZpbmUgUE1VX0NYX0NBUE1Q
X0lETEVfQ0ZHMTUJCShQTVVfQVBfQkFTRSArIDB4MjI4KQo+ICsKPiArI2RlZmluZSBQTVVfQVBf
SURMRV9QV1JET1dOX0szX01BU0sJCShQTVVfQVBfSURMRV9DT1JFX0lETEUgfAkJXAo+ICsJCQkJ
CQkgUE1VX0FQX0lETEVfQ09SRV9QV1JEV04gfAkJXAo+ICsJCQkJCQkgUE1VX0FQX0lETEVfQ09S
RV9MMV9TUkFNX1BXUkRXTiB8CVwKPiArCQkJCQkJIFBNVV9BUF9JRExFX01BU0tfR0lDX05JUlEg
fAkJXAo+ICsJCQkJCQkgUE1VX0FQX0lETEVfTUFTS19HSUNfTkZJUSkKPiArCj4gKy8qCj4gKyAq
IFBNVSBDWCBwZXItY2x1c3RlciBpZGxlIGNvbnRyb2wgYml0cyAoUE1VX0NYX0NBUE1Qbl9JRExF
X0NGRykuCj4gKyAqLwo+ICsvKiBiaXQgMDogTVAgSWRsZSAtIGdhdGUgY2x1c3RlciBjbG9ja3Mg
ZXh0ZXJuYWxseSBvbiBXRkkgKi8KPiArI2RlZmluZSBQTVVfQ1hfSURMRV9NUF9JRExFCQkJQklU
KDApCj4gKy8qIGJpdCAxOiBNUCBQb3dlciBEb3duIC0gcG93ZXIgb2ZmIGNsdXN0ZXIgbG9naWMg
d2hlbiBpZGxlICovCj4gKyNkZWZpbmUgUE1VX0NYX0lETEVfTVBfUFdSRFdOCQkJQklUKDEpCj4g
Ky8qIGJpdCAyOiBMMiBDYWNoZSBTUkFNIFBvd2VyIERvd24gKi8KPiArI2RlZmluZSBQTVVfQ1hf
SURMRV9MMl9TUkFNX1BXUkRXTgkJQklUKDIpCj4gKy8qIGJpdCAzOiBTQ1UgU1JBTSBQb3dlciBE
b3duIC0gbm90IHVzZWQsIFNDVSBTUkFNIGRvZXMgbm90IHN1cHBvcnQgcmV0ZW50aW9uICovCj4g
KyNkZWZpbmUgUE1VX0NYX0lETEVfTVBfU0NVX1NSQU1fUFdSRFdOCQlCSVQoMykKPiArLyogYml0
IDc6IEFDTkFDVE0gSGFyZHdhcmUgQ29udHJvbCAtIEhXIGNvbnRyb2xzIEFDTkFDVE0gcG9ydCBv
biBNUCBsb3cgcG93ZXIgZW50cnkgKi8KPiArI2RlZmluZSBQTVVfQ1hfSURMRV9BQ05BQ1RNX0hX
X0NUUkwJCUJJVCg3KQo+ICsKPiArI2RlZmluZSBDTFVTVEVSX1BXUl9ET1dOX1ZBTFVFCQkJKFBN
VV9DWF9JRExFX01QX0lETEUgfAkJXAo+ICsJCQkJCQkgUE1VX0NYX0lETEVfTVBfUFdSRFdOIHwJ
XAo+ICsJCQkJCQkgUE1VX0NYX0lETEVfTDJfU1JBTV9QV1JEV04gfAlcCj4gKwkJCQkJCSBQTVVf
Q1hfSURMRV9NUF9TQ1VfU1JBTV9QV1JEV04gfCBcCj4gKwkJCQkJCSBQTVVfQ1hfSURMRV9BQ05B
Q1RNX0hXX0NUUkwpCj4gKwo+ICsvKiBib290IGVudHJ5IGZvciBBMTAwIGNsdXN0ZXJzICovCj4g
KyNkZWZpbmUgQzJfUlZCQUREUl9MT19BRERSCQkJKDB4ZDQyODJjMDAgKyAweDNlOCkKPiArI2Rl
ZmluZSBDMl9SVkJBRERSX0hJX0FERFIJCQkoMHhkNDI4MmMwMCArIDB4M2VjKQo+ICsjZGVmaW5l
IEMzX1JWQkFERFJfTE9fQUREUgkJCSgweGQ0MjgyYzAwICsgMHgyNjApCj4gKyNkZWZpbmUgQzNf
UlZCQUREUl9ISV9BRERSCQkJKDB4ZDQyODJjMDAgKyAweDI2NCkKPiArCj4gKy8qCj4gKyAqIFBN
VSBBUCBjb3JlIFdGSSBzdGF0dXMgcmVnaXN0ZXJzLiAgRWFjaCBiaXQgaW5kaWNhdGVzIHRoZSBj
b3JyZXNwb25kaW5nCj4gKyAqIGNvcmUgaGFzIGVudGVyZWQgV0ZJIGlkbGUgc3RhdGUuCj4gKyAq
Cj4gKyAqIFgxMDAgaGFydHMgKDAtNyk6IFBNVV9BUF9YMTAwX0lETEVfU1RBVFVTCj4gKyAqICAg
Y2x1c3RlciAwIChoYXJ0cyAwLTMpOiBiaXRzIDQsIDcsIDEwLCAxMwo+ICsgKiAgIGNsdXN0ZXIg
MSAoaGFydHMgNC03KTogYml0cyAyMCwgMjMsIDI2LCAyOQo+ICsgKiBBMTAwIGhhcnRzICg4LTE1
KTogUE1VX0FQX0ExMDBfSURMRV9TVEFUVVMKPiArICogICBjbHVzdGVyIDIgKGhhcnRzIDgtMTEp
OiAgYml0cyA0LCA3LCAxMCwgMTMKPiArICogICBjbHVzdGVyIDMgKGhhcnRzIDEyLTE1KTogYml0
cyAyMCwgMjMsIDI2LCAyOQo+ICsgKi8KPiArI2RlZmluZSBQTVVfQVBfWDEwMF9JRExFX1NUQVRV
UwkJCTB4ZDQyODI4OTAKPiArI2RlZmluZSBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUwkJCTB4ZDQy
ODI4ODAKPiArCj4gKyNkZWZpbmUgUExBVEZPUk1fQTEwMF9GSVJTVF9JRAkJCTgKPiArI2RlZmlu
ZSBQTEFURk9STV9BMTAwX0xBU1RfSUQJCQkxNQo+ICsKPiArI2RlZmluZSBQTEFUX0NDSV9LM19B
SURNQV9JRkFDRV9JWAkJMAo+ICsjZGVmaW5lIFBMQVRfQ0NJX0szX0NMVVNURVIwX0lGQUNFX0lY
CQkxCj4gKyNkZWZpbmUgUExBVF9DQ0lfSzNfQ0xVU1RFUjFfSUZBQ0VfSVgJCTIKPiArI2RlZmlu
ZSBQTEFUX0NDSV9LM19DTFVTVEVSMl8wX0lGQUNFX0lYCTMKPiArI2RlZmluZSBQTEFUX0NDSV9L
M19DTFVTVEVSMl8xX0lGQUNFX0lYCTQKPiArI2RlZmluZSBQTEFUX0NDSV9LM19DTFVTVEVSM18w
X0lGQUNFX0lYCTUKPiArI2RlZmluZSBQTEFUX0NDSV9LM19DTFVTVEVSM18xX0lGQUNFX0lYCTYK
PiArCj4gKyNlbmRpZiAvKiBfX1JJU0NWX1NQQUNFTUlUX0szX0hfXyAqLwo+IGRpZmYgLS1naXQg
YS9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmggYi9wbGF0Zm9ybS9n
ZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+
IGluZGV4IDAwMDAwMDAwLi43MGMwMDQ3OAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wbGF0Zm9y
bS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmgKPiBAQCAtMCwwICsxLDE2IEBACj4g
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UgKi8KPiArLyoKPiArICog
Q29weXJpZ2h0IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgWGlhbmJp
biBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICogICBUcm95IE1pdGNo
ZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICovCj4gKwo+ICsjaWZu
ZGVmIF9fUklTQ1ZfU1BBQ0VNSVRfSzNfQVNNX0hfXwo+ICsjZGVmaW5lIF9fUklTQ1ZfU1BBQ0VN
SVRfSzNfQVNNX0hfXwo+ICsKPiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPiArdm9pZCBfc3BhY2Vt
aXRfazNfd2FybV9zdGFydCh2b2lkKTsKPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX19SSVND
Vl9TUEFDRU1JVF9LM19BU01fSF9fICovCj4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMv
c3BhY2VtaXQvazMuYyBiL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazMuYwo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjMxOGFhOWU3Cj4gLS0tIC9kZXYvbnVsbAo+
ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazMuYwo+IEBAIC0wLDAgKzEsMjY0IEBA
Cj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKPiArICoK
PiArICogQ29weXJpZ2h0IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAg
WGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICogICBUcm95
IE1pdGNoZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICovCj4gKwo+
ICsjaW5jbHVkZSA8cGxhdGZvcm1fb3ZlcnJpZGUuaD4KPiArI2luY2x1ZGUgPHNiaS9yaXNjdl9p
by5oPgo+ICsjaW5jbHVkZSA8c2JpL3NiaV9jb25zb2xlLmg+Cj4gKyNpbmNsdWRlIDxzYmkvc2Jp
X3RpbWVyLmg+Cj4gKyNpbmNsdWRlIDxzcGFjZW1pdC9rMy5oPgo+ICsjaW5jbHVkZSA8c3BhY2Vt
aXQvazNfYXNtLmg+Cj4gKyNpbmNsdWRlIDxzcGFjZW1pdC9zcGFjZW1pdC5oPgo+ICsKPiArI2Rl
ZmluZSBQTEFURk9STV9NQVhfQ1BVUwkJCTE2Cj4gKwo+ICsvKgo+ICsgKiBNYXhpbXVtIHRpbWUg
dG8gd2FpdCBmb3IgZWFjaCBzZWNvbmRhcnkgaGFydCB0byBlbnRlciBXRkkgYWZ0ZXIgaXQgaXMK
PiArICogd29rZW4gZHVyaW5nIGNvbGQgYm9vdC4gVXNlIHRoZSBwbGF0Zm9ybSB0aW1lciBzbyB0
aGUgdGltZW91dCBkb2VzIG5vdAo+ICsgKiBkZXBlbmQgb24gQ1BVIGZyZXF1ZW5jeSBvciBNTUlP
IGxhdGVuY3kuCj4gKyAqLwo+ICsjZGVmaW5lIEhBUlRfV0ZJX1RJTUVPVVRfTVMJCQkxMDAKPiAr
Cj4gK3N0YXRpYyBjb25zdCBpbnQgY2NpX21hcFtdID0gewo+ICsJUExBVF9DQ0lfSzNfQUlETUFf
SUZBQ0VfSVgsCj4gKwlQTEFUX0NDSV9LM19DTFVTVEVSMF9JRkFDRV9JWCwKPiArCVBMQVRfQ0NJ
X0szX0NMVVNURVIxX0lGQUNFX0lYLAo+ICsJUExBVF9DQ0lfSzNfQ0xVU1RFUjJfMF9JRkFDRV9J
WCwKPiArCVBMQVRfQ0NJX0szX0NMVVNURVIyXzFfSUZBQ0VfSVgsCj4gKwlQTEFUX0NDSV9LM19D
TFVTVEVSM18wX0lGQUNFX0lYLAo+ICsJUExBVF9DQ0lfSzNfQ0xVU1RFUjNfMV9JRkFDRV9JWCwK
PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGN4X2NhcG1wX2lkbGVfY2Zn
W10gPSB7Cj4gKwlQTVVfQ1hfQ0FQTVBfSURMRV9DRkcwLCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZH
MSwKPiArCVBNVV9DWF9DQVBNUF9JRExFX0NGRzIsICBQTVVfQ1hfQ0FQTVBfSURMRV9DRkczLAo+
ICsJUE1VX0NYX0NBUE1QX0lETEVfQ0ZHNCwgIFBNVV9DWF9DQVBNUF9JRExFX0NGRzUsCj4gKwlQ
TVVfQ1hfQ0FQTVBfSURMRV9DRkc2LCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHNywKPiArCVBNVV9D
WF9DQVBNUF9JRExFX0NGRzgsICBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc5LAo+ICsJUE1VX0NYX0NB
UE1QX0lETEVfQ0ZHMTAsIFBNVV9DWF9DQVBNUF9JRExFX0NGRzExLAo+ICsJUE1VX0NYX0NBUE1Q
X0lETEVfQ0ZHMTIsIFBNVV9DWF9DQVBNUF9JRExFX0NGRzEzLAo+ICsJUE1VX0NYX0NBUE1QX0lE
TEVfQ0ZHMTQsIFBNVV9DWF9DQVBNUF9JRExFX0NGRzE1LAo+ICt9Owo+ICsKPiArc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGxvbmcgY29yZV9wd3Jkb3duX3JlZ1tdID0gewo+ICsJUE1VX0FQX0NPUkUw
X0lETEVfQ0ZHLCAgIFBNVV9BUF9DT1JFMV9JRExFX0NGRywKPiArCVBNVV9BUF9DT1JFMl9JRExF
X0NGRywgICBQTVVfQVBfQ09SRTNfSURMRV9DRkcsCj4gKwlQTVVfQVBfQ09SRTRfSURMRV9DRkcs
ICAgUE1VX0FQX0NPUkU1X0lETEVfQ0ZHLAo+ICsJUE1VX0FQX0NPUkU2X0lETEVfQ0ZHLCAgIFBN
VV9BUF9DT1JFN19JRExFX0NGRywKPiArCVBNVV9DQVBfQ09SRThfSURMRV9DRkcsICBQTVVfQ0FQ
X0NPUkU5X0lETEVfQ0ZHLAo+ICsJUE1VX0NBUF9DT1JFMTBfSURMRV9DRkcsIFBNVV9DQVBfQ09S
RTExX0lETEVfQ0ZHLAo+ICsJUE1VX0NBUF9DT1JFMTJfSURMRV9DRkcsIFBNVV9DQVBfQ09SRTEz
X0lETEVfQ0ZHLAo+ICsJUE1VX0NBUF9DT1JFMTRfSURMRV9DRkcsIFBNVV9DQVBfQ09SRTE1X0lE
TEVfQ0ZHLAo+ICt9Owo+ICsKPiArLyogV2FrZXVwIHJlZ2lzdGVycyBpbmRleGVkIGJ5IGhhcnQg
SUQgKDAtMTUpLiAqLwo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBjb3JlX3dha2V1cF9y
ZWdbXSA9IHsKPiArCVBNVV9BUF9DT1JFMF9XQUtFVVAsICAgICBQTVVfQVBfQ09SRTFfV0FLRVVQ
LAo+ICsJUE1VX0FQX0NPUkUyX1dBS0VVUCwgICAgIFBNVV9BUF9DT1JFM19XQUtFVVAsCj4gKwlQ
TVVfQVBfQ09SRTRfV0FLRVVQLCAgICAgUE1VX0FQX0NPUkU1X1dBS0VVUCwKPiArCVBNVV9BUF9D
T1JFNl9XQUtFVVAsICAgICBQTVVfQVBfQ09SRTdfV0FLRVVQLAo+ICsJUE1VX0NBUF9DT1JFOF9X
QUtFVVAsICAgIFBNVV9DQVBfQ09SRTlfV0FLRVVQLAo+ICsJUE1VX0NBUF9DT1JFMTBfV0FLRVVQ
LCAgIFBNVV9DQVBfQ09SRTExX1dBS0VVUCwKPiArCVBNVV9DQVBfQ09SRTEyX1dBS0VVUCwgICBQ
TVVfQ0FQX0NPUkUxM19XQUtFVVAsCj4gKwlQTVVfQ0FQX0NPUkUxNF9XQUtFVVAsICAgUE1VX0NB
UF9DT1JFMTVfV0FLRVVQLAo+ICt9Owo+ICsKPiArLyoKPiArICogV0ZJIGlkbGUgc3RhdHVzIHJl
Z2lzdGVycyBhbmQgcGVyLWhhcnQgbWFzayBiaXRzLiAgRWFjaCBoYXJ0IGhhcyBhCj4gKyAqIGRl
ZGljYXRlZCBiaXQgaW4gb25lIG9mIHR3byBzdGF0dXMgcmVnaXN0ZXJzIChYMTAwIGhhcnRzIDAt
NyBpbgo+ICsgKiBQTVVfQVBfWDEwMF9JRExFX1NUQVRVUywgQTEwMCBoYXJ0cyA4LTE1IGluIFBN
VV9BUF9BMTAwX0lETEVfU1RBVFVTKS4KPiArICogSW5kZXggMCBpcyB1bnVzZWQg4oCUIHRoZSBi
b290IGhhcnQgbmV2ZXIgd2FpdHMgb24gaXRzZWxmLgo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxvbmcgd2ZpX3N0YXR1c19yZWdbXSA9IHsKPiArCTAsCj4gKwlQTVVfQVBfWDEwMF9J
RExFX1NUQVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExF
X1NUQVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NU
QVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NUQVRV
UywKPiArCVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywK
PiArCVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiAr
CVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArCVBN
VV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArfTsKPiAr
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgd2ZpX3N0YXR1c19tYXNrW10gPSB7Cj4gKwkwLAo+
ICsJQklUKDcpLCAgQklUKDEwKSwgQklUKDEzKSwgQklUKDIwKSwKPiArCUJJVCgyMyksIEJJVCgy
NiksIEJJVCgyOSksCj4gKwlCSVQoNCksICBCSVQoNyksICBCSVQoMTApLCBCSVQoMTMpLAo+ICsJ
QklUKDIwKSwgQklUKDIzKSwgQklUKDI2KSwgQklUKDI5KSwKPiArfTsKPiArCj4gKy8qCj4gKyAq
IENsZWFyIHRoZSBwb3dlci1kb3duIGJpdHMgZm9yIGJvdGggdGhlIGNvcmUgYW5kIGl0cyBjbHVz
dGVyIHNvIHRoYXQKPiArICogdGhlIGhhcnQgZG9lcyBub3QgdHJpZ2dlciBhIHBvd2VyLWRvd24g
c2VxdWVuY2Ugb24gV0ZJLiAgQ2FsbGVkIGR1cmluZwo+ICsgKiBjb2xkIGJvb3QgdG8gZW5zdXJl
IGNvcmVzIGFuZCBjbHVzdGVycyBzdGF5IHBvd2VyZWQgd2hpbGUgU0JJIGluaXRpYWxpemVzLgo+
ICsgKi8KPiArc3RhdGljIHZvaWQgc3BhY2VtaXRfZGlzYWJsZV9wd3Jkb3duX2NvcmUodTMyIGhh
cnRpZCkKPiArewo+ICsJdW5zaWduZWQgaW50IHZhbHVlOwo+ICsKPiArCWlmIChoYXJ0aWQgPj0g
YXJyYXlfc2l6ZShjeF9jYXBtcF9pZGxlX2NmZykpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXZhbHVl
ID0gcmVhZGwoKHZvaWQgKikodW5zaWduZWQgbG9uZyljeF9jYXBtcF9pZGxlX2NmZ1toYXJ0aWRd
KTsKPiArCXZhbHVlICY9IH5DTFVTVEVSX1BXUl9ET1dOX1ZBTFVFOwo+ICsJd3JpdGVsKHZhbHVl
LCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWN4X2NhcG1wX2lkbGVfY2ZnW2hhcnRpZF0pOwo+ICsK
PiArCXZhbHVlID0gcmVhZGwoKHZvaWQgKikodW5zaWduZWQgbG9uZyljb3JlX3B3cmRvd25fcmVn
W2hhcnRpZF0pOwo+ICsJdmFsdWUgJj0gflBNVV9BUF9JRExFX1BXUkRPV05fSzNfTUFTSzsKPiAr
CXdyaXRlbCh2YWx1ZSwgKHZvaWQgKikodW5zaWduZWQgbG9uZyljb3JlX3B3cmRvd25fcmVnW2hh
cnRpZF0pOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBQZXItaGFydCBoYXJkd2FyZSBpbml0aWFsaXph
dGlvbiwgbWlycm9yaW5nIHdoYXQgd2FybS1ib290IGhhcnRzIHByZXZpb3VzbHkKPiArICogZGlk
IGluIGFzc2VtYmx5IGJlZm9yZSBlbnRlcmluZyBDIGNvZGUuICBDYWxsZWQgb24gZXZlcnkgaGFy
dCBvbiBib3RoIGNvbGQKPiArICogYW5kIHdhcm0gYm9vdCBwYXRocy4KPiArICoKPiArICogMS4g
UE1BOiBzZXQgYXVkaW8gYnVmZmVyIChiaXRzIFs1NTo0OF0pIGNhY2hlYWJsZSBhbmQgWElQCj4g
KyAqICAgIHJlZ2lvbiAoYml0cyBbMjM6MTZdKSBhcyBJTyBiZWZvcmUgZW5hYmxpbmcgZGNhY2hl
Lgo+ICsgKiAyLiBFbmFibGUgZGNhY2hlL2ljYWNoZSBhbmQgb3RoZXIgQ1BVIGZlYXR1cmVzIChN
U0VUVVApLgo+ICsgKiAzLiBTZXQgc21wZW5beF0gaW4gTUwyU0VUVVAgdG8gZW5hYmxlIEwxIEQt
Y2FjaGUgc25vb3BpbmcgYW5kIHByZWZldGNoLgo+ICsgKiA0LiBFbmFibGUgSCBleHRlbnNpb24g
aW4gTUlTQSAoWDEwMCBvbmx5OyBub3QgaW1wbGVtZW50ZWQgb24gQTEwMCkuCj4gKyAqLwo+ICtz
dGF0aWMgdm9pZCBzcGFjZW1pdF9rM19oYXJ0X2luaXQodTMyIGhhcnRpZCkKPiArewo+ICsJY3Ny
X2NsZWFyKENTUl9QTUFDRkcwLAo+ICsJCSAgKHVuc2lnbmVkIGxvbmcpUE1BQ0ZHMF9BVURJT19C
VUZfRklFTERfTUFTSwo+ICsJCSAgPDwgUE1BQ0ZHMF9BVURJT19CVUZfRklFTERfU0hJRlQpOwo+
ICsJY3NyX3NldChDU1JfUE1BQ0ZHMCwKPiArCQkodW5zaWduZWQgbG9uZylQTUFDRkcwX0FVRElP
X0JVRl9BVFRSX0NBQ0hFQUJMRQo+ICsJCTw8IFBNQUNGRzBfQVVESU9fQlVGX0ZJRUxEX1NISUZU
KTsKPiArCWNzcl9jbGVhcihDU1JfUE1BQ0ZHMCwgUE1BQ0ZHMF9YSVBfRklFTERfQ0xFQVIpOwo+
ICsJY3NyX3NldChDU1JfUE1BQ0ZHMCwgUE1BQ0ZHMF9YSVBfQVRUUl9JTyk7Cj4gKwlhc20gdm9s
YXRpbGUoInNmZW5jZS52bWEiIDogOiA6ICJtZW1vcnkiKTsKPiArCj4gKwljc3Jfc2V0KENTUl9N
U0VUVVAsIE1TRVRVUF9ERSB8IE1TRVRVUF9JRSB8IE1TRVRVUF9CUEUgfAo+ICsJCU1TRVRVUF9Q
RkUgfCBNU0VUVVBfTU1FIHwgTVNFVFVQX0VDQ0UpOwo+ICsJY3NyX3NldChDU1JfTUwyU0VUVVAs
IDEgPDwgKGhhcnRpZCAlIFBMQVRGT1JNX01BWF9DUFVTX1BFUl9DTFVTVEVSKSk7Cj4gKwljc3Jf
c2V0KENTUl9NTDJTRVRVUCwgTUwyU0VUVVBfSVBSRiB8IE1MMlNFVFVQX1RQUkYpOwo+ICsJY3Ny
X3NldChDU1JfTUwySElOVCwgTUwySElOVF9UUkFDRV9UT1BfSUNHRU4pOwo+ICsKPiArCWlmICho
YXJ0aWQgPCBQTEFURk9STV9BMTAwX0ZJUlNUX0lEKSB7Cj4gKwkJdW5zaWduZWQgbG9uZyBtaXNh
ID0gY3NyX3JlYWQoQ1NSX01JU0EpOwo+ICsKPiArCQkvKgo+ICsJCSAqIE1JU0EuSCBpcyB3cml0
YWJsZSBvbiBLMyBYMTAwIGNvcmVzOiB0aGUgSCBleHRlbnNpb24gaXMKPiArCQkgKiBpbXBsZW1l
bnRlZCBidXQgZGlzYWJsZWQgb3V0IG9mIHJlc2V0LCBhbmQgTS1tb2RlIG11c3QKPiArCQkgKiBl
eHBsaWNpdGx5IHNldCB0aGlzIGJpdCB0byBlbmFibGUgaHlwZXJ2aXNvciBzdXBwb3J0Lgo+ICsJ
CSAqIEExMDAgY29yZXMgZG8gbm90IGltcGxlbWVudCBILCBzbyB0aGlzIHdyaXRlIGlzIFgxMDAt
b25seS4KPiArCQkgKi8KPiArCQltaXNhIHw9IDFVTCA8PCAoJ0gnIC0gJ0EnKTsKPiArCQljc3Jf
d3JpdGUoQ1NSX01JU0EsIG1pc2EpOwo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBPbmUtdGlt
ZSBwbGF0Zm9ybSBzZXR1cCBydW4gYnkgdGhlIGJvb3QgaGFydCBkdXJpbmcgY29sZCBib290Ogo+
ICsgKiBzZXQgd2FybS1ib290IGVudHJ5IGZvciBhbGwgZm91ciBjbHVzdGVycywgZW5hYmxlIEND
SSBzbm9vcGluZywKPiArICogYW5kIHdha2UgYWxsIG5vbi1ib290IGhhcnRzICgxLTE1KSBzbyB0
aGV5IGVudGVyIFdGSSBhbmQgd2FpdAo+ICsgKiBmb3IgdGhlIGtlcm5lbCB0byBicmluZyB0aGVt
IG9ubGluZS4KPiArICovCj4gK3N0YXRpYyB2b2lkIHNwYWNlbWl0X2szX3ByZV9pbml0KHZvaWQp
Cj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgZW50cnkgPSAodW5zaWduZWQgbG9uZykmX3NwYWNlbWl0
X2szX3dhcm1fc3RhcnQ7Cj4gKwlpbnQgaTsKPiArCj4gKwl3cml0ZWwoKHUzMillbnRyeSwgKHZv
aWQgKikodW5zaWduZWQgbG9uZylDMF9SVkJBRERSX0xPX0FERFIpOwo+ICsJd3JpdGVsKCh1MzIp
KGVudHJ5ID4+IDMyKSwgKHZvaWQgKikodW5zaWduZWQgbG9uZylDMF9SVkJBRERSX0hJX0FERFIp
Owo+ICsKPiArCXdyaXRlbCgodTMyKWVudHJ5LCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKUMxX1JW
QkFERFJfTE9fQUREUik7Cj4gKwl3cml0ZWwoKHUzMikoZW50cnkgPj4gMzIpLCAodm9pZCAqKSh1
bnNpZ25lZCBsb25nKUMxX1JWQkFERFJfSElfQUREUik7Cj4gKwo+ICsJd3JpdGVsKCh1MzIpZW50
cnksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzJfUlZCQUREUl9MT19BRERSKTsKPiArCXdyaXRl
bCgodTMyKShlbnRyeSA+PiAzMiksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzJfUlZCQUREUl9I
SV9BRERSKTsKPiArCj4gKwl3cml0ZWwoKHUzMillbnRyeSwgKHZvaWQgKikodW5zaWduZWQgbG9u
ZylDM19SVkJBRERSX0xPX0FERFIpOwo+ICsJd3JpdGVsKCh1MzIpKGVudHJ5ID4+IDMyKSwgKHZv
aWQgKikodW5zaWduZWQgbG9uZylDM19SVkJBRERSX0hJX0FERFIpOwo+ICsKPiArCWZvciAoaSA9
IDA7IGkgPCBhcnJheV9zaXplKGNjaV9tYXApOyBpKyspCj4gKwkJY2NpX2VuYWJsZV9zbm9vcF9k
dm1fcmVxcyhjY2lfbWFwLCBpKTsKPiArCj4gKwkvKiBDbGVhciBjb3JlIGFuZCBjbHVzdGVyIHBv
d2VyLWRvd24gdm90ZXMgc28gV0ZJIGRvZXMgbm90IHRyaWdnZXIgcG93ZXItZG93bi4gKi8KPiAr
CWZvciAoaSA9IDA7IGkgPCBQTEFURk9STV9NQVhfQ1BVUzsgaSsrKQo+ICsJCXNwYWNlbWl0X2Rp
c2FibGVfcHdyZG93bl9jb3JlKGkpOwo+ICsKPiArCS8qCj4gKwkgKiBXYWtlIHVwIGFsbCBub24t
Ym9vdCBoYXJ0cyAoMS0xNSkuICBFYWNoIGhhcnQgTiBoYXMgYSBkZWRpY2F0ZWQgUE1VCj4gKwkg
KiB3YWtldXAgcmVnaXN0ZXIgKFBNVV9BUC9DQVBfQ09SRW5fV0FLRVVQKS4gIFdyaXRpbmcgQklU
KE4pIHRvIGhhcnQgTidzCj4gKwkgKiByZWdpc3RlciB0cmlnZ2VycyB0aGUgd2FrZXVwIHB1bHNl
IGZvciB0aGF0IGhhcnQuICBUaGlzIGlzIGNvbmZpcm1lZCBieQo+ICsJICogaGFyZHdhcmU6IHRo
ZSByZWdpc3RlciBhZGRyZXNzIHNlbGVjdHMgdGhlIHRhcmdldCBoYXJ0LCBhbmQgdGhlIHZhbHVl
Cj4gKwkgKiB3cml0dGVuIG11c3QgaGF2ZSBiaXQgTiBzZXQgKG5vdCBhIGZpeGVkIHRyaWdnZXIg
Yml0KS4KPiArCSAqIFNlZSBLMyBVc2VyIE1hbnVhbCwgIjE2IFBlcmlwaGVyYWxzIC8gUG93ZXIg
TWFuYWdlbWVudCAvIFdha2V1cCBDb3JlIi4KPiArCSAqLwo+ICsJZm9yIChpID0gMTsgaSA8IGFy
cmF5X3NpemUoY29yZV93YWtldXBfcmVnKTsgaSsrKQo+ICsJCXdyaXRlbCgxIDw8IGksICh2b2lk
ICopKHVuc2lnbmVkIGxvbmcpY29yZV93YWtldXBfcmVnW2ldKTsKPiArCj4gKwkvKgo+ICsJICog
V2FpdCBmb3IgZWFjaCBub24tYm9vdCBoYXJ0IHRvIGVudGVyIFdGSS4gIFN0YXR1cyBiaXQgcG9z
aXRpb25zIGFyZQo+ICsJICogbm9uLXVuaWZvcm0gKHNlZSBrMy5oKSwgc28gdXNlIHRoZSBmaWxl
LXNjb3BlIGxvb2t1cCB0YWJsZXMuCj4gKwkgKi8KPiArCWZvciAoaSA9IDE7IGkgPCBQTEFURk9S
TV9NQVhfQ1BVUzsgaSsrKSB7Cj4gKwkJdTY0IGRlYWRsaW5lID0gc2JpX3RpbWVyX3ZhbHVlX2Fm
dGVyX21zZWNzKEhBUlRfV0ZJX1RJTUVPVVRfTVMpOwo+ICsKPiArCQl3aGlsZSAoIShyZWFkbCgo
dm9pZCAqKSh1bnNpZ25lZCBsb25nKXdmaV9zdGF0dXNfcmVnW2ldKSAmIHdmaV9zdGF0dXNfbWFz
a1tpXSkpIHsKPiArCQkJaWYgKHNiaV90aW1lcl92YWx1ZSgpID49IGRlYWRsaW5lKSB7Cj4gKwkJ
CQlzYmlfcHJpbnRmKCJ3YXJuOiBoYXJ0ICVkIGRpZCBub3QgZW50ZXIgV0ZJXG4iLCBpKTsKPiAr
CQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBQbGF0
Zm9ybSBlYXJseSBpbml0aWFsaXphdGlvbi4KPiArICovCj4gK3N0YXRpYyBpbnQgc3BhY2VtaXRf
azNfZWFybHlfaW5pdChib29sIGNvbGRfYm9vdCkKPiArewo+ICsJaW50IHJjOwo+ICsKPiArCWlm
IChjb2xkX2Jvb3QpCj4gKwkJc3BhY2VtaXRfazNfcHJlX2luaXQoKTsKPiArCj4gKwlyYyA9IGdl
bmVyaWNfZWFybHlfaW5pdChjb2xkX2Jvb3QpOwo+ICsJaWYgKHJjKQo+ICsJCXJldHVybiByYzsK
PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgc3BhY2VtaXRfY29sZF9i
b290X2FsbG93ZWQodTMyIGhhcnRpZCkKPiArewo+ICsJLyoKPiArCSAqIFJ1biBwZXItaGFydCBo
YXJkd2FyZSBpbml0IChQTUEsIGRjYWNoZS9pY2FjaGUsIGFuZCBMMSBELWNhY2hlCj4gKwkgKiBz
bm9vcCBlbmFibGUpIGhlcmUgc28gaXQgZXhlY3V0ZXMgb24gZXZlcnkgaGFydCBiZWZvcmUgYW55
IFNCSQo+ICsJICogY29kZSBydW5zLiAgY29sZF9ib290X2FsbG93ZWQgaXMgdGhlIGVhcmxpZXN0
IHBlci1oYXJ0IGhvb2sKPiArCSAqIGF2YWlsYWJsZSBpbiB0aGUgZ2VuZXJpYyBwbGF0Zm9ybS4K
PiArCSAqLwo+ICsJc3BhY2VtaXRfazNfaGFydF9pbml0KGhhcnRpZCk7CgpNdXN0IG5vdCBydW4g
YW55dGhpbmcgd2l0aCBzaWRlLWVmZmVjdHMuIFB1dCB0aGlzIGluaXQgc29tZXdoZXJlIGVsc2Uu
IFRoZQpmdW5jdGlvbiBzaG91bGQgYmUgInB1cmUiIGFzIGl0cyBwcm90b3R5cGUgc2F5cy4gTG9v
a3MgbGlrZSBLMSBjb2RlIGhhcwp0aGUgc2FtZSBpc3N1ZS4gTmVlZCB0byBmaXggdGhhdCBhcyB3
ZWxsLgoKPiArCj4gKwlyZXR1cm4gIWhhcnRpZDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzcGFj
ZW1pdF9rM19wbGF0Zm9ybV9pbml0KGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGVvZmYsCj4gKwkJ
CQkgICAgIGNvbnN0IHN0cnVjdCBmZHRfbWF0Y2ggKm1hdGNoKQo+ICt7Cj4gKwlnZW5lcmljX3Bs
YXRmb3JtX29wcy5lYXJseV9pbml0ID0gc3BhY2VtaXRfazNfZWFybHlfaW5pdDsKPiArCWdlbmVy
aWNfcGxhdGZvcm1fb3BzLmNvbGRfYm9vdF9hbGxvd2VkID0gc3BhY2VtaXRfY29sZF9ib290X2Fs
bG93ZWQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
ZmR0X21hdGNoIHNwYWNlbWl0X2szX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInNw
YWNlbWl0LGszIiB9LAo+ICsJeyAvKiBzZW50aW5lbCAqLyB9Cj4gK307Cj4gKwo+ICtjb25zdCBz
dHJ1Y3QgZmR0X2RyaXZlciBzcGFjZW1pdF9rMyA9IHsKPiArCS5tYXRjaF90YWJsZSA9IHNwYWNl
bWl0X2szX21hdGNoLAo+ICsJLmluaXQgPSBzcGFjZW1pdF9rM19wbGF0Zm9ybV9pbml0LAo+ICt9
Owo+IGRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szX2FzbS5TIGIvcGxh
dGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rM19hc20uUwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g
aW5kZXggMDAwMDAwMDAuLmZlNDVjY2E2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BsYXRmb3Jt
L2dlbmVyaWMvc3BhY2VtaXQvazNfYXNtLlMKPiBAQCAtMCwwICsxLDMzIEBACj4gKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UgKi8KPiArLyoKPiArICogQ29weXJpZ2h0
IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgWGlhbmJpbiBaaHUgPHhp
YW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICogICBUcm95IE1pdGNoZWxsIDx0cm95
Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICovCj4gKwo+ICsjZGVmaW5lIF9fQVNT
RU1CTFlfXwo+ICsjaW5jbHVkZSA8c3BhY2VtaXQvY29tbW9uLmg+Cj4gKyNpbmNsdWRlIDxzcGFj
ZW1pdC9rMy5oPgo+ICsKPiArCS5zZWN0aW9uIC5lbnRyeSwgImF4IiwgJXByb2diaXRzCj4gKwku
YWxpZ24gMwo+ICsJLmdsb2JsIF9zcGFjZW1pdF9rM193YXJtX3N0YXJ0Cj4gK19zcGFjZW1pdF9r
M193YXJtX3N0YXJ0Ogo+ICsJLyogRW5hYmxlIGRjYWNoZSwgaWNhY2hlLCBhbmQgQ1BVIGZlYXR1
cmVzICovCj4gKwlsaQl0MCwgTVNFVFVQX0JPT1RfRkxBR1MKPiArCWNzcnMJQ1NSX01TRVRVUCwg
dDAKPiArCj4gKwkvKgo+ICsJICogU2V0IHNtcGVuW3hdIGluIE1MMlNFVFVQIHRvIGVuYWJsZSBM
MSBELWNhY2hlIHNub29waW5nIGZvciB0aGlzCj4gKwkgKiBjb3JlLCBzbyB0aGUgaGFyZHdhcmUg
bWFpbnRhaW5zIGNvaGVyZW5jeSBiZXR3ZWVuIHRoaXMgY29yZSdzIEwxCj4gKwkgKiBELWNhY2hl
IGFuZCBhbGwgb3RoZXIgY2FjaGVzIGluIHRoZSBzeXN0ZW0uCj4gKwkgKiBUaGUgYml0IHBvc2l0
aW9uIGlzIDEgPDwgKGhhcnRpZCAlIFBMQVRGT1JNX01BWF9DUFVTX1BFUl9DTFVTVEVSKS4KPiAr
CSAqLwo+ICsJY3Nycgl0MCwgbWhhcnRpZAo+ICsJYW5kaQl0MCwgdDAsIChQTEFURk9STV9NQVhf
Q1BVU19QRVJfQ0xVU1RFUiAtIDEpCj4gKwlsaQl0MSwgMQo+ICsJc2xsCXQxLCB0MSwgdDAKPiAr
CWNzcnMJQ1NSX01MMlNFVFVQLCB0MQo+ICsKPiArCWoJX3N0YXJ0X3dhcm0KPiBkaWZmIC0tZ2l0
IGEvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9vYmplY3RzLm1rIGIvcGxhdGZvcm0vZ2VuZXJp
Yy9zcGFjZW1pdC9vYmplY3RzLm1rCj4gaW5kZXggODMwOWFkMWYuLjI4MjU0M2I1IDEwMDY0NAo+
IC0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0cy5tawo+ICsrKyBiL3BsYXRm
b3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0cy5tawo+IEBAIC01LDMgKzUsNSBAQAo+ICAgcGxh
dGZvcm0tb2Jqcy0kKENPTkZJR19QTEFURk9STV9TUEFDRU1JVCkgKz0gc3BhY2VtaXQvc3BhY2Vt
aXQubwo+ICAgY2FycmF5LXBsYXRmb3JtX292ZXJyaWRlX21vZHVsZXMtJChDT05GSUdfUExBVEZP
Uk1fU1BBQ0VNSVRfSzEpICs9IHNwYWNlbWl0X2sxCj4gICBwbGF0Zm9ybS1vYmpzLSQoQ09ORklH
X1BMQVRGT1JNX1NQQUNFTUlUX0sxKSArPSBzcGFjZW1pdC9rMS5vCj4gK2NhcnJheS1wbGF0Zm9y
bV9vdmVycmlkZV9tb2R1bGVzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szKSArPSBzcGFj
ZW1pdF9rMwo+ICtwbGF0Zm9ybS1vYmpzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szKSAr
PSBzcGFjZW1pdC9rMy5vIHNwYWNlbWl0L2szX2FzbS5vCj4gCgpCbwoKLS0gCm9wZW5zYmkgbWFp
bGluZyBsaXN0Cm9wZW5zYmlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk
ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29wZW5zYmkK