Re: [f2fs-dev] [PATCH v5] f2fs: support dynamic reserve/release for device aliasing

Daeho Jeong <[email protected]> Wed, 29 Jul 2026 09:43:37 -0700
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <CACOAw_y-qq79JtsUBMvdNurtb_bXD6esP8cc17M-Gxgf3xpO3w@mail.gmail.com>
T24gV2VkLCBKdWwgMjksIDIwMjYgYXQgMjowOeKAr0FNIENoYW8gWXUgPGNoYW9Aa2VybmVsLm9y
Zz4gd3JvdGU6Cj4KPiBPbiA3LzI0LzI2IDA0OjIwLCBEYWVobyBKZW9uZyB3cm90ZToKPiA+IEZy
b206IERhZWhvIEplb25nIDxkYWVob2plb25nQGdvb2dsZS5jb20+Cj4gPgo+ID4gVGhpcyBwYXRj
aCBhZGRzIGEgZHluYW1pYyBtYW5hZ2VtZW50IGZlYXR1cmUgdG8gdGhlIGV4aXN0aW5nIGRldmlj
ZQo+ID4gYWxpYXNpbmcgZnVuY3Rpb25hbGl0eS4gSXQgYWxsb3dzIHVzZXJzIHRvIGR5bmFtaWNh
bGx5IHJlc2VydmUgb3IKPiA+IHJlbGVhc2Ugc3BlY2lmaWMgZGV2aWNlcyBmcm9tIHRoZSBmaWxl
c3lzdGVtJ3MgZnJlZSBwb29sIGF0IHJ1bnRpbWUKPiA+IHRocm91Z2ggbmV3IGlvY3Rscy4KPiA+
Cj4gPiBUbyBzdXBwb3J0IHRoaXMsIHRocmVlIG5ldyBpb2N0bHMgYXJlIGludHJvZHVjZWQ6Cj4g
PiAtIEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOiBUaGlzIHJlY2xhaW1zIHRoZSBzcGFjZSBv
Y2N1cGllZCBieSBhCj4gPiAgIGRldmljZSBhbGlhc2luZyBmaWxlLiBJdCBmaXJzdCBwZXJmb3Jt
cyBhIGNhcGFjaXR5IGNoZWNrLCByZXNldHMgR0MKPiA+ICAgdmljdGltIGluZm9ybWF0aW9uIGZv
ciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyB0aGUgc2VnbWVudHMgYXMgaW4tdXNlCj4gPiAgIHRv
IHByZXZlbnQgbmV3IGFsbG9jYXRpb25zLCBhbmQgdGhlbiB0cmlnZ2VycyBHQyB0byBtaWdyYXRl
IGV4aXN0aW5nCj4gPiAgIHZhbGlkIGRhdGEgb3V0IG9mIHRoZSByYW5nZS4gRmluYWxseSwgaXQg
cmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZQo+ID4gICBTSVQgdG8gZWZmZWN0aXZlbHkgZXhj
bHVkZSB0aGUgZGV2aWNlIGZyb20gdGhlIHVzYWJsZSBjYXBhY2l0eS4KPiA+Cj4gPiAtIEYyRlNf
SU9DX1JFTEVBU0VfREVWX0FMSUFTOiBUaGlzIHJlbGVhc2VzIHRoZSByZXNlcnZlZCBzcGFjZSBv
ZiBhCj4gPiAgIHByZXZpb3VzbHkgcmVzZXJ2ZWQgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IHRy
dW5jYXRlcyB0aGUgYmxvY2tzCj4gPiAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwgd2hpY2gg
bWFrZXMgdGhlbSBhdmFpbGFibGUgZm9yIGdlbmVyYWwKPiA+ICAgZmlsZXN5c3RlbSBhbGxvY2F0
aW9uIGFnYWluLgo+ID4KPiA+IC0gRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6IFRoaXMg
cmV0cmlldmVzIHRoZSBjdXJyZW50IGFsaWFzaW5nCj4gPiAgIHN0YXR1cyBvZiBhIGRldmljZSBh
bGlhc2luZyBmaWxlLCByZXR1cm5pbmcgd2hldGhlciB0aGUgZmlsZSBpcwo+ID4gICByZWxlYXNl
ZCAoaW5hY3RpdmUgYWxpYXMpIG9yIHJlc2VydmVkIChhY3RpdmUgYWxpYXMsIHdpdGggYmxvY2tz
Cj4gPiAgIGZ1bGx5IGFsbG9jYXRlZCBvbiB0aGUgZGV2aWNlKS4KPiA+Cj4gPiBTaWduZWQtb2Zm
LWJ5OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4gLS0tCj4gPiB2NTog
cHJldmVudGVkIG5ldyBzZWdtZW50IGFsbG9jYXRpb24gb24gZGV2aWNlcyB1bmRlcmdvaW5nIHJl
c2VydmF0aW9uCj4gPiAgICAgb3Igd2l0aCBhY3RpdmUgYWxpYXNlcy4KPiA+ICAgICB1c2VkIGlu
LW1lbW9yeSBzdHJ1Y3QgdG8gcmVzZXJ2ZSBibG9ja3MgZm9yIGRldmljZSBhbGlhc2luZy4KPiA+
ICAgICBjbGVhcmVkIHByZWZyZWUgKFBSRSkgZGlydHkgc2VnbWVudCBiaXRtYXAuCj4gPiB2NDog
cmVuYW1lZCBpbnRlcmZhY2VzLgo+ID4gICAgIGZpeGVkIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVu
IGNoZWNrcG9pbnQ9ZGlzYWJsZSBtb3VudCBhbmQgaW9jdGxzLgo+ID4gICAgIHJlZmFjdG9yZWQg
c2VnbWVudCByZXNlcnZhdGlvbiBwYXJ0Lgo+ID4gICAgIG1vZGlmaWVkIGxvY2sgdXNhZ2UuCj4g
PiB2MzogYWRkIENBUF9TWVNfQURNSU4gYW5kIGNoZWNrcG9pbnQ9ZGlzYWJsZWQgY2hlY2suCj4g
PiAgICAgcmVtb3ZlIGEgZjJmcyBzcGVjaWZpYyBmbGFnIGV4cG9zZWQgd2l0aCBnZXRmbGFncy4K
PiA+IHYyOiBwcmV2ZW50IG9wZXJhdGlvbnMgZHVyaW5nIGNoZWNrcG9pbnQ9ZGlzYWJsZWQuCj4g
PiAtLS0KPiA+IC0tLQo+ID4gIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgfCAg
MzUgKysrKwo+ID4gIGZzL2YyZnMvZjJmcy5oICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0K
PiA+ICBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgMjc4ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKystCj4gPiAgZnMvZjJmcy9nYy5jICAgICAgICAgICAgICAgICAgICAg
ICB8ICAzMCArKy0tCj4gPiAgZnMvZjJmcy9uYW1laS5jICAgICAgICAgICAgICAgICAgICB8ICAx
NCArKwo+ID4gIGZzL2YyZnMvc2VnbWVudC5jICAgICAgICAgICAgICAgICAgfCAxNzQgKysrKysr
KysrKysrKy0tLS0tCj4gPiAgZnMvZjJmcy9zZWdtZW50LmggICAgICAgICAgICAgICAgICB8ICAy
MiArKysKPiA+ICBmcy9mMmZzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKysK
PiA+ICBpbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oICAgICAgICAgIHwgICA3ICsKPiA+ICA5IGZp
bGVzIGNoYW5nZWQsIDU0MiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBk
aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdCBiL0RvY3VtZW50
YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QKPiA+IGluZGV4IDhjNGExNGFlNDQ0Zi4uMWE1ZmQ0
YWZlNjA5IDEwMDY0NAo+ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJz
dAo+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gQEAgLTEw
NDUsNiArMTA0NSw0MSBAQCBTbywgdGhlIGtleSBpZGVhIGlzLCB1c2VyIGNhbiBkbyBhbnkgZmls
ZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRjLCBhbmQKPiA+ICByZWNsYWltIHRoZSBzcGFjZSBhZnRl
ciB0aGUgdXNlLCB3aGlsZSB0aGUgc3BhY2UgaXMgY291bnRlZCBhcyAvZGF0YS4KPiA+ICBUaGF0
IGRvZXNuJ3QgcmVxdWlyZSBtb2RpZnlpbmcgcGFydGl0aW9uIHNpemUgYW5kIGZpbGVzeXN0ZW0g
Zm9ybWF0Lgo+ID4KPiA+ICtEeW5hbWljIERldmljZSBBbGlhc2luZyBNYW5hZ2VtZW50Cj4gPiAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gKwo+ID4gK0luIGFkZGl0aW9u
IHRvIHN0YXRpYyBkZXZpY2UgYWxpYXNpbmcgYnkgZGVsZXRpbmcgdGhlIGFsaWFzaW5nIGZpbGUs
IEYyRlMKPiA+ICtzdXBwb3J0cyBkeW5hbWljIG1hbmFnZW1lbnQgb2YgZGV2aWNlIGFsaWFzaW5n
LiBUaGlzIG1lY2hhbmlzbSBhbGxvd3MgdGhlIHN5c3RlbQo+ID4gK3RvIGR5bmFtaWNhbGx5IHRy
YW5zaXRpb24gcGFydGl0aW9uIG93bmVyc2hpcCBiZXR3ZWVuIEYyRlMgdXNlcmRhdGEgYW5kIGV4
dGVybmFsCj4gPiArZW50aXRpZXMgKGUuZy4sIHpSQU0sIHJhdyBwYXJ0aXRpb24pIGJhc2VkIG9u
IHN5c3RlbSByZXF1aXJlbWVudHMgd2l0aG91dAo+ID4gK2RlbGV0aW5nIHRoZSBtYXN0ZXIgYWxp
YXNpbmcgZmlsZSBvciByZXF1aXJpbmcgdW5tb3VudC9yZW1vdW50Lgo+ID4gKwo+ID4gK1RoZSBt
YXN0ZXIgYWxpYXNpbmcgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBmb3JtYXQg
b2YgdGhlIGZpbGUgc3lzdGVtCj4gPiArYW5kIHJlbWFpbnMgYXMgYSBwZXJzaXN0ZW50IGNvbnRy
b2wgZW50aXR5IChpb2N0bCBnYXRld2F5KSBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuCj4gPiArCj4g
PiArLSBQYXJ0aXRpb24gUmVzZXJ2YXRpb24gKEluLXNlcnZpY2UgdG8gQWxpYXNlZCkKPiA+ICsg
IFdoZW4gYSBzcGVjaWZpYyBwYXJ0aXRpb24gbmVlZHMgdG8gYmUgZGVkaWNhdGVkIHRvIGV4dGVy
bmFsIHNlcnZpY2VzIChlLmcuLCB6UkFNKSwKPiA+ICsgIGEgdXNlciBjYW4gcmVzZXJ2ZSB0aGUg
ZGV2aWNlIGFsaWFzIHJhbmdlIHZpYSBpb2N0bC4gVGhlIGtlcm5lbCByZXNldHMgR0MgdmljdGlt
Cj4gPiArICBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3Mgc2VnbWVudHMg
YXMgaW4tdXNlIHRvIHByZXZlbnQgbmV3Cj4gPiArICBhbGxvY2F0aW9ucywgYW5kIHRyaWdnZXJz
IGZvcmNlZCBHQyB0byBtaWdyYXRlIGV4aXN0aW5nIHZhbGlkIGRhdGEgb3V0IG9mIHRoZQo+ID4g
KyAgcmFuZ2UuIEZpbmFsbHksIGl0IHJlc2VydmVzIHRoZXNlIGJsb2NrcyBpbiB0aGUgU0lUIHRv
IGVmZmVjdGl2ZWx5IGV4Y2x1ZGUgdGhlCj4gPiArICBkZXZpY2UgZnJvbSB0aGUgdXNhYmxlIGNh
cGFjaXR5Lgo+ID4gKwo+ID4gKy0gUGFydGl0aW9uIFJlbGVhc2UgKEFsaWFzZWQgdG8gSW4tc2Vy
dmljZSkKPiA+ICsgIFdoZW4gZXh0ZXJuYWwgdXNhZ2UgY29uY2x1ZGVzLCB0aGUgc3BhY2UgaXMg
cmVjbGFpbWVkIG5vdCBieSBkZWxldGluZyB0aGUgZmlsZSwKPiA+ICsgIGJ1dCB0aHJvdWdoIHRo
ZSByZWxlYXNlIGlvY3RsLiBUaGUga2VybmVsIHRydW5jYXRlcyBibG9ja3MgYXNzb2NpYXRlZCB3
aXRoCj4gPiArICB0aGUgZmlsZSwgcmVsZWFzaW5nIHRoZW0gYmFjayB0byBnZW5lcmFsIGZpbGVz
eXN0ZW0gYWxsb2NhdGlvbi4KPiA+ICsKPiA+ICsuLiBjb2RlLWJsb2NrOjoKPiA+ICsKPiA+ICsg
ICAjIGYyZnNfaW8gZGV2X2FsaWFzIHJlbGVhc2UgL21udC9mMmZzL3ZkYy5maWxlCj4gPiArICAg
IyBkZiAtaAo+ID4gKyAgIC9kZXYvdmRiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0RyAg
NzUzTSAgIDY0RyAgIDIlIC9tbnQvZjJmcwo+ID4gKwo+ID4gKyAgICMgZjJmc19pbyBkZXZfYWxp
YXMgcmVzZXJ2ZSAvbW50L2YyZnMvdmRjLmZpbGUKPiA+ICsgICAjIGRmIC1oCj4gPiArICAgL2Rl
di92ZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjRHICAgMzNHICAgMzJHICA1MiUgL21u
dC9mMmZzCj4gPiArCj4gPiAgUGVyLWZpbGUgUmVhZC1Pbmx5IExhcmdlIEZvbGlvIFN1cHBvcnQK
PiA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4KPiA+IGRpZmYg
LS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4gPiBpbmRleCBmMTc3NGQ0
ZTE4ZDIuLjc0YzJkNThjZTI3MSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPiAr
KysgYi9mcy9mMmZzL2YyZnMuaAo+ID4gQEAgLTE0MDQsNiArMTQwNCw4IEBAIHN0cnVjdCBmMmZz
X2Rldl9pbmZvIHsKPiA+ICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9zZWdtZW50czsKPiA+ICAg
ICAgIGJsb2NrX3Qgc3RhcnRfYmxrOwo+ID4gICAgICAgYmxvY2tfdCBlbmRfYmxrOwo+ID4gKyAg
ICAgYm9vbCBoYXNfYWxpYXM7Cj4gPiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPiA+ICAjaWZk
ZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+ICAgICAgIHVuc2lnbmVkIGludCBucl9ibGt6OyAg
ICAgICAgICAgLyogVG90YWwgbnVtYmVyIG9mIHpvbmVzICovCj4gPiAgICAgICB1bnNpZ25lZCBs
b25nICpibGt6X3NlcTsgICAgICAgIC8qIEJpdG1hcCBpbmRpY2F0aW5nIHNlcXVlbnRpYWwgem9u
ZXMgKi8KPiA+IEBAIC0xODU3LDYgKzE4NTksNyBAQCBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPiA+
ICAgICAgIGJsb2NrX3QgbGFzdF92YWxpZF9ibG9ja19jb3VudDsgICAgICAgICAvKiBmb3IgcmVj
b3ZlcnkgKi8KPiA+ICAgICAgIGJsb2NrX3QgcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgICAgICAg
ICAvKiBjb25maWd1cmFibGUgcmVzZXJ2ZWQgYmxvY2tzICovCj4gPiAgICAgICBibG9ja190IGN1
cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgLyogY3VycmVudCByZXNlcnZlZCBibG9ja3Mg
Ki8KPiA+ICsgICAgIGJsb2NrX3QgYWxpYXNfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgICAvKiBy
ZXNlcnZlZCBibG9ja3MgZm9yIGRldmljZSBhbGlhcyAqLwo+ID4KPiA+ICAgICAgIC8qIEFkZGl0
aW9uYWwgdHJhY2tpbmcgZm9yIG5vIGNoZWNrcG9pbnQgbW9kZSAqLwo+ID4gICAgICAgYmxvY2tf
dCB1bnVzYWJsZV9ibG9ja19jb3VudDsgICAgICAgICAgIC8qICMgb2YgYmxvY2tzIHNhdmVkIGJ5
IGxhc3QgY3AgKi8KPiA+IEBAIC0yNTU5LDcgKzI1NjIsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi
aSwKPiA+ICAgICAgIGJsb2NrX3QgYXZhaWxfdXNlcl9ibG9ja19jb3VudDsKPiA+Cj4gPiAgICAg
ICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50ID0gc2JpLT51c2VyX2Jsb2NrX2NvdW50IC0KPiA+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVk
X2Jsb2NrczsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5j
dXJyZW50X3Jlc2VydmVkX2Jsb2NrcyAtCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzOwo+ID4KPiA+ICAgICAgIGlmICh0
ZXN0X29wdChzYmksIFJFU0VSVkVfUk9PVCkgJiYgIV9fYWxsb3dfcmVzZXJ2ZWRfcm9vdChzYmks
IGlub2RlLCBjYXApKQo+ID4gICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50IC09
IEYyRlNfT1BUSU9OKHNiaSkucm9vdF9yZXNlcnZlZF9ibG9ja3M7Cj4gPiBAQCAtNDAxMCw2ICs0
MDE0LDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8g
KnNiaSk7Cj4gPiAgdm9pZCBmMmZzX2Rlc3Ryb3lfZmx1c2hfY21kX2NvbnRyb2woc3RydWN0IGYy
ZnNfc2JfaW5mbyAqc2JpLCBib29sIGZyZWUpOwo+ID4gIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Js
b2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKTsK
PiA+ICt2b2lkIGYyZnNfcmVzZXJ2ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAq
c2JpLCBibG9ja190IGFkZHIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7Cj4gPiAgYm9vbCBmMmZzX2lzX2NoZWNrcG9p
bnRlZF9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKTsKPiA+
ICBpbnQgZjJmc19zdGFydF9kaXNjYXJkX3RocmVhZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkp
Owo+ID4gIHZvaWQgZjJmc19kcm9wX2Rpc2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi
aSk7Cj4gPiBAQCAtNDIzMSw2ICs0MjM3LDggQEAgdm9pZCBmMmZzX2J1aWxkX2djX21hbmFnZXIo
c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+ICBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3Qg
ZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9z
ZWcsIHVuc2lnbmVkIGludCBlbmRfc2VnLAo+ID4gICAgICAgICAgICAgICBib29sIGRyeV9ydW4s
IHVuc2lnbmVkIGludCBkcnlfcnVuX3NlY3Rpb25zKTsKPiA+ICt2b2lkIGYyZnNfcmVzZXRfZ2Nf
dmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+ICBpbnQgZjJmc19y
ZXNpemVfZnMoc3RydWN0IGZpbGUgKmZpbHAsIF9fdTY0IGJsb2NrX2NvdW50KTsKPiA+ICBpbnQg
X19pbml0IGYyZnNfY3JlYXRlX2dhcmJhZ2VfY29sbGVjdGlvbl9jYWNoZSh2b2lkKTsKPiA+ICB2
b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25fY2FjaGUodm9pZCk7Cj4gPiBkaWZm
IC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+ID4gaW5kZXggNGI1MmM1
NmQ3MWYwLi42NDJmMDZmMmZhZWEgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2ZpbGUuYwo+ID4g
KysrIGIvZnMvZjJmcy9maWxlLmMKPiA+IEBAIC04MTMsMTMgKzgxMywxOSBAQCBpbnQgZjJmc19k
b190cnVuY2F0ZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyb20sIGJvb2wgbG9j
aykKPiA+Cj4gPiAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+ID4gICAg
ICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50
X3RyZWVbRVhfUkVBRF07Cj4gPiAtICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9
IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWk7Cj4g
PiArCj4gPiArICAgICAgICAgICAgIHJlYWRfbG9jaygmZXQtPmxvY2spOwo+ID4gKyAgICAgICAg
ICAgICBlaSA9IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICByZWFkX3VubG9jaygmZXQt
PmxvY2spOwo+ID4KPiA+ICAgICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzYmks
IGVpLmJsaywgZWkubGVuKTsKPiA+Cj4gPiAgICAgICAgICAgICAgIGRlY192YWxpZF9ibG9ja19j
b3VudChzYmksIGlub2RlLCBlaS5sZW4pOwo+ID4gICAgICAgICAgICAgICBmMmZzX3VwZGF0ZV90
aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4KPiA+ICsgICAgICAgICAgICAgZjJmc19kcm9wX2V4dGVu
dF90cmVlKGlub2RlKTsKPiA+ICsKPiA+ICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoaWZv
bGlvLCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICB9Cj4gPiBA
QCAtMTEwMCw4ICsxMTA2LDkgQEAgaW50IGYyZnNfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICpp
ZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4gICAgICAgaWYgKChhdHRyLT5pYV92YWxp
ZCAmIEFUVFJfU0laRSkpIHsKPiA+ICAgICAgICAgICAgICAgaWYgKG1hcHBpbmdfbGFyZ2VfZm9s
aW9fc3VwcG9ydChpbm9kZS0+aV9tYXBwaW5nKSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICAgICAgICAgIGlmICghZjJmc19pc19jb21wcmVz
c19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgaWYgKElTX0RF
VklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1F
UEVSTTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2JhY2tlbmRfcmVh
ZHkoaW5vZGUpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK
PiA+ICAgICAgICAgICAgICAgaWYgKGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9DT01QUkVT
U19SRUxFQVNFRCkgJiYKPiA+ICAgICAgICAgICAgICAgICAgICAgICAhSVNfQUxJR05FRChhdHRy
LT5pYV9zaXplLAo+ID4gQEAgLTIxMzAsNiArMjEzNyw5IEBAIHN0YXRpYyBpbnQgZjJmc19zZXRm
bGFnc19jb21tb24oc3RydWN0IGlub2RlICppbm9kZSwgdTMyIGlmbGFncywgdTMyIG1hc2spCj4g
PiAgICAgICBpZiAoSVNfTk9RVU9UQShpbm9kZSkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAt
RVBFUk07Cj4gPgo+ID4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiAr
ICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiAgICAgICBpZiAoKGlmbGFncyBe
IG1hc2tlZF9mbGFncykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4gPiAgICAgICAgICAgICAgIGlm
ICghZjJmc19zYl9oYXNfY2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4gPiAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gQEAgLTI2NzgsNiArMjY4OCwxNyBA
QCBzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3BvbGljeShzdHJ1Y3QgZmlsZSAq
ZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgICAgICByZXR1cm4gZnNjcnlwdF9pb2N0bF9n
ZXRfcG9saWN5KGZpbHAsICh2b2lkIF9fdXNlciAqKWFyZyk7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0
aWMgaW50IGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfc3RhdHVzKHN0cnVjdCBmaWxlICpmaWxwLCB1
bnNpZ25lZCBsb25nIGFyZykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0g
ZmlsZV9pbm9kZShmaWxwKTsKPiA+ICsKPiA+ICsgICAgIGlmICghSVNfREVWSUNFX0FMSUFTSU5H
KGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAg
ICByZXR1cm4gcHV0X3VzZXIoRjJGU19IQVNfQkxPQ0tTKGlub2RlKSA/IEYyRlNfREVWX0FMSUFT
X1NUQVRVU19SRVNFUlZFRCA6Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZT
X0RFVl9BTElBU19TVEFUVVNfUkVMRUFTRUQsICh1MzIgX191c2VyICopYXJnKTsKPiA+ICt9Cj4g
PiArCj4gPiAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlvbl9wd3NhbHQoc3RydWN0
IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4gIHsKPiA+ICAgICAgIHN0cnVjdCBp
bm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+ID4gQEAgLTM2MTYsNiArMzYzNywyNDgg
QEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3RydWN0IGZpbGUgKmZp
bHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICh1MzIgX191
c2VyICopYXJnKTsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBib29sIGYyZnNfZ2V0X2Rldl9hbGlh
c19leHRlbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPiA+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gKmVpKQo+ID4gK3sK
PiA+ICsgICAgIGludCBpOwo+ID4gKwo+ID4gKyAgICAgZm9yIChpID0gMTsgaSA8IHNiaS0+c19u
ZGV2czsgaSsrKSB7Cj4gPiArICAgICAgICAgICAgIGNoYXIgKm5hbWUgPSBzdHJyY2hyKEZERVYo
aSkucGF0aCwgJy8nKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgbmFtZSA9IG5hbWUgPyBuYW1l
ICsgMSA6IEZERVYoaSkucGF0aDsKPiA+ICsgICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwg
ZGVudHJ5LT5kX25hbWUubmFtZSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBlaS0+Ymxr
ID0gRkRFVihpKS5zdGFydF9ibGs7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZWktPmxlbiA9
IEZERVYoaSkudG90YWxfc2VnbWVudHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Blcl9zZWc7Cj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwo+ID4gKyAgICAgICAgICAgICB9Cj4KPiBUcml2aWFsIGNsZWFudXAg
dG8gYXZvaWQgbG9uZyBsaW5lOgo+Cj4gICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwg
ZGVudHJ5LT5kX25hbWUubmFtZSkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Cj4KPiAgICAgICAgICAgICAgICAgZWktPmJsayA9IEZERVYoaSkuc3RhcnRfYmxrOwo+ICAgICAg
ICAgICAgICAgICBlaS0+bGVuID0gRkRFVihpKS50b3RhbF9zZWdtZW50cyA8PCBzYmktPmxvZ19i
bG9ja3NfcGVyX3NlZzsKPiAgICAgICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+ICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKPgo+ID4gKyAgICAgfQo+ID4gKyAgICAgcmV0dXJuIGZhbHNl
Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFz
KHN0cnVjdCBmaWxlICpmaWxwKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUg
PSBmaWxlX2lub2RlKGZpbHApOwo+ID4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0g
RjJGU19JX1NCKGlub2RlKTsKPiA+ICsgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAqZXQgPSBGMkZT
X0koaW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsKPiA+ICsgICAgIHN0cnVjdCBleHRlbnRf
aW5mbyBlaTsKPiA+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfU1lOQywgMCwg
MCwgMCB9Owo+ID4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4gPiAr
ICAgICBibGtjbnRfdCBjb3VudDsKPiA+ICsgICAgIHVuc2lnbmVkIGludCBzdGFydCwgZW5kOwo+
ID4gKyAgICAgaW50IHR5cGUsIGVycjsKPiA+ICsKPiA+ICsgICAgIGlmICghY2FwYWJsZShDQVBf
U1lTX0FETUlOKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICsg
ICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkK
PiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgICBlcnIgPSBt
bnRfd2FudF93cml0ZV9maWxlKGZpbHApOwo+ID4gKyAgICAgaWYgKGVycikKPiA+ICsgICAgICAg
ICAgICAgcmV0dXJuIGVycjsKPiA+ICsKPiA+ICsgICAgIGlub2RlX2xvY2soaW5vZGUpOwo+ID4g
Kwo+ID4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4gPiArICAgICAg
ICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3Vu
bG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGlmIChGMkZTX0hBU19CTE9DS1MoaW5v
ZGUpKSB7Cj4gPiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPiArICAgICAgICAgICAgIGdvdG8g
b3V0X2lub2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGlmICghZjJmc19n
ZXRfZGV2X2FsaWFzX2V4dGVudChzYmksIGZpbHAtPmZfcGF0aC5kZW50cnksICZlaSkpIHsKPiA+
ICsgICAgICAgICAgICAgZjJmc193YXJuKHNiaSwgImRldmljZSBhbGlhcyBmaWxlICglcywgaW5v
PSVsbHUpIGhhcyBubyBtYXRjaGluZyBkZXZpY2UiLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9uYW1lLm5hbWUsCj4gPiArICAgICAgICAgICAgICAg
ICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWlub2RlLT5pX2lubyk7Cj4gPiArICAgICAgICAg
ICAgIHNldF9zYmlfZmxhZyhzYmksIFNCSV9ORUVEX0ZTQ0spOwo+ID4gKyAgICAgICAgICAgICBm
MmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0NPUlJVUFRFRF9JTk9ERSk7Cj4gPiArICAgICAg
ICAgICAgIGVyciA9IC1FRlNDT1JSVVBURUQ7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu
b2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmc2JpLT5z
dGF0X2xvY2spOwo+ID4gKyAgICAgaWYgKHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQgKyBl
aS5sZW4gPgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdldF9hdmFpbGFibGVfYmxvY2tfY291
bnQoc2JpLCBpbm9kZSwgdHJ1ZSkpIHsKPiA+ICsgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnNi
aS0+c3RhdF9sb2NrKTsKPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVOT1NQQzsKPiA+ICsgICAg
ICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKyAgICAgc2Jp
LT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgKz0gZWkubGVuOwo+ID4gKyAgICAgc3Bpbl91bmxvY2so
JnNiaS0+c3RhdF9sb2NrKTsKPiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSkt
PnNlZ21hcF9sb2NrKTsKPiA+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNi
aSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gdHJ1ZTsKPiA+ICsgICAgIHNwaW5fdW5sb2NrKCZG
UkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gKwo+ID4gKyAgICAgc3RhcnQgPSBHRVRfU0VH
Tk8oc2JpLCBlaS5ibGspOwo+ID4gKyAgICAgZW5kID0gR0VUX1NFR05PKHNiaSwgZWkuYmxrICsg
ZWkubGVuIC0gMSk7Cj4gPiArCj4gPiArICAgICAvKiBBY3F1aXJlIGdjX2xvY2sgZm9yIHZpY3Rp
bSByZXNldCwgY3Vyc2VnIHJlc2l6ZSwgYW5kIHJhbmdlIEdDICovCj4gPiArICAgICBmMmZzX2Rv
d25fd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArCj4gPiArICAgICAvKiBS
ZXNldCB0aGUgdmljdGltIGluZm9ybWF0aW9uIHRvIHByZXZlbnQgR0MgZnJvbSB0YXJnZXRpbmcg
dGhlIHJhbmdlICovCj4gPiArICAgICBmMmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmks
IHN0YXJ0LCBlbmQpOwo+ID4gKwo+ID4gKyAgICAgLyogTW92ZSBvdXQgY3Vyc2VncyBmcm9tIHRo
ZSB0YXJnZXQgcmFuZ2UgKi8KPiA+ICsgICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsg
dHlwZSA8IE5SX0NVUlNFR19QRVJTSVNUX1RZUEU7IHR5cGUrKykgewo+ID4gKyAgICAgICAgICAg
ICBlcnIgPSBmMmZzX2FsbG9jYXRlX3NlZ21lbnRfZm9yX3Jlc2l6ZShzYmksIHR5cGUsIHN0YXJ0
LCBlbmQpOwo+ID4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gb3V0X2djX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGYyZnNf
bG9ja19vcChzYmksICZsYyk7Cj4gPiArCj4gPiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2Zs
YWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJyID0g
LUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4g
KyAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAr
ICAgICAvKiBkbyBHQyB0byBtb3ZlIG91dCB2YWxpZCBibG9ja3MgaW4gdGhlIHJhbmdlIGFsbCBh
dCBvbmNlISAqLwo+ID4gKyAgICAgZXJyID0gZjJmc19nY19yYW5nZShzYmksIHN0YXJ0LCBlbmQs
IGZhbHNlLCAwKTsKPiA+ICsgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgZjJmc191
bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7
Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBjb3VudCA9IGVpLmxlbjsKPiA+ICsgICAgIGVy
ciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIGZhbHNlKTsKPgo+
IEhtbS4uIHNlZW1zIGlmIGRldmljZSBhbGlhcyBmaWxlIGlzIDRHQiwgd2UgaGF2ZSByZXNlcnZl
ZCA0R0IgYnkgc2V0Cj4gYWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIHRvIDRHQiwgaGVyZSB3ZSB3YW50
IHRvIGFsbG9jYXRlIGFub3RoZXIgNEdCPwo+IEl0IHdpbGwgZmFpbCBpZiB0aGUgbGVmdCBzcGFj
ZSBpcyBsZXNzIHRoYW4gNEdCLCBzZWVtcyBub3QgbWFrZSBzZW5zZS4KPgo+IE1heWJlIHdlIGNh
biBhZGQgYW5vdGhlciBwYXJhbWV0ZXIgdG8gbGV0IGluY192YWxpZF9ibG9ja19jb3VudCB0byAx
KQo+IGluY3JlYXNlIHRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50IGFuZCAyKSBkZWNyZWFzZSBhbGlh
c19yZXNlcnZlZF9ibG9ja3MKPiBhdG9taWNhbGx5IHVuZGVyIHByb3RldGlvbiBvZiBzdGF0X2xv
Y2s/IFRob3VnaHRzPwo+Cj4KPiA+ICsgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAg
ZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9nY191
bmxvY2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9s
b2NrKTsKPiA+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIC09IGVpLmxlbjsKPiA+
ICsgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPiArCj4gPiArICAgICBpZiAo
ZXQpIHsKPgo+IEFueSBjYXNlIHRoYXQgZXQgaXMgTlVMTD8KPgo+ID4gKyAgICAgICAgICAgICB3
cml0ZV9sb2NrKCZldC0+bG9jayk7Cj4gPiArICAgICAgICAgICAgIGV0LT5sYXJnZXN0ID0gZWk7
Cj4gPiArICAgICAgICAgICAgIHdyaXRlX3VubG9jaygmZXQtPmxvY2spOwo+ID4gKyAgICAgfQo+
ID4gKyAgICAgY2xlYXJfaW5vZGVfZmxhZyhpbm9kZSwgRklfTk9fRVhURU5UKTsKPiA+ICsKPiA+
ICsgICAgIGYyZnNfcmVzZXJ2ZV9kZXZpY2VfYWxpYXMoc2JpLCBlaS5ibGssIGVpLmxlbik7Cj4g
PiArCj4gPiArICAgICBpX3NpemVfd3JpdGUoaW5vZGUsIChsb2ZmX3QpZWkubGVuIDw8IFBBR0Vf
U0hJRlQpOwo+Cj4gPDwgc2JpLT5ibG9ja3NpemU/IGluIGNhc2UgcGFnZV9zaXplIGlzIG5vdCBl
cXVhbHMgdG8gYmxvY2tzaXplLgo+Cj4gPiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlu
b2RlKTsKPiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2Nr
KTsKPiA+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSku
aXNfcmVzZXJ2aW5nID0gZmFsc2U7Cj4gPiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSkt
PnNlZ21hcF9sb2NrKTsKPiA+ICsKPiA+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsK
PiA+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiAr
Cj4gPiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4gKyAgICAgbW50X2Ryb3Bfd3JpdGVf
ZmlsZShmaWxwKTsKPiA+ICsKPiA+ICsgICAgIGVyciA9IGYyZnNfd3JpdGVfY2hlY2twb2ludChz
YmksICZjcGMpOwo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ICsKPiA+ICtvdXRfZ2NfdW5sb2Nr
Ogo+ID4gKyAgICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPiArICAgICBzYmktPmFs
aWFzX3Jlc2VydmVkX2Jsb2NrcyAtPSBlaS5sZW47Cj4gPiArICAgICBzcGluX3VubG9jaygmc2Jp
LT5zdGF0X2xvY2spOwo+ID4gKwo+ID4gKyAgICAgc3Bpbl9sb2NrKCZGUkVFX0koc2JpKS0+c2Vn
bWFwX2xvY2spOwo+ID4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBl
aS5ibGspKS5pc19yZXNlcnZpbmcgPSBmYWxzZTsKPiA+ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVF
X0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gKyAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2Jp
LT5nY19sb2NrLCAmZ2xjKTsKPiA+ICsKPgo+IG91dF9pbm9kZV91bmxvY2s6Cj4KPiA+ICsgICAg
IGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHAp
Owo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ICsKPiA+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4g
KyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUo
ZmlscCk7Cj4gPiArICAgICByZXR1cm4gZXJyOwo+Cj4gQ2FuIGJlIHJlbW92ZWQuCj4KPiA+ICt9
Cj4gPiArCj4gPiArc3RhdGljIGludCBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyhzdHJ1Y3Qg
ZmlsZSAqZmlscCkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9p
bm9kZShmaWxwKTsKPiA+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9T
Qihpbm9kZSk7Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2Rl
KS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWkg
PSB7MCwgfTsKPiA+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfU1lOQywgMCwg
MCwgMCB9Owo+ID4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4gPiAr
ICAgICBpbnQgZXJyOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4p
KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gKyAgICAgaWYgKHVu
bGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+ID4gKyAgICAg
ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgIGVyciA9IG1udF93YW50X3dy
aXRlX2ZpbGUoZmlscCk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICByZXR1
cm4gZXJyOwo+ID4gKwo+ID4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPiArCj4gPiArICAg
ICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJy
ID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4g
KyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKCFGMkZTX0hBU19CTE9DS1MoaW5vZGUpKSB7Cj4g
PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2Rl
X3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGVyciA9IGZpbGVtYXBfd3JpdGVf
YW5kX3dhaXQoaW5vZGUtPmlfbWFwcGluZyk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAgICAg
ICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPiArCj4gPiArICAgICByZWFkX2xvY2so
JmV0LT5sb2NrKTsKPiA+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4gPiArICAgICByZWFkX3Vu
bG9jaygmZXQtPmxvY2spOwo+Cj4gRG8gd2UgbmVlZCB0byBkbyBzYW5pdHkgY2hlY2sgb24gd2hl
dGhlciBzdGFydC9lbmQgb2YgZGV2aWNlIGFsaWFzIGZpbGUKPiBhcmUgYWxpZ25lZCB0byBzZWN0
aW9uLXNpemU/IG1heSBiZSBpbiBzYW5pdHlfY2hlY2tfZXh0ZW50X2NhY2hlKCk/CgpUaGFua3Mg
Zm9yIGFsbCB0aGUgY29tbWVudHMuIEkgYWNjZXB0ZWQgYWxsIG90aGVyIGNvbW1lbnRzLgoKSW4g
c2FuaXR5X2NoZWNrX2V4dGVudF9jYWNoZSgpLCB3ZSBhbHJlYWR5IHZlcmlmeSB0aGF0IHRoZSBl
eHRlbnQKcmFuZ2Ugb2YgYSBkZXZpY2UgYWxpYXMgaW5vZGUgKGVpLmJsayBhbmQgZWkubGVuKSBt
YXRjaGVzIHRoZSBleGFjdApzdGFydCBhbmQgZW5kIGJsb2NrIG9mIGEgc2Vjb25kYXJ5IGRldmlj
ZSAoRkRFVihkZXZpKS5zdGFydF9ibGsgYW5kCkZERVYoZGV2aSkuZW5kX2Jsayk6ClNpbmNlIGV2
ZXJ5IHNlY29uZGFyeSBibG9jayBkZXZpY2UgaW4gRjJGUyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQg
dG8gYmUKYWxpZ25lZCB0byBzZWN0aW9uIGJvdW5kYXJpZXMsIG1hdGNoaW5nIHRoZSBleHRlbnQg
YWdhaW5zdCBGREVWKGRldmkpCmluaGVyZW50bHkgZ3VhcmFudGVlcyBzZWN0aW9uIGFsaWdubWVu
dCBmb3IgdGhlIGRldmljZSBhbGlhcyBmaWxlIGFzCndlbGwuCgpUaGVyZWZvcmUsIGFkZGluZyBh
biBleHBsaWNpdCBzZWN0aW9uIGFsaWdubWVudCBjaGVjayBpbgpzYW5pdHlfY2hlY2tfZXh0ZW50
X2NhY2hlKCkgc2VlbXMgcmVkdW5kYW50LgoKPgo+ID4gKwo+ID4gKyAgICAgZjJmc19kb3duX3dy
aXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4gKyAgICAgZjJmc19sb2NrX29wKHNi
aSwgJmxjKTsKPiA+ICsKPiA+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2Jp
LCBTQklfQ1BfRElTQUJMRUQpKSkgewo+ID4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+
ID4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAg
ICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArICAgICAg
ICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAg
IHRydW5jYXRlX3NldHNpemUoaW5vZGUsIDApOwo+ID4gKwo+Cj4gVG8gYXZvaWQgcmFjaW5nIHcv
IG1tYXA/Cj4KPiBmaWxlbWFwX2ludmFsaWRhdGVfbG9jayhpbm9kZS0+aV9tYXBwaW5nKTsKPgo+
ID4gKyAgICAgZXJyID0gZjJmc190cnVuY2F0ZV9ibG9ja3MoaW5vZGUsIDAsIGZhbHNlKTsKPgo+
IGZpbGVtYXBfaW52YWxpZGF0ZV91bmxvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4KPiA+ICsgICAg
IGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90
KWVpLmxlbiA8PCBQQUdFX1NISUZUKTsKPgo+IDw8IHNiaS0+YmxvY2tzaXplPyBpbiBjYXNlIHBh
Z2Vfc2l6ZSBpcyBub3QgZXF1YWxzIHRvIGJsb2Nrc2l6ZS4KPgo+ID4gKyAgICAgICAgICAgICBm
MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGYyZnNfdXBfd3JpdGVf
dHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu
b2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGYyZnNfdXBkYXRlX2lub2Rl
X3BhZ2UoaW5vZGUpOwo+ID4gKwo+ID4gKyAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+
ID4gKyAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+ICsK
PiA+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiArICAgICBtbnRfZHJvcF93cml0ZV9m
aWxlKGZpbHApOwo+ID4gKwo+ID4gKyAgICAgZXJyID0gZjJmc193cml0ZV9jaGVja3BvaW50KHNi
aSwgJmNwYyk7Cj4KPiByZXR1cm4gZjJmc193cml0ZV9jaGVja3BvaW50KHNiaSwgJmNwYyk7Cj4K
PiA+ICsgICAgIHJldHVybiBlcnI7Cj4gPiArCj4gPiArb3V0X2lub2RlX3VubG9jazoKPiA+ICsg
ICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZp
bHApOwo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIGludCBm
MmZzX2lvY19pb19wcmlvKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+
ICB7Cj4gPiAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+
IEBAIC00NzQyLDggKzUwMDUsMTQgQEAgc3RhdGljIGxvbmcgX19mMmZzX2lvY3RsKHN0cnVjdCBm
aWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+ICAgICAg
ICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2NvbXByZXNzX2ZpbGUoZmlscCk7Cj4gPiAgICAgICBj
YXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRToKPiA+ICAgICAgICAgICAgICAgcmV0dXJu
IGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfZmlsZShmaWxwLCBhcmcpOwo+ID4gKyAgICAgY2FzZSBG
MkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzoKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGYy
ZnNfaW9jX2dldF9kZXZfYWxpYXNfc3RhdHVzKGZpbHAsIGFyZyk7Cj4gPiAgICAgICBjYXNlIEYy
RlNfSU9DX0lPX1BSSU86Cj4gPiAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19pb19wcmlv
KGZpbHAsIGFyZyk7Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+
ID4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfcmVzZXJ2ZV9kZXZfYWxpYXMoZmlscCk7
Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX1JFTEVBU0VfREVWX0FMSUFTOgo+ID4gKyAgICAgICAg
ICAgICByZXR1cm4gZjJmc19pb2NfcmVsZWFzZV9kZXZfYWxpYXMoZmlscCk7Cj4gPiAgICAgICBk
ZWZhdWx0Ogo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT1RUWTsKPiA+ICAgICAgIH0KPiA+
IEBAIC01NTMwLDcgKzU3OTksMTAgQEAgbG9uZyBmMmZzX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmls
ZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgICAgICBj
YXNlIEYyRlNfSU9DX0RFQ09NUFJFU1NfRklMRToKPiA+ICAgICAgIGNhc2UgRjJGU19JT0NfQ09N
UFJFU1NfRklMRToKPiA+ICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19GSUxFOgo+
ID4gKyAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzoKPiA+ICAgICAgIGNh
c2UgRjJGU19JT0NfSU9fUFJJTzoKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVTRVJWRV9ERVZf
QUxJQVM6Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX1JFTEVBU0VfREVWX0FMSUFTOgo+ID4gICAg
ICAgICAgICAgICBicmVhazsKPiA+ICAgICAgIGRlZmF1bHQ6Cj4gPiAgICAgICAgICAgICAgIHJl
dHVybiAtRU5PSU9DVExDTUQ7Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9nYy5jIGIvZnMvZjJm
cy9nYy5jCj4gPiBpbmRleCBmZmFhN2JhNzZhMWIuLjkzYmNiMzVhNWI1ZCAxMDA2NDQKPiA+IC0t
LSBhL2ZzL2YyZnMvZ2MuYwo+ID4gKysrIGIvZnMvZjJmcy9nYy5jCj4gPiBAQCAtMjE5NywyOSAr
MjE5NywzNyBAQCBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4g
PiAgICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0
aW1fcmVzb3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCkKPiA+ICt7Cj4gPiAr
ICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2Vn
bGlzdF9sb2NrKTsKPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9MSUNZOyBpKysp
Cj4gPiArICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtpXSA+PSBzdGFy
dCAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3RfdmljdGltW2ld
IDw9IGVuZCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5sYXN0X3ZpY3Rp
bVtpXSA9IDA7Cj4gPiArCj4gPiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBGR19HQzsgaSsr
KQo+ID4gKyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0gPj0gc3RhcnQg
JiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tpXSA8PSBl
bmQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0gPSBO
VUxMX1NFR05POwo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3Rf
bG9jayk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgZnJlZV9zZWdtZW50X3JhbmdlKHN0
cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzZWNzLCBib29sIGRyeV9ydW4pCj4gPiAgewo+ID4gICAgICAgdW5zaWdu
ZWQgaW50IG5leHRfaW51c2UsIHN0YXJ0LCBlbmQ7Cj4gPiAgICAgICBzdHJ1Y3QgY3BfY29udHJv
bCBjcGMgPSB7IENQX1JFU0laRSwgMCwgMCwgMCB9Owo+ID4gLSAgICAgaW50IGdjX21vZGUsIGdj
X3R5cGU7Cj4gPiAgICAgICBpbnQgZXJyID0gMDsKPiA+ICAgICAgIGludCB0eXBlOwo+ID4KPiA+
IC0gICAgIC8qIEZvcmNlIGJsb2NrIGFsbG9jYXRpb24gZm9yIEdDICovCj4gPiAgICAgICBNQUlO
X1NFQ1Moc2JpKSAtPSBzZWNzOwo+ID4gICAgICAgc3RhcnQgPSBNQUlOX1NFQ1Moc2JpKSAqIFNF
R1NfUEVSX1NFQyhzYmkpOwo+ID4gICAgICAgZW5kID0gTUFJTl9TRUdTKHNiaSkgLSAxOwo+ID4K
PiA+IC0gICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+IC0g
ICAgIGZvciAoZ2NfbW9kZSA9IDA7IGdjX21vZGUgPCBNQVhfR0NfUE9MSUNZOyBnY19tb2RlKysp
Cj4gPiAtICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtnY19tb2RlXSA+
PSBzdGFydCkKPiA+IC0gICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5sYXN0X3ZpY3Rp
bVtnY19tb2RlXSA9IDA7Cj4gPiAtCj4gPiAtICAgICBmb3IgKGdjX3R5cGUgPSBCR19HQzsgZ2Nf
dHlwZSA8PSBGR19HQzsgZ2NfdHlwZSsrKQo+ID4gLSAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0
X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPj0gc3RhcnQpCj4gPiAtICAgICAgICAgICAgICAgICAgICAg
c2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPSBOVUxMX1NFR05POwo+ID4gLSAgICAgbXV0
ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPiArICAgICBmMmZzX3Jl
c2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmksIHN0YXJ0LCBlbmQpOwo+ID4KPiA+ICAgICAgIC8q
IE1vdmUgb3V0IGN1cnNlZ3MgZnJvbSB0aGUgdGFyZ2V0IHJhbmdlICovCj4gPiAgICAgICBmb3Ig
KHR5cGUgPSBDVVJTRUdfSE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0
eXBlKyspIHsKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL25hbWVpLmMgYi9mcy9mMmZzL25hbWVp
LmMKPiA+IGluZGV4IGNhYzAzYjhlOTFhMS4uOGMzYjU3OTg3ZjZjIDEwMDY0NAo+ID4gLS0tIGEv
ZnMvZjJmcy9uYW1laS5jCj4gPiArKysgYi9mcy9mMmZzL25hbWVpLmMKPiA+IEBAIC00MjUsNiAr
NDI1LDkgQEAgc3RhdGljIGludCBmMmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwg
c3RydWN0IGlub2RlICpkaXIsCj4gPiAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFk
eShzYmkpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT1NQQzsKPiA+Cj4gPiArICAgICBp
ZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1F
UEVSTTsKPiA+ICsKPiA+ICAgICAgIGVyciA9IGZzY3J5cHRfcHJlcGFyZV9saW5rKG9sZF9kZW50
cnksIGRpciwgZGVudHJ5KTsKPiA+ICAgICAgIGlmIChlcnIpCj4gPiAgICAgICAgICAgICAgIHJl
dHVybiBlcnI7Cj4gPiBAQCAtNTY4LDYgKzU3MSw5IEBAIHN0YXRpYyBpbnQgZjJmc191bmxpbmso
c3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKPiA+Cj4gPiAgICAgICB0
cmFjZV9mMmZzX3VubGlua19lbnRlcihkaXIsIGRlbnRyeSk7Cj4gPgo+ID4gKyAgICAgaWYgKElT
X0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07
Cj4gPiArCj4gPiAgICAgICBpZiAodW5saWtlbHkoZjJmc19jcF9lcnJvcihzYmkpKSkgewo+ID4g
ICAgICAgICAgICAgICBlcnIgPSAtRUlPOwo+ID4gICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+
IEBAIC05NDYsNiArOTUyLDkgQEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lk
bWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAo+ID4gICAgICAgYm9vbCBvbGRfaXNf
ZGlyID0gU19JU0RJUihvbGRfaW5vZGUtPmlfbW9kZSk7Cj4gPiAgICAgICBpbnQgZXJyOwo+ID4K
PiA+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSkKPiA+ICsgICAgICAg
ICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICAgICAgIGlmICh1bmxpa2VseShmMmZzX2Nw
X2Vycm9yKHNiaSkpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPiA+ICAgICAgIGlm
ICghZjJmc19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4gPiBAQCAtMTAxNiw2ICsxMDI1LDgg
QEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0
IGlub2RlICpvbGRfZGlyLAo+ID4gICAgICAgfQo+ID4KPiA+ICAgICAgIGlmIChuZXdfaW5vZGUp
IHsKPiA+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhuZXdfaW5vZGUpKQo+
ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPgo+ID4gICAgICAgICAg
ICAgICBlcnIgPSAtRU5PVEVNUFRZOwo+ID4gICAgICAgICAgICAgICBpZiAob2xkX2lzX2RpciAm
JiAhZjJmc19lbXB0eV9kaXIobmV3X2lub2RlKSkKPiA+IEBAIC0xMTQzLDYgKzExNTQsOSBAQCBz
dGF0aWMgaW50IGYyZnNfY3Jvc3NfcmVuYW1lKHN0cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0
IGRlbnRyeSAqb2xkX2RlbnRyeSwKPiA+ICAgICAgIGludCBvbGRfbmxpbmsgPSAwLCBuZXdfbmxp
bmsgPSAwOwo+ID4gICAgICAgaW50IGVycjsKPiA+Cj4gPiArICAgICBpZiAoSVNfREVWSUNFX0FM
SUFTSU5HKG9sZF9pbm9kZSkgfHwgSVNfREVWSUNFX0FMSUFTSU5HKG5ld19pbm9kZSkpCj4gPiAr
ICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiAgICAgICBpZiAodW5saWtlbHko
ZjJmc19jcF9lcnJvcihzYmkpKSkKPiA+ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPiAg
ICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4gZGlmZiAtLWdpdCBh
L2ZzL2YyZnMvc2VnbWVudC5jIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+IGluZGV4IGQ3MWRkYjNl
ZTkxOC4uMTIwMmJkZTMzOTBhIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmMKPiA+
ICsrKyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4gPiBAQCAtMjUwMiwzNSArMjUwMiw0MiBAQCBzdGF0
aWMgaW50IHVwZGF0ZV9zaXRfZW50cnlfZm9yX2FsbG9jKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi
aSwgc3RydWN0IHNlZ19lbnRyeQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNlZ25vLCBibG9ja190IGJsa2FkZHIsIHVuc2lnbmVkIGludCBvZmZzZXQsIGlu
dCBkZWwpCj4gPiAgewo+ID4gICAgICAgYm9vbCBleGlzdDsKPiA+ICsgICAgIGludCBkZWxfY291
bnQgPSBkZWw7Cj4gPiArICAgICBpbnQgaTsKPiA+Cj4gPiAtICAgICBleGlzdCA9IGYyZnNfdGVz
dF9hbmRfc2V0X2JpdChvZmZzZXQsIHNlLT5jdXJfdmFsaWRfbWFwKTsKPiA+IC0gICAgIGlmICh1
bmxpa2VseShleGlzdCkpIHsKPiA+IC0gICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFw
IHdhcyB3cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxrYWRkcik7Cj4gPiAtICAgICAgICAgICAgIGYy
ZnNfYnVnX29uKHNiaSwgMSk7Cj4gPiAtICAgICAgICAgICAgIHNlLT52YWxpZF9ibG9ja3MtLTsK
PiA+IC0gICAgICAgICAgICAgZGVsID0gMDsKPiA+IC0gICAgIH0KPiA+ICsgICAgIGYyZnNfYnVn
X29uKHNiaSwgR0VUX1NFR05PKHNiaSwgYmxrYWRkcikgIT0gR0VUX1NFR05PKHNiaSwgYmxrYWRk
ciArIGRlbF9jb3VudCAtIDEpKTsKPiA+Cj4gPiAtICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rp
c2NhcmQoc2JpKSAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICFmMmZzX3Rlc3RfYW5kX3Nl
dF9iaXQob2Zmc2V0LCBzZS0+ZGlzY2FyZF9tYXApKQo+ID4gLSAgICAgICAgICAgICBzYmktPmRp
c2NhcmRfYmxrcy0tOwo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IGRlbF9jb3VudDsgaSsrKSB7
Cj4gPiArICAgICAgICAgICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCAr
IGksIHNlLT5jdXJfdmFsaWRfbWFwKTsKPiA+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGV4
aXN0KSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfZXJyKHNiaSwgIkJpdG1hcCB3
YXMgd3JvbmdseSBzZXQsIGJsazoldSIsIGJsa2FkZHIgKyBpKTsKPiA+ICsgICAgICAgICAgICAg
ICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNl
LT52YWxpZF9ibG9ja3MtLTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZWwgLT0gMTsKPiA+
ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsgICAgICAgICAgICAgfQo+ID4K
PiA+IC0gICAgIC8qCj4gPiAtICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJldXNlIGJsb2NrIHdo
aWNoIGlzIGNoZWNrcG9pbnRlZAo+ID4gLSAgICAgICogb3IgbmV3bHkgaW52YWxpZGF0ZWQuCj4g
PiAtICAgICAgKi8KPiA+IC0gICAgIGlmICghaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJ
U0FCTEVEKSkgewo+ID4gLSAgICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChv
ZmZzZXQsIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICBz
ZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoX19p
c19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcysrOwo+ID4gKyAgICAg
ICAgICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rpc2NhcmQoc2JpKSAmJgo+ID4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBz
ZS0+ZGlzY2FyZF9tYXApKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+ZGlzY2FyZF9i
bGtzLS07Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qCj4gPiArICAgICAgICAgICAgICAqIFNT
UiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hpY2ggaXMgY2hlY2twb2ludGVkCj4gPiArICAg
ICAgICAgICAgICAqIG9yIG5ld2x5IGludmFsaWRhdGVkLgo+ID4gKyAgICAgICAgICAgICAgKi8K
PiA+ICsgICAgICAgICAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJM
RUQpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYW5kX3NldF9i
aXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubykt
PmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAg
ICAgICAgICAgICB9Cj4gPiAtICAgICB9Cj4gPgo+ID4gLSAgICAgaWYgKCFmMmZzX3Rlc3RfYml0
KG9mZnNldCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4gLSAgICAgICAgICAgICBzZS0+Y2tw
dF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4gLSAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9z
ZWN0aW9uKHNiaSkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmks
IHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4gKyAgICAgICAgICAgICBpZiAo
IWYyZnNfdGVzdF9iaXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4gKyAg
ICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRfdmFs
aWRfYmxvY2tzICs9IDE7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICAgICAgIH0KPiA+Cj4gPiAg
ICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPiBAQCAtMjU4NSw5ICsyNTkyLDE0
IEBAIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks
IGJsb2NrX3QgYWRkciwKPiA+ICAgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IEdFVF9TRUdOTyhz
YmksIGFkZHIpOwo+ID4gICAgICAgc3RydWN0IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7
Cj4gPiAgICAgICBibG9ja190IGFkZHJfc3RhcnQgPSBhZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBs
ZW4gLSAxOwo+ID4gLSAgICAgdW5zaWduZWQgaW50IHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBh
ZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPiA+
ICAgICAgIHVuc2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9z
ZWcsIGNudDsKPiA+Cj4gPiArICAgICBpZiAobGVuID09IDApCj4gPiArICAgICAgICAgICAgIHJl
dHVybjsKPiA+ICsKPiA+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkg
LSBzZWdubyArIDE7Cj4gPiArCj4gPiAgICAgICBmMmZzX2J1Z19vbihzYmksIGFkZHIgPT0gTlVM
TF9BRERSKTsKPiA+ICAgICAgIGlmIChhZGRyID09IE5FV19BRERSIHx8IGFkZHIgPT0gQ09NUFJF
U1NfQUREUikKPiA+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gQEAgLTI2MjAsNiArMjYzMiw1
MiBAQCB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp
LCBibG9ja190IGFkZHIsCj4gPiAgICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRyeV9sb2NrKTsK
PiA+ICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJm
c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBsZW4pCj4gPiArewo+ID4gKyAgICAgdW5zaWduZWQgaW50IHNl
Z25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPiArICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNp
dF9pID0gU0lUX0koc2JpKTsKPiA+ICsgICAgIGJsb2NrX3QgYWRkcl9zdGFydCA9IGFkZHIsIGFk
ZHJfZW5kID0gYWRkciArIGxlbiAtIDE7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsK
PiA+ICsgICAgIHVuc2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Bl
cl9zZWcsIGNudDsKPiA+ICsKPiA+ICsgICAgIGlmIChsZW4gPT0gMCkKPiA+ICsgICAgICAgICAg
ICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJf
ZW5kKSAtIHNlZ25vICsgMTsKPiA+ICsKPiA+ICsgICAgIGRvd25fd3JpdGUoJnNpdF9pLT5zZW50
cnlfbG9jayk7Cj4gPiArCj4gPiArICAgICBpZiAoc2VnX251bSA9PSAxKQo+ID4gKyAgICAgICAg
ICAgICBjbnQgPSBsZW47Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIGNudCA9IG1h
eF9ibG9ja3MgLSBHRVRfQkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4gKwo+ID4gKyAg
ICAgZG8gewo+ID4gKyAgICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGltZShzYmksIGFkZHJf
c3RhcnQsIDApOwo+ID4gKyAgICAgICAgICAgICB1cGRhdGVfc2l0X2VudHJ5KHNiaSwgYWRkcl9z
dGFydCwgY250KTsKPiA+ICsgICAgICAgICAgICAgX19zZXRfdGVzdF9hbmRfaW51c2Uoc2JpLCBz
ZWdubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc2VnbWVudCBmcm9t
IFBSRSAocHJlZnJlZSkgdG8gcHJldmVudCBjaGVja3BvaW50IGZyb20gZnJlZWluZyBpdCEgKi8K
PiA+ICsgICAgICAgICAgICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp
Owo+ID4gKyAgICAgICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KHNlZ25vLCBESVJUWV9J
KHNiaSktPmRpcnR5X3NlZ21hcFtQUkVdKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBESVJU
WV9JKHNiaSktPm5yX2RpcnR5W1BSRV0tLTsKPiA+ICsgICAgICAgICAgICAgbXV0ZXhfdW5sb2Nr
KCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8q
IGFkZCBpdCBpbnRvIGRpcnR5IHNlZ2xpc3QgKi8KPiA+ICsgICAgICAgICAgICAgbG9jYXRlX2Rp
cnR5X3NlZ21lbnQoc2JpLCBzZWdubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIHVwZGF0
ZSBAYWRkcl9zdGFydCBhbmQgQGNudCBhbmQgQHNlZ25vICovCj4gPiArICAgICAgICAgICAgIGFk
ZHJfc3RhcnQgPSBTVEFSVF9CTE9DSyhzYmksICsrc2Vnbm8pOwo+ID4gKyAgICAgICAgICAgICBp
ZiAoKytpID09IHNlZ19udW0pCj4gPiArICAgICAgICAgICAgICAgICAgICAgY250ID0gR0VUX0JM
S09GRl9GUk9NX1NFRzAoc2JpLCBhZGRyX2VuZCkgKyAxOwo+ID4gKyAgICAgICAgICAgICBlbHNl
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgY250ID0gbWF4X2Jsb2NrczsKPiA+ICsgICAgIH0g
d2hpbGUgKGkgPD0gc2VnX251bSk7Cj4gPiArCj4gPiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNl
bnRyeV9sb2NrKTsKPiA+ICt9Cj4gPiArCj4gPiAgYm9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9k
YXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKQo+ID4gIHsKPiA+
ICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+ID4gQEAgLTI3NTgs
OCArMjgxNiwxMyBAQCBzdGF0aWMgaW50IGlzX25leHRfc2VnbWVudF9mcmVlKHN0cnVjdCBmMmZz
X3NiX2luZm8gKnNiaSwKPiA+ICAgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IGN1cnNlZy0+c2Vn
bm8gKyAxOwo+ID4gICAgICAgc3RydWN0IGZyZWVfc2VnbWFwX2luZm8gKmZyZWVfaSA9IEZSRUVf
SShzYmkpOwo+ID4KPiA+IC0gICAgIGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25v
ICUgU0VHU19QRVJfU0VDKHNiaSkpCj4gPiArICAgICBpZiAoc2Vnbm8gPCBNQUlOX1NFR1Moc2Jp
KSAmJiBzZWdubyAlIFNFR1NfUEVSX1NFQyhzYmkpKSB7Cj4gPiArICAgICAgICAgICAgIGludCBk
ZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdu
bykpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNfcmVzZXJ2aW5nKHNi
aSwgZGV2aSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgICAgICAg
ICAgICAgIHJldHVybiAhdGVzdF9iaXQoc2Vnbm8sIGZyZWVfaS0+ZnJlZV9zZWdtYXApOwo+ID4g
KyAgICAgfQo+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+IEBAIC0yNzc4LDcgKzI4
NDEsOCBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz
YmksCj4gPiAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NfcG9saWN5ID0gc2JpLT5hbGxvY2F0ZV9z
ZWN0aW9uX3BvbGljeTsKPiA+ICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19oaW50ID0gc2JpLT5h
bGxvY2F0ZV9zZWN0aW9uX2hpbnQ7Cj4gPiAgICAgICBib29sIGluaXQgPSB0cnVlOwo+ID4gLSAg
ICAgaW50IGk7Cj4gPiArICAgICBib29sIGxvb3BlZCA9IGZhbHNlOwo+ID4gKyAgICAgaW50IGks
IGRldmk7Cj4gPiAgICAgICBpbnQgcmV0ID0gMDsKPiA+Cj4gPiAgICAgICBzcGluX2xvY2soJmZy
ZWVfaS0+c2VnbWFwX2xvY2spOwo+ID4gQEAgLTI3OTEsOCArMjg1NSwxMyBAQCBzdGF0aWMgaW50
IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICBpZiAo
IW5ld19zZWMgJiYgKCgqbmV3c2VnICsgMSkgJSBTRUdTX1BFUl9TRUMoc2JpKSkpIHsKPiA+ICAg
ICAgICAgICAgICAgc2Vnbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlZ21h
cCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCAr
IDEpLCAqbmV3c2VnICsgMSk7Cj4gPiAtICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdf
RlJPTV9TRUMoc2JpLCBoaW50ICsgMSkpCj4gPiArICAgICAgICAgICAgIGlmIChzZWdubyA8IEdF
VF9TRUdfRlJPTV9TRUMoc2JpLCBoaW50ICsgMSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAg
ICBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBz
ZWdubykpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19h
bGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykpCj4gPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIGdvdF9pdDsKPiA+ICsgICAgICAgICAgICAgfQo+ID4gICAgICAgfQo+ID4KPiA+ICAj
aWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+IEBAIC0yODI4LDMzICsyODk3LDQyIEBAIHN0
YXRpYyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICBm
aW5kX290aGVyX3pvbmU6Cj4gPiAgICAgICBzZWNubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVl
X2ktPmZyZWVfc2VjbWFwLCBNQUlOX1NFQ1Moc2JpKSwgaGludCk7Cj4gPgo+ID4gLSNpZmRlZiBD
T05GSUdfQkxLX0RFVl9aT05FRAo+ID4gLSAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkp
ICYmIGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkpIHsKPiA+IC0gICAgICAgICAgICAgLyogV3Jp
dGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4gPiAtICAgICAgICAgICAgIGlmIChzYmkt
PmJsa3pvbmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05MWV9TRVEpIHsKPiA+IC0g
ICAgICAgICAgICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIHNiaS0+Zmly
c3Rfc2VxX3pvbmVfc2Vnbm8pOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHNlY25vID0gZmlu
ZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50
KTsKPiA+IC0gICAgICAgICAgICAgfSBlbHNlCj4gPiAtICAgICAgICAgICAgICAgICAgICAgc2Vj
bm8gPSBmaW5kX2ZpcnN0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsCj4gPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1B
SU5fU0VDUyhzYmkpKTsKPiA+IC0gICAgICAgICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhz
YmkpKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPiA+IC0gICAg
ICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+ID4gLSAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiA+IC0gICAgICAgICAgICAgfQo+ID4gLSAgICAgfQo+
ID4gLSNlbmRpZgo+ID4gLQo+ID4gICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7
Cj4gPiAtICAgICAgICAgICAgIHNlY25vID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZy
ZWVfc2VjbWFwLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTUFJTl9TRUNTKHNiaSkpOwo+ID4gLSAgICAgICAgICAgICBpZiAoc2Vjbm8g
Pj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+ICsgICAgICAgICAgICAgaWYgKGxvb3BlZCkgewo+ID4g
ICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9TUEM7Cj4gPiAgICAgICAgICAgICAgICAg
ICAgICAgZjJmc19idWdfb24oc2JpLCAhcGlubmluZyk7Cj4gPiAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBvdXRfdW5sb2NrOwo+ID4gICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAg
IGhpbnQgPSAwOwo+ID4gKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4gKyAgICAgICAg
ICAgICAvKiBXcml0ZSBvbmx5IHRvIHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+ICsgICAgICAgICAg
ICAgaWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYKPiA+ICsgICAgICAgICAgICAgICAg
ICAgICBzYmktPmJsa3pvbmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05MWV9TRVEp
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUcoc2JpLCBz
YmktPmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPiA+ICsjZW5kaWYKPiA+ICsgICAgICAgICAgICAg
bG9vcGVkID0gdHJ1ZTsKPiA+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7Cj4g
PiAgICAgICB9Cj4gPiArCj4gPiAgICAgICBzZWdubyA9IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBz
ZWNubyk7Cj4gPiArCj4gPiArICAgICBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNi
aSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+ID4gKwo+ID4gKyAgICAgaWYgKGYyZnNfZGV2
X2lzX2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4gKyAgICAgICAgICAg
ICB3aGlsZSAoZGV2aSA8IHNiaS0+c19uZGV2cyAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAg
IGYyZnNfZGV2X2lzX2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4gKyAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlbmRfc2Vnbm8gPSBHRVRfU0VHTk8oc2Jp
LCBGREVWKGRldmkpLmVuZF9ibGspOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGhp
bnQgPSBHRVRfU0VDX0ZST01fU0VHKHNiaSwgZW5kX3NlZ25vKSArIDE7Cj4gPiArICAgICAgICAg
ICAgICAgICAgICAgZGV2aSsrOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAg
IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKHNl
Y191c2FnZV9jaGVjayhzYmksIHNlY25vKSkgewo+ID4gKyAgICAgICAgICAgICBoaW50ID0gc2Vj
bm8gKyAxOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICsgICAg
IH0KPiA+ICAgICAgIHpvbmVubyA9IEdFVF9aT05FX0ZST01fU0VDKHNiaSwgc2Vjbm8pOwo+ID4K
PiA+ICAgICAgIC8qIGdpdmUgdXAgb24gZmluZGluZyBhbm90aGVyIHpvbmUgKi8KPiA+IGRpZmYg
LS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBpbmRleCBi
MGMwNmIzNTgwYjQuLjEwNzUwOGFlN2ViMyAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvc2VnbWVu
dC5oCj4gPiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+ID4gQEAgLTk1NCwxMCArOTU0LDMyIEBA
IHN0YXRpYyBpbmxpbmUgYmxvY2tfdCBzdW1fYmxrX2FkZHIoc3RydWN0IGYyZnNfc2JfaW5mbyAq
c2JpLCBpbnQgYmFzZSwgaW50IHR5cGUpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIChiYXNlICsgMSkgKyB0eXBlOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIGlubGluZSBib29s
IGYyZnNfZGV2X2lzX3Jlc2VydmluZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBkZXZp
KQo+ID4gK3sKPiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4g
PiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiBGREVWKGRldmkp
LmlzX3Jlc2VydmluZzsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBib29sIGYyZnNf
ZGV2X2lzX2FsbG9jX2Jsb2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5uaW5nKQo+
ID4gK3sKPiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiAr
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiAocGlubmluZyAmJiBG
REVWKGRldmkpLmhhc19hbGlhcykgfHwgRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4gPiArfQo+
ID4gKwo+ID4gIHN0YXRpYyBpbmxpbmUgYm9vbCBzZWNfdXNhZ2VfY2hlY2soc3RydWN0IGYyZnNf
c2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBpbnQgc2Vjbm8pCj4gPiAgewo+ID4gICAgICAgaWYgKGlz
X2N1cnNlYyhzYmksIHNlY25vKSB8fCAoc2JpLT5jdXJfdmljdGltX3NlYyA9PSBzZWNubykpCj4g
PiAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gKyAgICAgaWYgKGYyZnNfc2JfaGFzX2Rl
dmljZV9hbGlhcyhzYmkpKSB7Cj4gPiArICAgICAgICAgICAgIGJsb2NrX3Qgc3RhcnRfYmxrID0g
U1RBUlRfQkxPQ0soc2JpLCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgc2Vjbm8pKTsKPiA+ICsgICAg
ICAgICAgICAgaW50IGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBzdGFydF9i
bGspOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNfcmVzZXJ2aW5nKHNi
aSwgZGV2aSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArICAg
ICB9Cj4gPiAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9m
cy9mMmZzL3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPiA+IGluZGV4IGM0NDhkOTkyZmYyYS4u
YmNhMTQ3NWNiNTczIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4gPiArKysgYi9m
cy9mMmZzL3N1cGVyLmMKPiA+IEBAIC01MDAxLDYgKzUwMDEsMzggQEAgc3RhdGljIHZvaWQgZjJm
c190dW5pbmdfcGFyYW1ldGVycyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgICAgICBz
YmktPnJlYWRkaXJfcmEgPSB0cnVlOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIHZvaWQgZjJmc19y
ZXN0b3JlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiArewo+ID4g
KyAgICAgc3RydWN0IGlub2RlICpyb290ID0gZF9pbm9kZShzYmktPnNiLT5zX3Jvb3QpOwo+ID4g
KyAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPiA+ICsgICAgIHN0cnVjdCBmb2xpbyAq
Zm9saW87Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNf
ZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsg
ICAgIGZvciAoaSA9IDE7IGkgPCBzYmktPnNfbmRldnM7IGkrKykgewo+ID4gKyAgICAgICAgICAg
ICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBhdGgsICcvJyk7Cj4gPiArICAgICAgICAg
ICAgIHN0cnVjdCBxc3RyIHFzdHI7Cj4gPiArCj4gPiArICAgICAgICAgICAgIG5hbWUgPSBuYW1l
ID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4gPiArICAgICAgICAgICAgIHFzdHIubmFtZSA9
IG5hbWU7Cj4gPiArICAgICAgICAgICAgIHFzdHIubGVuID0gc3RybGVuKG5hbWUpOwo+ID4gKwo+
ID4gKyAgICAgICAgICAgICBkZSA9IGYyZnNfZmluZF9lbnRyeShyb290LCAmcXN0ciwgJmZvbGlv
KTsKPiA+ICsgICAgICAgICAgICAgaWYgKGRlKSB7Cj4KPiBUcml2aWFsIGNsZWF1cCB0byBhdm9p
ZCBsb25nIGxpbmUuCj4KPiBpZiAoIWRlKQo+ICAgICAgICAgY29udGludWU7Cj4KPiBUaGFua3Ms
Cj4KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZjJmc19p
Z2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8pKTsKPiA+ICsKPiA+ICsgICAgICAgICAg
ICAgICAgICAgICBpZiAoIUlTX0VSUihpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhhc19hbGlhcyA9IHRydWU7Cj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHV0KGlub2RlKTsKPiA+ICsgICAgICAgICAg
ICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9s
aW8sIDApOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiArICAgICB9Cj4gPiArfQo+ID4gKwo+ID4g
IHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVj
dCBmc19jb250ZXh0ICpmYykKPiA+ICB7Cj4gPiAgICAgICBzdHJ1Y3QgZjJmc19mc19jb250ZXh0
ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPiA+IEBAIC01MjA5LDYgKzUyNDEsNyBAQCBzdGF0aWMg
aW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29u
dGV4dCAqZmMpCj4gPiAgICAgICBzYmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQgPSBzYmktPnRv
dGFsX3ZhbGlkX2Jsb2NrX2NvdW50Owo+ID4gICAgICAgc2JpLT5yZXNlcnZlZF9ibG9ja3MgPSAw
Owo+ID4gICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPiArICAgICBz
YmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPiAgICAgICBsaW1pdF9yZXNlcnZlX3Jv
b3Qoc2JpKTsKPiA+ICAgICAgIGFkanVzdF91bnVzYWJsZV9jYXBfcGVyYyhzYmkpOwo+ID4KPiA+
IEBAIC01NDM2LDYgKzU0NjksOCBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPiAgICAgICBmMmZzX3Vw
ZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4gICAgICAgY2xlYXJfc2JpX2ZsYWcoc2JpLCBT
QklfQ1BfRElTQUJMRURfUVVJQ0spOwo+ID4KPiA+ICsgICAgIGYyZnNfcmVzdG9yZV9kZXZpY2Vf
YWxpYXMoc2JpKTsKPiA+ICsKPiA+ICAgICAgIHNiaS0+dW1vdW50X2xvY2tfaG9sZGVyID0gTlVM
TDsKPiA+ICAgICAgIHJldHVybiAwOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkv
bGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+ID4gaW5kZXggNzk1ZTI2
MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgv
ZjJmcy5oCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oCj4gPiBAQCAtNDUsNiAr
NDUsOSBAQAo+ID4gICNkZWZpbmUgRjJGU19JT0NfU1RBUlRfQVRPTUlDX1JFUExBQ0UgICAgICAg
IF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyNSkKPiA+ICAjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZf
QUxJQVNfRklMRSAgX0lPUihGMkZTX0lPQ1RMX01BR0lDLCAyNiwgX191MzIpCj4gPiAgI2RlZmlu
ZSBGMkZTX0lPQ19JT19QUklPICAgICAgICAgICAgIF9JT1coRjJGU19JT0NUTF9NQUdJQywgMjcs
IF9fdTMyKQo+ID4gKyNkZWZpbmUgRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVMgICBfSU8oRjJG
U19JT0NUTF9NQUdJQywgMjgpCj4gPiArI2RlZmluZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElB
UyAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyOSkKPiA+ICsjZGVmaW5lIEYyRlNfSU9DX0dFVF9E
RVZfQUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9DVExfTUFHSUMsIDMwLCBfX3UzMikK
PiA+Cj4gPiAgLyoKPiA+ICAgKiBzaG91bGQgYmUgc2FtZSBhcyBYRlNfSU9DX0dPSU5HRE9XTi4K
PiA+IEBAIC03MCw2ICs3MywxMCBAQCBlbnVtIHsKPiA+ICAgICAgIEYyRlNfSU9QUklPX01BWCwK
PiA+ICB9Owo+ID4KPiA+ICsvKiBmb3IgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVMgKi8K
PiA+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAgICAgICAwCj4gPiAr
I2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgICAgICAgMQo+ID4gKwo+ID4g
IHN0cnVjdCBmMmZzX2djX3JhbmdlIHsKPiA+ICAgICAgIF9fdTMyIHN5bmM7Cj4gPiAgICAgICBf
X3U2NCBzdGFydDsKPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlz
dHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xp
c3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK