DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVHVlc2RheSwgQXVndXN0IDIxLCAyMDEyIDY6MDQgQU0NCj4gVG86IEppYSBI
b25ndGFvLUIzODk1MQ0KPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IGdhbGFr
QGtlcm5lbC5jcmFzaGluZy5vcmc7IExpIFlhbmctDQo+IFI1ODQ3MjsgQnJhZGxleSBIdWdoZXMN
Cj4gU3ViamVjdDogUmU6IFtQQVRDSCBWOF0gcG93ZXJwYy9mc2wtcGNpOiBVbmlmeSBwY2kvcGNp
ZSBpbml0aWFsaXphdGlvbg0KPiBjb2RlDQo+IA0KPiBPbiAwOC8yMC8yMDEyIDA1OjA2IEFNLCBK
aWEgSG9uZ3RhbyB3cm90ZToNCj4gPiBXZSB1bmlmaWVkIHRoZSBGcmVlc2NhbGUgcGNpL3BjaWUg
aW5pdGlhbGl6YXRpb24gYnkgY2hhbmdpbmcgdGhlDQo+ID4gZnNsX3BjaSB0byBhIHBsYXRmb3Jt
IGRyaXZlci4gSW4gcHJldmlvdXMgUENJIGNvZGUgYXJjaGl0ZWN0dXJlIHRoZQ0KPiA+IGluaXRp
YWxpemF0aW9uIHJvdXRpbmUgaXMgY2FsbGVkIGF0IGJvYXJkX3NldHVwX2FyY2ggc3RhZ2UuIE5v
dyB0aGUNCj4gPiBpbml0aWFsaXphdGlvbiBpcyBkb25lIGluIHByb2JlIGZ1bmN0aW9uIHdoaWNo
IGlzIGFyY2hpdGVjdHVyYWwNCj4gPiBiZXR0ZXIuIEFsc28gSXQncyBjb252ZW5pZW50IGZvciBh
ZGRpbmcgUE0gc3VwcG9ydCBmb3IgUENJIGNvbnRyb2xsZXINCj4gaW4gbGF0ZXIgcGF0Y2guDQo+
ID4NCj4gPiBOb3cgd2UgcmVnaXN0ZXJlZCBwY2kgY29udHJvbGxlcnMgYXMgcGxhdGZvcm0gZGV2
aWNlcy4gU28gd2UgY29tYmluZQ0KPiA+IHR3byBpbml0aWFsaXphdGlvbiBjb2RlIGFzIG9uZSBw
bGF0Zm9ybSBkcml2ZXIuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSG9uZ3RhbyA8QjM4
OTUxQGZyZWVzY2FsZS5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJl
ZXNjYWxlLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBDaHVuaGUgTGFuIDxDaHVuaGUuTGFuQGZy
ZWVzY2FsZS5jb20+DQo+ID4gLS0tDQo+ID4gQ2hhbmdlcyBmb3IgVjg6DQo+ID4gKiBVc2UgcHJl
dmlvdXMgcHJpbWFyeSBkZXRlcm1pbmF0aW9uLiBCYXNlZCBvbiB0aGUgcG9pbnQgdGhhdCB0aGVy
ZSBhcmUNCj4gPiAgIGJ1Z3Mgb24gcHJpbWFyeS1sZXNzIHN5c3RlbS4NCj4gPiAqIEFkZCBleGNl
cHRpb25hbCBzdXBwb3J0IG9uIGdlX2ltcDNhIGluIHdoaWNoIHRoZSBwcmltYXJ5IGJ1cyBpcyBu
b3QNCj4gdGhlDQo+ID4gICBmaXJzdCBwY2kgYnVzIGRldGVjdGVkLg0KPiANCj4gVGhlIGV4Y2Vw
dGlvbmFsIHRoaW5nIGFib3V0IGdlX2ltcDNhIGlzIHRoYXQgaXQgaGFzIG5vIGlzYSBub2RlLCBi
dXQNCj4gd2UncmUgbm90IHN1cmUgaWYgaXQgYWN0dWFsbHkgaGFzIGlzYSBvciBub3QuICBXZSBz
aG91bGQgbm90IGJlIHJlbHlpbmcNCj4gb24gcHJvYmUgb3JkZXIgaW4gYW55IGNhc2UuICBEZXZp
Y2UgdHJlZSBub2RlcyBhcmUgbm90IG9yZGVyZWQuDQo+IA0KPiBBbm90aGVyIGludGVyZXN0aW5n
IGNhc2UgaXMgc3R4c3NhODU1NS5kdHMsIHdoaWNoIGhhcyBhbiBpODI1OSBub2RlIGJ1dA0KPiBu
byBJU0Egbm9kZSAoYXJlIHRoZXJlIGFueSBvdGhlciBpbnN0YW5jZXMgb2YgdGhpcz8pLiAgSG93
ZXZlciwgSSBjYW4ndA0KPiB0ZWxsIGlmIHN0eF9ncDMuYyBpcyB0aGUgcGxhdGZvcm0gZmlsZSB0
aGF0IGdvZXMgd2l0aCB0aGlzIGRldmljZSB0cmVlLA0KPiBvciBpZiB0aGUgcGxhdGZvcm0gY29k
ZSBmb3Igc3R4c3NhODU1NSBpcyBvdXQtb2YtdHJlZSAob3Igc29tZSBvdGhlciBmaWxlDQo+IHRo
YXQgSSdtIG5vdCBzZWVpbmcpLg0KPiANCg0KSGkgU2NvdHQgYW5kIEt1bWFyOg0KDQpPYnZpb3Vz
bHkgc3R4X2dwM184NTYwLmR0cyB3aXRob3V0IGlzYSBvciBpODI1OSBub2RlIGdvZXMgd2l0aCB0
aGUgZmlsZQ0Kc3R4X2dwMy5jLiBCdXQgSSdtIG5vdCBzdXJlIHRoZSBib2FyZCBoYXMgSVNBIGJy
aWRnZSBvciBub3QuDQoNCg0KPiA+IC12b2lkIF9fZGV2aW5pdCBmc2xfcGNpX2luaXQodm9pZCkN
Cj4gPiArdm9pZCBmc2xfcGNpX2Fzc2lnbl9wcmltYXJ5KHZvaWQpDQo+ID4gIHsNCj4gPiAtCWlu
dCByZXQ7DQo+ID4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQo+ID4gLQlzdHJ1Y3QgcGNp
X2NvbnRyb2xsZXIgKmhvc2U7DQo+ID4gLQlkbWFfYWRkcl90IG1heCA9IDB4ZmZmZmZmZmY7DQo+
ID4NCj4gPiAgCS8qIENhbGxlcnMgY2FuIHNwZWNpZnkgdGhlIHByaW1hcnkgYnVzIHVzaW5nIG90
aGVyIG1lYW5zLiAqLw0KPiA+ICAJaWYgKCFmc2xfcGNpX3ByaW1hcnkpIHsNCj4gDQo+IFNpbmNl
IHRoZSB3aG9sZSBwb2ludCBvZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdyB0byBmaW5kIHRoZSBwcmlt
YXJ5LCBqdXN0DQo+IHJldHVybiBpZiBpdCdzIGFscmVhZHkgc2V0LCBpbnN0ZWFkIG9mIGluZGVu
dGluZyB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb24uDQo+IA0KPiA+IEBAIC04NDIsMzggKzgzOSw2
MCBAQCB2b2lkIF9fZGV2aW5pdCBmc2xfcGNpX2luaXQodm9pZCkNCj4gPiAgCQkJbm9kZSA9IGZz
bF9wY2lfcHJpbWFyeTsNCj4gPg0KPiA+ICAJCQlpZiAob2ZfbWF0Y2hfbm9kZShwY2lfaWRzLCBu
b2RlKSkNCj4gPiAtCQkJCWJyZWFrOw0KPiA+ICsJCQkJcmV0dXJuOw0KPiA+ICAJCX0NCj4gPiAt
CX0NCj4gPg0KPiA+IC0Jbm9kZSA9IE5VTEw7DQo+ID4gLQlmb3JfZWFjaF9ub2RlX2J5X3R5cGUo
bm9kZSwgInBjaSIpIHsNCj4gPiAtCQlpZiAob2ZfbWF0Y2hfbm9kZShwY2lfaWRzLCBub2RlKSkg
ew0KPiA+ICsJCW5vZGUgPSBvZl9maW5kX25vZGVfYnlfdHlwZShOVUxMLCAicGNpIik7DQo+ID4g
KwkJaWYgKG9mX21hdGNoX25vZGUocGNpX2lkcywgbm9kZSkpDQo+ID4NCj4gDQo+IFdoYXQgaWYg
dGhlIG5vZGUgcmV0dXJuZWQgZG9lc24ndCBtYXRjaD8gIElmIHlvdSdyZSBjaGVja2luZyBmb3Ig
dGhpcywNCj4gaGFuZGxlIHRoZSBlbHNlLWNhc2UgKGV2ZW4gaWYganVzdCB3aXRoIGFuIGVycm9y
IG1lc3NhZ2UpLg0KPiANCj4gLVNjb3R0DQoNCg==