[OpenAFS-devel] Patch: Fixing some compiler warnings on AIX

Niklas Edmundsson Niklas.Edmundsson@hpc2n.umu.se
Thu, 18 Aug 2005 13:14:58 +0200 (MEST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-684387517-1124363698=:4087
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed


Hi all!

I got annoyed with the gazillions of warnings when compiling openafs, 
and decided to try to do something about it.

The attached patch fixes the following AIX specific issues:

* Remove bogus define of osi_rxWakeup in src/rx/AIX/rx_kmutex.h
* Rearrange some stuff so callbacks are defined before inserting then
   into a struct to get prototyping right, cast where appropriate to
   silence compiler.
* Fix lock_normalize to take a struct flock instead of struct eflock,
   this bug must have been here for ages but haven't been spotted due
   to the massive ignorance of compiler warnings.
* Document who calls afs_gn_strategy (I spent a few days staring at
   this before I understood what's going on).
* Fix comments that referred to naix_vm_strategy which seems to be
   renamed to afs_gn_strategy.
* Remove some AIX 3.2 only-code, openafs most likely won't work on AIX
   3.2 anyway (changes to more modern struct vnodeops will break for
   example).
* The usual function-prototyping and removing register keyword
   cleanups.

I also did some more debatable changes, I'll need some feedback on 
these:

* Removed a lot of AIX 5.1 and up specific prototyping of functions,
   at least recent AIX 4.3 can handle the types used and the #ifdef
   clutter just makes the thing hard to read.
* Fixed prototyping of rxk_GetPacketProc and rxk_PacketArrivalProc to
   handle socket as struct socket * instead of char *.


This reduces the noise considerably, at least when compiling the 
kernel module.

It seems to still work on my AIX 5.3 SMP testbox, so I don't think I 
broke anything.

There are however numerous warnings left, do these show up on other 
platforms too or only on AIX:

Function argument assignment between types "int*" and "unsigned int*"
This shows up mostly in xdr and rx related files.

Function argument assignment between types "struct timestruc_t*" and "struct timeval*"
Shows up when the XSTATS-macros are used, for example.

The UKERNEL-compile has lots and lots of "Undeclared identifier", and 
a quick browse shows that almost no include files are included so 
there are no prototypes. Why not include them like in a regular 
compile, or are there magic assumptions that breaks?

In general I think that compiler warnings should be reduced, since 
you're more likely to react on those warnings that actually indicate 
bugs if they aren't buried in lots and lots of noise.


/Nikke
-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  Niklas Edmundsson, Admin @ {acc,hpc2n}.umu.se     |    nikke@hpc2n.umu.se
---------------------------------------------------------------------------
  I never met a chocolate I didn't like. - Deanna
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
---559023410-684387517-1124363698=:4087
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=openafs-aix-warningcleanup.patch
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.4.62.0508181314580.4087@khan.acc.umu.se>
Content-Description: 
Content-Disposition: attachment; filename=openafs-aix-warningcleanup.patch

SW5kZXg6IHNyYy9hZnMvYWZzX2RhZW1vbnMuYw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvb3BlbmFmcy9zcmMvYWZzL2Fmc19k
YWVtb25zLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjMzDQpkaWZmIC11
IC1yMS4zMyBhZnNfZGFlbW9ucy5jDQotLS0gc3JjL2Fmcy9hZnNfZGFlbW9u
cy5jCTMgQXByIDIwMDUgMTg6MTM6MzAgLTAwMDAJMS4zMw0KKysrIHNyYy9h
ZnMvYWZzX2RhZW1vbnMuYwkxOCBBdWcgMjAwNSAwOTo0NTowMCAtMDAwMA0K
QEAgLTU0OCw3ICs1NDgsNiBAQA0KICAgICB9DQogfQ0KIA0KLSNpZmRlZglB
RlNfQUlYMzJfRU5WDQogI2lmZGVmIEFGU19BSVg0MV9FTlYNCiAvKiBBSVgg
NC4xIGhhcyBhIG11Y2ggZGlmZmVyZW50IHNsZWVwL3dha2V1cCBtZWNoYW5p
c20gYXZhaWxhYmxlIGZvciB1c2UuIA0KICAqIFRoZSBtb2RpZmljYXRpb25z
IGhlcmUgd2lsbCB3b3JrIGZvciBlaXRoZXIgYSBVUCBvciBNUCBtYWNoaW5l
Lg0KQEAgLTU3Miw5ICs1NzEsOSBAQA0KICAqIFRoaXMgZnVuY3Rpb24gb2J0
YWlucywgYW5kIHJldHVybnMsIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBmb3IN
CiAgKiBwcm9jZXNzaW5nIGJ5IGEgZGFlbW9uLiAgSXQgc2xlZXBzIHVudGls
IHN1Y2ggYSBidWZmZXIgaXMgYXZhaWxhYmxlLg0KICAqIFRoZSBzb3VyY2Ug
b2YgYnVmZmVycyBmb3IgaXQgaXMgdGhlIGxpc3QgYWZzX2FzeW5jYnVmIChz
ZWUgYWxzbyANCi0gKiBuYWl4X3ZtX3N0cmF0ZWd5KS4gIFRoaXMgZnVuY3Rp
b24gbWF5IGJlIGludm9rZWQgY29uY3VycmVudGx5IGJ5DQorICogYWZzX2du
X3N0cmF0ZWd5KS4gIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGludm9rZWQgY29u
Y3VycmVudGx5IGJ5DQogICogc2V2ZXJhbCBwcm9jZXNzZXMsIHRoYXQgaXMs
IHNldmVyYWwgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGRhZW1vbi4NCi0gKiBu
YWl4X3ZtX3N0cmF0ZWd5LCB3aGljaCBhZGRzIGJ1ZmZlcnMgdG8gdGhlIGxp
c3QsIHJ1bnMgYXQgaW50ZXJydXB0DQorICogYWZzX2duX3N0cmF0ZWd5LCB3
aGljaCBhZGRzIGJ1ZmZlcnMgdG8gdGhlIGxpc3QsIHJ1bnMgYXQgaW50ZXJy
dXB0DQogICogbGV2ZWwsIHdoaWxlIGdldF9iaW9yZXEgcnVucyBhdCBwcm9j
ZXNzIGxldmVsLg0KICAqDQogICogU2luY2UgQUlYIDQuMSBjYW4gd2FrZSBq
dXN0IG9uZSBwcm9jZXNzIGF0IGEgdGltZSwgdGhlIHNlcGFyYXRlIHNsZWVw
DQpAQCAtNTg0LDcgKzU4Myw3IEBADQogICogcHJvY2VzcyBhbmQgaW50ZXJy
dXB0cy4NCiAgKi8NCiBTaW1wbGVfbG9jayBhZnNfYXN5bmNidWZfbG9jazsN
Ci0vKnN0YXRpYyovIHN0cnVjdCBidWYgKg0KK3N0cnVjdCBidWYgKg0KIGFm
c19nZXRfYmlvcmVxKCkNCiB7DQogICAgIHN0cnVjdCBidWYgKmJwID0gTlVM
TDsNCkBAIC04MDAsNyArNzk5LDcgQEANCiANCiAJLyoNCiAJICogYnVmZmVy
IG1heSBiZSBsaW5rZWQgd2l0aCBvdGhlciBidWZmZXJzIHZpYSB0aGUgYl93
b3JrIGZpZWxkLg0KLQkgKiBTZWUgYWxzbyBuYWl4X3ZtX3N0cmF0ZWd5LiAg
Rm9yIGVhY2ggYnVmZmVyIGluIHRoZSBjaGFpbiAoaW5jbHVkaW5nDQorCSAq
IFNlZSBhbHNvIGFmc19nbl9zdHJhdGVneS4gIEZvciBlYWNoIGJ1ZmZlciBp
biB0aGUgY2hhaW4gKGluY2x1ZGluZw0KIAkgKiBicCkgbm90aWZ5IGFsbCB1
c2VycyBvZiB0aGUgYnVmZmVyIHRoYXQgdGhlIGRhZW1vbiBpcyBmaW5pc2hl
ZA0KIAkgKiB1c2luZyBpdCBieSBjYWxsaW5nIGlvZG9uZS4gIA0KIAkgKiBh
c3N1bWVzIGlvZG9uZSBjYW4gbW9kaWZ5IHRoZSBiX3dvcmsgZmllbGQuDQpA
QCAtODIyLDM1NSArODIxLDcgQEANCiAgICAgfQkJCQkvKiBpbmZpbml0ZSBs
b29wICh1bmxlc3Mgd2UncmUgaW50ZXJydXB0ZWQpICovDQogfQkJCQkvKiBl
bmQgb2YgYWZzX0Jpb0RhZW1vbigpICovDQogDQotI2Vsc2UgLyogQUZTX0FJ
WDQxX0VOViAqLw0KLQ0KLQ0KLSNkZWZpbmUJc3F1ZXVlIGFmc19xDQotc3Ry
dWN0IGFmc19iaW9xdWV1ZSB7DQotICAgIHN0cnVjdCBzcXVldWUgbHJ1cTsN
Ci0gICAgaW50IHNsZWVwZXI7DQotICAgIGludCBjbnQ7DQotfTsNCi1zdHJ1
Y3QgYWZzX2Jpb3F1ZXVlIGFmc19iaW9xdWV1ZTsNCi1zdHJ1Y3QgYnVmICph
ZnNfYnVzeXEgPSBOVUxMOw0KLXN0cnVjdCBidWYgKmFmc19hc3luY2J1ZjsN
Ci1hZnNfaW50MzIgYWZzX2Jpb2RjbnQgPSAwOw0KLQ0KLS8qIGluIGltcGxl
bWVudGluZyB0aGlzLCBJIGFzc3VtZWQgdGhhdCBhbGwgZXh0ZXJuYWwgbGlu
a2VkIGxpc3RzIHdlcmUNCi0gKiBudWxsLXRlcm1pbmF0ZWQuICANCi0gKg0K
LSAqIFNldmVyYWwgcGxhY2VzIGluIHRoaXMgY29kZSB0cmF2ZXJzZSBhIGxp
bmtlZCBsaXN0LiAgVGhlIGFsZ29yaXRobQ0KLSAqIHVzZWQgaGVyZSBpcyBw
cm9iYWJseSB1bmZhbWlsaWFyIHRvIG1vc3QgcGVvcGxlLiAgQ2FyZWZ1bCBl
eGFtaW5hdGlvbg0KLSAqIHdpbGwgc2hvdyB0aGF0IGl0IGVsaW1pbmF0ZXMg
YW4gYXNzaWdubWVudCBpbnNpZGUgdGhlIGxvb3AsIGFzIGNvbXBhcmVkDQot
ICogdG8gdGhlIHN0YW5kYXJkIGFsZ29yaXRobSwgYXQgdGhlIGNvc3Qgb2Yg
b2NjYXNpb25hbGx5IHVzaW5nIGFuIGV4dHJhDQotICogdmFyaWFibGUuDQot
ICovDQotDQotLyogZ2V0X2Jpb3JlcSgpDQotICoNCi0gKiBUaGlzIGZ1bmN0
aW9uIG9idGFpbnMsIGFuZCByZXR1cm5zLCBhIHBvaW50ZXIgdG8gYSBidWZm
ZXIgZm9yDQotICogcHJvY2Vzc2luZyBieSBhIGRhZW1vbi4gIEl0IHNsZWVw
cyB1bnRpbCBzdWNoIGEgYnVmZmVyIGlzIGF2YWlsYWJsZS4NCi0gKiBUaGUg
c291cmNlIG9mIGJ1ZmZlcnMgZm9yIGl0IGlzIHRoZSBsaXN0IGFmc19hc3lu
Y2J1ZiAoc2VlIGFsc28gDQotICogbmFpeF92bV9zdHJhdGVneSkuICBUaGlz
IGZ1bmN0aW9uIG1heSBiZSBpbnZva2VkIGNvbmN1cnJlbnRseSBieQ0KLSAq
IHNldmVyYWwgcHJvY2Vzc2VzLCB0aGF0IGlzLCBzZXZlcmFsIGluc3RhbmNl
cyBvZiB0aGUgc2FtZSBkYWVtb24uDQotICogbmFpeF92bV9zdHJhdGVneSwg
d2hpY2ggYWRkcyBidWZmZXJzIHRvIHRoZSBsaXN0LCBydW5zIGF0IGludGVy
cnVwdA0KLSAqIGxldmVsLCB3aGlsZSBnZXRfYmlvcmVxIHJ1bnMgYXQgcHJv
Y2VzcyBsZXZlbC4NCi0gKg0KLSAqIFRoZSBjb21tb24ga2VybmVsIHBhcmFk
aWdtIG9mIHNsZWVwaW5nIGFuZCB3YWtpbmcgdXAsIGluIHdoaWNoIGFsbCB0
aGUNCi0gKiBjb21wZXRpbmcgcHJvY2Vzc2VzIHNsZWVwIHdhaXRpbmcgZm9y
IHdha2V1cHMgb24gb25lIGFkZHJlc3MsIGlzIG5vdA0KLSAqIGZvbGxvd2Vk
IGhlcmUuICBJbnN0ZWFkLCB0aGUgZm9sbG93aW5nIHBhcmFkaWdtIGlzIHVz
ZWQ6ICB3aGVuIGEgZGFlbW9uDQotICogZ29lcyB0byBzbGVlcCwgaXQgY2hl
Y2tzIGZvciBvdGhlciBzbGVlcGluZyBkYWVtb25zLiAgSWYgdGhlcmUgYXJl
bid0IGFueSwNCi0gKiBpdCBzbGVlcHMgb24gdGhlIGFkZHJlc3Mgb2YgdmFy
aWFibGUgYWZzX2FzeW5jYnVmLiAgQnV0IGlmIHRoZXJlIGlzDQotICogYWxy
ZWFkeSBhIGRhZW1vbiBzbGVlcGluZyBvbiB0aGF0IGFkZHJlc3MsIGl0IHRo
cmVhZHMgaXRzIG93biB1bmlxdWUNCi0gKiBhZGRyZXNzIG9udG8gYSBsaXN0
LCBhbmQgc2xlZXBzIG9uIHRoYXQgYWRkcmVzcy4gIFRoaXMgd2F5LCBldmVy
eSANCi0gKiBzbGVlcGVyIGlzIHNsZWVwaW5nIG9uIGEgZGlmZmVyZW50IGFk
ZHJlc3MsIGFuZCBldmVyeSB3YWtldXAgd2FrZXMgdXANCi0gKiBleGFjdGx5
IG9uZSBkYWVtb24uICBUaGlzIHByZXZlbnRzIGEgd2hvbGUgYnVuY2ggb2Yg
ZGFlbW9ucyBmcm9tIHdha2luZw0KLSAqIHVwIGFuZCB0aGVuIGltbWVkaWF0
ZWx5IGhhdmluZyB0byBnbyBiYWNrIHRvIHNsZWVwLiAgVGhpcyBwcm92aWRl
cyBhDQotICogcGVyZm9ybWFuY2UgZ2FpbiBhbmQgbWFrZXMgdGhlIEkvTyBz
Y2hlZHVsaW5nIGEgYml0IG1vcmUgZGV0ZXJtaW5pc3RpYy4NCi0gKiBUaGUg
bGlzdCBvZiBzbGVlcGVycyBpcyB2YXJpYWJsZSBhZnNfYmlvcXVldWUuICBU
aGUgdW5pcXVlIGFkZHJlc3MNCi0gKiBvbiB3aGljaCB0byBzbGVlcCBpcyBw
YXNzZWQgdG8gZ2V0X2Jpb3JlcSBhcyBpdHMgcGFyYW1ldGVyLg0KLSAqLw0K
LS8qc3RhdGljKi8gc3RydWN0IGJ1ZiAqDQotYWZzX2dldF9iaW9yZXEoc2Vs
ZikNCi0gICAgIHN0cnVjdCBhZnNfYmlvcXVldWUgKnNlbGY7CS8qIGFkZHJl
c3Mgb24gd2hpY2ggdG8gc2xlZXAgKi8NCi0NCi17DQotICAgIHN0cnVjdCBi
dWYgKmJwID0gTlVMTDsNCi0gICAgc3RydWN0IGJ1ZiAqYmVzdGJwOw0KLSAg
ICBzdHJ1Y3QgYnVmICoqYmVzdGxicFAsICoqbGJwUDsNCi0gICAgaW50IGJl
c3RhZ2UsIHN0b3A7DQotICAgIHN0cnVjdCBidWYgKnQxUCwgKnQyUDsJLyog
dGVtcCBwb2ludGVycyBmb3IgbGlzdCBtYW5pcHVsYXRpb24gKi8NCi0gICAg
aW50IG9sZFByaW9yaXR5Ow0KLSAgICBhZnNfdWludDMyIHdhaXRfcmV0Ow0K
LSAgICBzdHJ1Y3QgYWZzX2Jpb3F1ZXVlICpzOw0KLQ0KLSAgICAvKiA/Pz8g
RG9lcyB0aGUgZm9yd2FyZCBwb2ludGVyIG9mIHRoZSByZXR1cm5lZCBidWZm
ZXIgbmVlZCB0byBiZSBOVUxMPw0KLSAgICAgKi8NCi0NCi0gICAgLyogRGlz
YWJsZSBpbnRlcnJ1cHRzIGZyb20gdGhlIHN0cmF0ZWd5IGZ1bmN0aW9uLCBh
bmQgc2F2ZSB0aGUgDQotICAgICAqIHByaW9yIHByaW9yaXR5IGxldmVsDQot
ICAgICAqLw0KLSAgICBvbGRQcmlvcml0eSA9IGlfZGlzYWJsZShJTlRNQVgp
Ow0KLQ0KLSAgICAvKiBFYWNoIGl0ZXJhdGlvbiBvZiBmb2xsb3dpbmcgbG9v
cCBlaXRoZXIgcHVsbHMNCi0gICAgICogYSBidWZmZXIgb2ZmIGFmc19hc3lu
Y2J1Ziwgb3Igc2xlZXBzLiAgDQotICAgICAqLw0KLSAgICB3aGlsZSAoMSkg
ewkJCS8qIGlubmVyIGxvb3AgKi8NCi0JaWYgKGFmc19hc3luY2J1Zikgew0K
LQkgICAgLyogbG9vayBmb3Igb2xkZXN0IGJ1ZmZlciAqLw0KLQkgICAgYnAg
PSBiZXN0YnAgPSBhZnNfYXN5bmNidWY7DQotCSAgICBiZXN0YWdlID0gKGlu
dCliZXN0YnAtPmF2X2JhY2s7DQotCSAgICBiZXN0bGJwUCA9ICZhZnNfYXN5
bmNidWY7DQotCSAgICB3aGlsZSAoMSkgew0KLQkJbGJwUCA9ICZicC0+YXZf
Zm9ydzsNCi0JCWJwID0gKmxicFA7DQotCQlpZiAoIWJwKQ0KLQkJICAgIGJy
ZWFrOw0KLQkJaWYgKChpbnQpYnAtPmF2X2JhY2sgLSBiZXN0YWdlIDwgMCkg
ew0KLQkJICAgIGJlc3RicCA9IGJwOw0KLQkJICAgIGJlc3RsYnBQID0gbGJw
UDsNCi0JCSAgICBiZXN0YWdlID0gKGludClicC0+YXZfYmFjazsNCi0JCX0N
Ci0JICAgIH0NCi0JICAgIGJwID0gYmVzdGJwOw0KLQkgICAgKmJlc3RsYnBQ
ID0gYnAtPmF2X2Zvcnc7DQotCSAgICBicmVhazsNCi0JfSBlbHNlIHsNCi0J
ICAgIGludCBpbnRlcnJ1cHRlZDsNCi0NCi0JICAgIC8qIElmIGFmc19hc3lu
Y2J1ZiBpcyBudWxsLCBpdCBpcyBuZWNlc3NhcnkgdG8gZ28gdG8gc2xlZXAu
DQotCSAgICAgKiBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXM6ICBlaXRo
ZXIgdGhlcmUgaXMgYWxyZWFkeSBhDQotCSAgICAgKiBkYWVtb24gdGhhdCBp
cyBzbGVlcGluZyBvbiB0aGUgYWRkcmVzcyBvZiBhZnNfYXN5bmNidWYsDQot
CSAgICAgKiBvciB0aGVyZSBpc24ndC4gDQotCSAgICAgKi8NCi0JICAgIGlm
IChhZnNfYmlvcXVldWUuc2xlZXBlcikgew0KLQkJLyogZW5xdWV1ZSAqLw0K
LQkJUUFkZCgmKGFmc19iaW9xdWV1ZS5scnVxKSwgJihzZWxmLT5scnVxKSk7
DQotCQlpbnRlcnJ1cHRlZCA9IHNsZWVwKChjYWRkcl90KSBzZWxmLCBQQ0FU
Q0ggfCAoUFpFUk8gKyAxKSk7DQotCQlpZiAoc2VsZi0+bHJ1cS5uZXh0ICE9
ICZzZWxmLT5scnVxKSB7CS8qIFhYWCAjIzMgWFhYICovDQotCQkgICAgUVJl
bW92ZSgmKHNlbGYtPmxydXEpKTsJLyogZGVxdWV1ZSAqLw0KLQkJfQ0KLQkJ
c2VsZi0+Y250Kys7DQotCQlhZnNfYmlvcXVldWUuc2xlZXBlciA9IEZBTFNF
Ow0KLQkJaWYgKGludGVycnVwdGVkKSB7DQotCQkgICAgLyogcmUtZW5hYmxl
IGludGVycnVwdHMgZnJvbSBzdHJhdGVneSAqLw0KLQkJICAgIGlfZW5hYmxl
KG9sZFByaW9yaXR5KTsNCi0JCSAgICByZXR1cm4gKE5VTEwpOw0KLQkJfQ0K
LQkJY29udGludWU7DQotCSAgICB9IGVsc2Ugew0KLQkJYWZzX2Jpb3F1ZXVl
LnNsZWVwZXIgPSBUUlVFOw0KLQkJaW50ZXJydXB0ZWQgPQ0KLQkJICAgIHNs
ZWVwKChjYWRkcl90KSAmIGFmc19hc3luY2J1ZiwgUENBVENIIHwgKFBaRVJP
ICsgMSkpOw0KLQkJYWZzX2Jpb3F1ZXVlLnNsZWVwZXIgPSBGQUxTRTsNCi0J
CWlmIChpbnRlcnJ1cHRlZCkgew0KLQkJICAgIC8qDQotCQkgICAgICogV2Ug
bmVlZCB0byB3YWtldXAgYW5vdGhlciBkYWVtb24gaWYgcHJlc2VudA0KLQkJ
ICAgICAqIHNpbmNlIHdlIHdlcmUgd2FpdGluZyBvbiBhZnNfYXN5bmNidWYu
DQotCQkgICAgICovDQotI2lmZGVmCW5vdGRlZgkJCS8qIFRoZSBmb2xsb3dp
bmcgZG9lc24ndCB3b3JrIGFzIGFkdmVydGlzZWQgKi8NCi0JCSAgICBpZiAo
YWZzX2Jpb3F1ZXVlLmxydXEubmV4dCAhPSAmYWZzX2Jpb3F1ZXVlLmxydXEp
IHsNCi0JCQlzdHJ1Y3Qgc3F1ZXVlICpicSA9IGFmc19iaW9xdWV1ZS5scnVx
Lm5leHQ7DQotCQkJUVJlbW92ZShicSk7DQotCQkJd2FrZXVwKGJxKTsNCi0J
CSAgICB9DQotI2VuZGlmDQotCQkgICAgLyogcmUtZW5hYmxlIGludGVycnVw
dHMgZnJvbSBzdHJhdGVneSAqLw0KLQkJICAgIGlfZW5hYmxlKG9sZFByaW9y
aXR5KTsNCi0JCSAgICByZXR1cm4gKE5VTEwpOw0KLQkJfQ0KLQkJY29udGlu
dWU7DQotCSAgICB9DQotDQotCX0JCQkvKiBlbmQgb2YgImVsc2UgYXN5bmNi
dWYgaXMgZW1wdHkiICovDQotICAgIH0JCQkJLyogZW5kIG9mICJpbm5lciBs
b29wIiAqLw0KLQ0KLSAgICAvKmFzc2VydCAoYnApOyAqLw0KLQ0KLSAgICBp
X2VuYWJsZShvbGRQcmlvcml0eSk7CS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRz
IGZyb20gc3RyYXRlZ3kgKi8NCi0NCi0gICAgLyogRm9yIHRoZSBjb252ZW5p
ZW5jZSBvZiBvdGhlciBjb2RlLCByZXBsYWNlIHRoZSBnbm9kZXMgaW4NCi0g
ICAgICogdGhlIGJfdnAgZmllbGQgb2YgYnAgYW5kIHRoZSBvdGhlciBidWZm
ZXJzIG9uIHRoZSBiX3dvcmsNCi0gICAgICogY2hhaW4gd2l0aCB0aGUgY29y
cmVzcG9uZGluZyB2bm9kZXMuICAgDQotICAgICAqDQotICAgICAqID8/PyB3
aGF0IGhhcHBlbnMgdG8gdGhlIGdub2Rlcz8gIFRoZXkncmUgbm90IGp1c3Qg
Y3V0IGxvb3NlLA0KLSAgICAgKiBhcmUgdGhleT8NCi0gICAgICovDQotICAg
IGZvciAodDFQID0gYnA7Oykgew0KLQl0MlAgPSAoc3RydWN0IGJ1ZiAqKXQx
UC0+Yl93b3JrOw0KLQl0MVAtPmJfdnAgPSAoKHN0cnVjdCBnbm9kZSAqKXQx
UC0+Yl92cCktPmduX3Zub2RlOw0KLQlpZiAoIXQyUCkNCi0JICAgIGJyZWFr
Ow0KLQ0KLQl0MVAgPSAoc3RydWN0IGJ1ZiAqKXQyUC0+Yl93b3JrOw0KLQl0
MlAtPmJfdnAgPSAoKHN0cnVjdCBnbm9kZSAqKXQyUC0+Yl92cCktPmduX3Zu
b2RlOw0KLQlpZiAoIXQxUCkNCi0JICAgIGJyZWFrOw0KLSAgICB9DQotDQot
ICAgIC8qIElmIHRoZSBidWZmZXIgZG9lcyBub3Qgc3BlY2lmeSBJL08sIGl0
IG1heSBpbW1lZGlhdGVseQ0KLSAgICAgKiBiZSByZXR1cm5lZCB0byB0aGUg
Y2FsbGVyLiAgVGhpcyBjb25kaXRpb24gaXMgZGV0ZWN0ZWQNCi0gICAgICog
YnkgZXhhbWluaW5nIHRoZSBidWZmZXIncyBmbGFncyAodGhlIGJfZmxhZ3Mg
ZmllbGQpLiAgSWYNCi0gICAgICogdGhlIEJfUEZQUk9UIGJpdCBpcyBzZXQs
IHRoZSBidWZmZXIgcmVwcmVzZW50cyBhIHByb3RlY3Rpb24NCi0gICAgICog
dmlvbGF0aW9uLCByYXRoZXIgdGhhbiBhIHJlcXVlc3QgZm9yIEkvTy4gIFRo
ZSByZW1haW5kZXINCi0gICAgICogb2YgdGhlIG91dGVyIGxvb3AgaGFuZGxl
cyB0aGUgY2FzZSB3aGVyZSB0aGUgQl9QRlBST1QgYml0IGlzIGNsZWFyLg0K
LSAgICAgKi8NCi0gICAgaWYgKGJwLT5iX2ZsYWdzICYgQl9QRlBST1QpIHsN
Ci0JcmV0dXJuIChicCk7DQotICAgIH0NCi0NCi0gICAgLyogd2FrZSB1cCBh
bm90aGVyIHByb2Nlc3MgdG8gaGFuZGxlIHRoZSBuZXh0IGJ1ZmZlciwgYW5k
IHJldHVybg0KLSAgICAgKiBicCB0byB0aGUgY2FsbGVyLg0KLSAgICAgKi8N
Ci0gICAgb2xkUHJpb3JpdHkgPSBpX2Rpc2FibGUoSU5UTUFYKTsNCi0NCi0g
ICAgLyogZGV0ZXJtaW5lIHdoZXJlIHRvIGZpbmQgdGhlIHNsZWVwaW5nIHBy
b2Nlc3MuIA0KLSAgICAgKiBUaGVyZSBhcmUgdHdvIGNhc2VzOiBlaXRoZXIg
aXQgaXMgc2xlZXBpbmcgb24NCi0gICAgICogYWZzX2FzeW5jYnVmLCBvciBp
dCBpcyBzbGVlcGluZyBvbiBpdHMgb3duIHVuaXF1ZQ0KLSAgICAgKiBhZGRy
ZXNzLiAgVGhlc2UgY2FzZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYnkgZXhhbWlu
aW5nDQotICAgICAqIHRoZSBzbGVlcGVyIGZpZWxkIG9mIGFmc19iaW9xdWV1
ZS4NCi0gICAgICovDQotICAgIGlmIChhZnNfYmlvcXVldWUuc2xlZXBlcikg
ew0KLQl3YWtldXAoJmFmc19hc3luY2J1Zik7DQotICAgIH0gZWxzZSB7DQot
CWlmIChhZnNfYmlvcXVldWUubHJ1cS5uZXh0ID09ICZhZnNfYmlvcXVldWUu
bHJ1cSkgew0KLQkgICAgLyogcXVldWUgaXMgZW1wdHksIHdoYXQgbm93PyA/
Pz8gKi8NCi0JICAgIC8qIFNob3VsZCB0aGlzIGJlIGltcG9zc2libGUsIG9y
IGRvZXMgICAgKi8NCi0JICAgIC8qIGl0IGp1c3QgbWVhbiB0aGF0IG5vYm9k
eSBpcyBzbGVlcGluZz8gKi8gOw0KLQl9IGVsc2Ugew0KLQkgICAgc3RydWN0
IHNxdWV1ZSAqYnEgPSBhZnNfYmlvcXVldWUubHJ1cS5uZXh0Ow0KLQkgICAg
UVJlbW92ZShicSk7DQotCSAgICBRSW5pdChicSk7DQotCSAgICB3YWtldXAo
YnEpOw0KLQkgICAgYWZzX2Jpb3F1ZXVlLnNsZWVwZXIgPSBUUlVFOw0KLQl9
DQotICAgIH0NCi0gICAgaV9lbmFibGUob2xkUHJpb3JpdHkpOwkvKiByZS1l
bmFibGUgaW50ZXJydXB0cyBmcm9tIHN0cmF0ZWd5ICovDQotICAgIHJldHVy
biAoYnApOw0KLQ0KLX0JCQkJLyogZW5kIG9mIGZ1bmN0aW9uIGdldF9iaW9y
ZXEoKSAqLw0KLQ0KLQ0KLS8qIGFmc19CaW9EYWVtb24NCi0gKg0KLSAqIFRo
aXMgZnVuY3Rpb24gaXMgdGhlIGRhZW1vbi4gIEl0IGlzIGNhbGxlZCBmcm9t
IHRoZSBzeXNjYWxsDQotICogaW50ZXJmYWNlLiAgT3JkaW5hcmlseSwgYSBz
Y3JpcHQgb3IgYW4gYWRtaW5pc3RyYXRvciB3aWxsIHJ1biBhDQotICogZGFl
bW9uIHN0YXJ0dXAgdXRpbGl0eSwgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9m
IEkvTyBkYWVtb25zIHRvDQotICogcnVuLiAgVGhlIHV0aWxpdHkgd2lsbCBm
b3JrIG9mZiB0aGF0IG51bWJlciBvZiBwcm9jZXNzZXMsDQotICogZWFjaCBt
YWtpbmcgdGhlIGFwcHJvcHJpYXRlIHN5c2NhbGwsIHdoaWNoIHdpbGwgY2F1
c2UgdGhpcw0KLSAqIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQuDQotICovDQot
c3RhdGljIGludCBhZnNfaW5pdGJpb2QgPSAwOwkvKiB0aGlzIGlzIHNlbGYt
aW5pdGlhbGl6aW5nIGNvZGUgKi8NCi1pbnQgRE92bWxvY2sgPSAwOw0KLWFm
c19CaW9EYWVtb24obmJpb2RzKQ0KLSAgICAgYWZzX2ludDMyIG5iaW9kczsN
Ci17DQotICAgIHN0cnVjdCBhZnNfYmlvcXVldWUgKnNlbGY7DQotICAgIGFm
c19pbnQzMiBjb2RlLCBzLCBwZmxnID0gMDsNCi0gICAgbGFiZWxfdCBqbXBi
dWY7DQotICAgIHN0cnVjdCBidWYgKmJwLCAqYnAxLCAqdGJwMSwgKnRicDI7
CS8qIHRlbXAgcG9pbnRlcnMgb25seSAqLw0KLSAgICBjYWRkcl90IHRtcGFk
ZHI7DQotICAgIHN0cnVjdCB2bm9kZSAqdnA7DQotICAgIHN0cnVjdCB2Y2Fj
aGUgKnZjcDsNCi0gICAgY2hhciB0bXBlcnI7DQotICAgIGlmICghYWZzX2lu
aXRiaW9kKSB7DQotCS8qIFhYWCAjIyMxIFhYWCAqLw0KLQlhZnNfaW5pdGJp
b2QgPSAxOw0KLQkvKiBJbml0aWFsaXplIHRoZSBxdWV1ZSBvZiB3YWl0aW5n
IHByb2Nlc3NlcywgYWZzX2Jpb3F1ZXVlLiAgKi8NCi0JUUluaXQoJihhZnNf
YmlvcXVldWUubHJ1cSkpOw0KLSAgICB9DQotDQotICAgIC8qIGVzdGFibGlz
aCBvdXJzZWxmIGFzIGEga2VybmVsIHByb2Nlc3Mgc28gc2h1dGRvd24gd29u
J3Qga2lsbCB1cyAqLw0KLS8qICAgIHUudV9wcm9jcC0+cF9mbGFnIHw9IFNL
UFJPQzsqLw0KLQ0KLSAgICAvKiBJbml0aWFsaXplIGEgdG9rZW4gKHNlbGYp
IHRvIHVzZSBpbiB0aGUgcXVldWUgb2Ygc2xlZXBpbmcgcHJvY2Vzc2VzLiAg
ICovDQotICAgIHNlbGYgPSAoc3RydWN0IGFmc19iaW9xdWV1ZSAqKWFmc19v
c2lfQWxsb2Moc2l6ZW9mKHN0cnVjdCBhZnNfYmlvcXVldWUpKTsNCi0gICAg
cGluKHNlbGYsIHNpemVvZihzdHJ1Y3QgYWZzX2Jpb3F1ZXVlKSk7CS8qIGZp
eCBpbiBtZW1vcnkgKi8NCi0gICAgbWVtc2V0KHNlbGYsIDAsIHNpemVvZigq
c2VsZikpOw0KLSAgICBRSW5pdCgmKHNlbGYtPmxydXEpKTsJLyogaW5pdGlh
bGl6ZSBxdWV1ZSBlbnRyeSBwb2ludGVycyAqLw0KLQ0KLQ0KLSAgICAvKiBJ
Z25vcmUgSFVQIHNpZ25hbHMuLi4gKi8NCi0gICAgU0lHREVMU0VUKHUudV9w
cm9jcC0+cF9zaWcsIFNJR0hVUCk7DQotICAgIFNJR0FERFNFVCh1LnVfcHJv
Y3AtPnBfc2lnaWdub3JlLCBTSUdIVVApOw0KLSAgICBTSUdERUxTRVQodS51
X3Byb2NwLT5wX3NpZ2NhdGNoLCBTSUdIVVApOw0KLSAgICAvKiBNYWluIGJv
ZHkgc3RhcnRzIGhlcmUgLS0gdGhpcyBpcyBhbiBpbnRlbnRpb25hbCBpbmZp
bml0ZSBsb29wLCBhbmQNCi0gICAgICogc2hvdWxkIE5FVkVSIGV4aXQgDQot
ICAgICAqDQotICAgICAqIE5vdywgdGhlIGxvb3Agd2lsbCBleGl0IGlmIGdl
dF9iaW9yZXEoKSByZXR1cm5zIE5VTEwsIGluZGljYXRpbmcgDQotICAgICAq
IHRoYXQgd2UndmUgYmVlbiBpbnRlcnJ1cHRlZC4NCi0gICAgICovDQotICAg
IHdoaWxlICgxKSB7DQotCWJwID0gYWZzX2dldF9iaW9yZXEoc2VsZik7DQot
CWlmICghYnApDQotCSAgICBicmVhazsJCS8qIHdlIHdlcmUgaW50ZXJydXB0
ZWQgKi8NCi0JaWYgKGNvZGUgPSBzZXRqbXB4KCZqbXBidWYpKSB7DQotCSAg
ICAvKiBUaGlzIHNob3VsZCBub3QgaGF2ZSBoYXBwZW5kLCBtYXliZSBhIGxh
Y2sgb2YgcmVzb3VyY2VzICAqLw0KLQkgICAgcyA9IHNwbGltcCgpOw0KLQkg
ICAgZm9yIChicDEgPSBicDsgYnA7IGJwID0gYnAxKSB7DQotCQlpZiAoYnAx
KQ0KLQkJICAgIGJwMSA9IGJwMS0+Yl93b3JrOw0KLQkJYnAtPmJfYWN0ZiA9
IDA7DQotCQlicC0+Yl9lcnJvciA9IGNvZGU7DQotCQlicC0+Yl9mbGFncyB8
PSBCX0VSUk9SOw0KLQkJaW9kb25lKGJwKTsNCi0JICAgIH0NCi0JICAgIHNw
bHgocyk7DQotCSAgICBjb250aW51ZTsNCi0JfQ0KLQl2Y3AgPSBWVE9BRlMo
YnAtPmJfdnApOw0KLQlpZiAoYnAtPmJfZmxhZ3MgJiBCX1BGU1RPUkUpIHsN
Ci0JICAgIE9idGFpbldyaXRlTG9jaygmdmNwLT5sb2NrLCAyMTApOw0KLQkg
ICAgaWYgKHZjcC0+di52X2dub2RlLT5nbl9td3JjbnQpIHsNCi0JCWFmc19v
ZmZzX3QgbmV3bGVuZ3RoID0NCi0JCSAgICAoYWZzX29mZnNfdCkgZGJ0b2Io
YnAtPmJfYmxrbm8pICsgYnAtPmJfYmNvdW50Ow0KLQkJaWYgKHZjcC0+bS5M
ZW5ndGggPCBuZXdsZW5ndGgpIHsNCi0JCSAgICBhZnNfVHJhY2U0KGFmc19p
Y2xTZXRwLCBDTV9UUkFDRV9TRVRMRU5HVEgsDQotCQkJICAgICAgIElDTF9U
WVBFX1NUUklORywgX19GSUxFX18sIElDTF9UWVBFX0xPTkcsDQotCQkJICAg
ICAgIF9fTElORV9fLCBJQ0xfVFlQRV9PRkZTRVQsDQotCQkJICAgICAgIElD
TF9IQU5ETEVfT0ZGU0VUKHZjcC0+bS5MZW5ndGgpLA0KLQkJCSAgICAgICBJ
Q0xfVFlQRV9PRkZTRVQsIElDTF9IQU5ETEVfT0ZGU0VUKG5ld2xlbmd0aCkp
Ow0KLQkJICAgIHZjcC0+bS5MZW5ndGggPSBuZXdsZW5ndGg7DQotCQl9DQot
CSAgICB9DQotCSAgICBSZWxlYXNlV3JpdGVMb2NrKCZ2Y3AtPmxvY2spOw0K
LQl9DQotCS8qIElmIHRoZSBidWZmZXIgcmVwcmVzZW50cyBhIHByb3RlY3Rp
b24gdmlvbGF0aW9uLCByYXRoZXIgdGhhbg0KLQkgKiBhbiBhY3R1YWwgcmVx
dWVzdCBmb3IgSS9PLCBubyBzcGVjaWFsIGFjdGlvbiBuZWVkIGJlIHRha2Vu
LiAgDQotCSAqLw0KLQlpZiAoYnAtPmJfZmxhZ3MgJiBCX1BGUFJPVCkgew0K
LQkgICAgaW9kb25lKGJwKTsJCS8qIE5vdGlmeSBhbGwgdXNlcnMgb2YgdGhl
IGJ1ZmZlciB0aGF0IHdlJ3JlIGRvbmUgKi8NCi0JICAgIGNvbnRpbnVlOw0K
LQl9DQotCWlmIChET3ZtbG9jaykNCi0JICAgIE9idGFpbldyaXRlTG9jaygm
dmNwLT5wdm1sb2NrLCA1NTgpOw0KLQkvKg0KLQkgKiBGaXJzdCBtYXAgaXRz
IGRhdGEgYXJlYSB0byBhIHJlZ2lvbiBpbiB0aGUgY3VycmVudCBhZGRyZXNz
IHNwYWNlDQotCSAqIGJ5IGNhbGxpbmcgdm1fYXR0IHdpdGggdGhlIHN1YnNw
YWNlIGlkZW50aWZpZXIsIGFuZCBhIHBvaW50ZXIgdG8NCi0JICogdGhlIGRh
dGEgYXJlYS4gIHZtX2F0dCByZXR1cm5zICBhIG5ldyBkYXRhIGFyZWEgcG9p
bnRlciwgYnV0IHdlDQotCSAqIGFsc28gd2FudCB0byBoYW5nIG9udG8gdGhl
IG9sZCBvbmUuDQotCSAqLw0KLQl0bXBhZGRyID0gYnAtPmJfYmFkZHI7DQot
CWJwLT5iX2JhZGRyID0gdm1fYXR0KGJwLT5iX3htZW1kLnN1YnNwYWNlX2lk
LCB0bXBhZGRyKTsNCi0JdG1wZXJyID0gYWZzX3VzdHJhdGVneShicCk7CS8q
IHRlbXAgdmFyaWFibGUgc2F2ZXMgb2Zmc2V0IGNhbGN1bGF0aW9uICovDQot
CWlmICh0bXBlcnIpIHsJCS8qIGluIG5vbi1lcnJvciBjYXNlICovDQotCSAg
ICBicC0+Yl9mbGFncyB8PSBCX0VSUk9SOwkvKiBzaG91bGQgb3RoZXIgZmxh
Z3MgcmVtYWluIHNldCA/Pz8gKi8NCi0JICAgIGJwLT5iX2Vycm9yID0gdG1w
ZXJyOw0KLQl9DQotDQotCS8qIFVubWFwIHRoZSBidWZmZXIncyBkYXRhIGFy
ZWEgYnkgY2FsbGluZyB2bV9kZXQuICBSZXNldCBkYXRhIGFyZWENCi0JICog
dG8gdGhlIHZhbHVlIHRoYXQgd2Ugc2F2ZWQgYWJvdmUuDQotCSAqLw0KLQl2
bV9kZXQoYnAtPmJfdW4uYl9hZGRyKTsNCi0JYnAtPmJfYmFkZHIgPSB0bXBh
ZGRyOw0KLQ0KLQkvKg0KLQkgKiBidWZmZXIgbWF5IGJlIGxpbmtlZCB3aXRo
IG90aGVyIGJ1ZmZlcnMgdmlhIHRoZSBiX3dvcmsgZmllbGQuDQotCSAqIFNl
ZSBhbHNvIG5haXhfdm1fc3RyYXRlZ3kuICBGb3IgZWFjaCBidWZmZXIgaW4g
dGhlIGNoYWluIChpbmNsdWRpbmcNCi0JICogYnApIG5vdGlmeSBhbGwgdXNl
cnMgb2YgdGhlIGJ1ZmZlciB0aGF0IHRoZSBkYWVtb24gaXMgZmluaXNoZWQN
Ci0JICogdXNpbmcgaXQgYnkgY2FsbGluZyBpb2RvbmUuICANCi0JICogYXNz
dW1lcyBpb2RvbmUgY2FuIG1vZGlmeSB0aGUgYl93b3JrIGZpZWxkLg0KLQkg
Ki8NCi0JZm9yICh0YnAxID0gYnA7Oykgew0KLQkgICAgdGJwMiA9IChzdHJ1
Y3QgYnVmICopdGJwMS0+Yl93b3JrOw0KLQkgICAgaW9kb25lKHRicDEpOw0K
LQkgICAgaWYgKCF0YnAyKQ0KLQkJYnJlYWs7DQotDQotCSAgICB0YnAxID0g
KHN0cnVjdCBidWYgKil0YnAyLT5iX3dvcms7DQotCSAgICBpb2RvbmUodGJw
Mik7DQotCSAgICBpZiAoIXRicDEpDQotCQlicmVhazsNCi0JfQ0KLQlpZiAo
RE92bWxvY2spDQotCSAgICBSZWxlYXNlV3JpdGVMb2NrKCZ2Y3AtPnB2bWxv
Y2spOwkvKiBVbmxvY2sgdGhlIHZub2RlLiAgKi8NCi0JY2xyam1weCgmam1w
YnVmKTsNCi0gICAgfQkJCQkvKiBpbmZpbml0ZSBsb29wICh1bmxlc3Mgd2Un
cmUgaW50ZXJydXB0ZWQpICovDQotICAgIHVucGluKHNlbGYsIHNpemVvZihz
dHJ1Y3QgYWZzX2Jpb3F1ZXVlKSk7DQotICAgIGFmc19vc2lfRnJlZShzZWxm
LCBzaXplb2Yoc3RydWN0IGFmc19iaW9xdWV1ZSkpOw0KLX0JCQkJLyogZW5k
IG9mIGFmc19CaW9EYWVtb24oKSAqLw0KICNlbmRpZiAvKiBBRlNfQUlYNDFf
RU5WICovDQotI2VuZGlmIC8qIEFGU19BSVgzMl9FTlYgKi8NCiANCiANCiBp
bnQgYWZzX25icnMgPSAwOw0KQEAgLTEyNzIsMTYgKzkyMywxMCBAQA0KIAlt
ZW1zZXQoKGNoYXIgKilhZnNfYnJzLCAwLCBzaXplb2YoYWZzX2JycykpOw0K
IAltZW1zZXQoKGNoYXIgKikmYWZzX3hicnMsIDAsIHNpemVvZihhZnNfbG9j
a190KSk7DQogCWFmc19icnNXYWl0ZXJzID0gMDsNCi0jaWZkZWYgQUZTX0FJ
WDMyX0VOVg0KICNpZmRlZiBBRlNfQUlYNDFfRU5WDQogCWxvY2tfZnJlZSgm
YWZzX2FzeW5jYnVmX2xvY2spOw0KIAl1bnBpbigmYWZzX2FzeW5jYnVmLCBz
aXplb2Yoc3RydWN0IGJ1ZiAqKSk7DQogCXVucGluKCZhZnNfYXN5bmNidWZf
Y3YsIHNpemVvZihhZnNfaW50MzIpKTsNCi0jZWxzZSAvKiBBRlNfQUlYNDFf
RU5WICovDQotCWFmc19idXN5cSA9IE5VTEw7DQotCWFmc19iaW9kY250ID0g
MDsNCi0JbWVtc2V0KChjaGFyICopJmFmc19iaW9xdWV1ZSwgMCwgc2l6ZW9m
KHN0cnVjdCBhZnNfYmlvcXVldWUpKTsNCi0jZW5kaWYNCiAJYWZzX2luaXRi
aW9kID0gMDsNCiAjZW5kaWYNCiAgICAgfQ0KSW5kZXg6IHNyYy9hZnMvQUlY
L29zaV9pbm9kZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls
ZTogL2N2cy9vcGVuYWZzL3NyYy9hZnMvQUlYL29zaV9pbm9kZS5jLHYNCnJl
dHJpZXZpbmcgcmV2aXNpb24gMS45DQpkaWZmIC11IC1yMS45IG9zaV9pbm9k
ZS5jDQotLS0gc3JjL2Fmcy9BSVgvb3NpX2lub2RlLmMJMTkgQXVnIDIwMDQg
MDU6NDI6MjQgLTAwMDAJMS45DQorKysgc3JjL2Fmcy9BSVgvb3NpX2lub2Rl
LmMJMTggQXVnIDIwMDUgMDk6NDU6MDAgLTAwMDANCkBAIC0xNDQsNyArMTQ0
LDcgQEANCiANCiAgICAgYS5kZXYgPSBkZXY7DQogICAgIGEuYW5zID0gTlVM
TDsNCi0gICAgdmZzX3NlYXJjaChkZXZ0b3Zmc19mdW5jLCAmYSk7DQorICAg
IHZmc19zZWFyY2goZGV2dG92ZnNfZnVuYywgKGNhZGRyX3QpICZhKTsNCiAg
ICAgcmV0dXJuIGEuYW5zOw0KIH0NCiANCkluZGV4OiBzcmMvYWZzL0FJWC9v
c2lfdm5vZGVvcHMuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp
bGU6IC9jdnMvb3BlbmFmcy9zcmMvYWZzL0FJWC9vc2lfdm5vZGVvcHMuYyx2
DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUNCmRpZmYgLXUgLXIxLjE1IG9z
aV92bm9kZW9wcy5jDQotLS0gc3JjL2Fmcy9BSVgvb3NpX3Zub2Rlb3BzLmMJ
MTcgTWFyIDIwMDQgMDI6Mjk6MzkgLTAwMDAJMS4xNQ0KKysrIHNyYy9hZnMv
QUlYL29zaV92bm9kZW9wcy5jCTE4IEF1ZyAyMDA1IDA5OjQ1OjAxIC0wMDAw
DQpAQCAtNTUsMTM0ICs1NSwxMSBAQA0KICNpbmNsdWRlICJhZnNpbmNsdWRl
cy5oIg0KIA0KIA0KLS8qDQotICogZGVjbGFyZSBhbGwgdGhlIGZ1bmN0aW9u
cyBzbyB0aGV5IGNhbiBiZSB1c2VkIHRvIGluaXQgdGhlIHRhYmxlDQotICov
DQotLyogY3JlYXRpb24vbmFtaW5nL2RlbGV0aW9uICovDQotaW50IGFmc19n
bl9saW5rKCk7DQotaW50IGFmc19nbl9ta2RpcigpOw0KLWludCBhZnNfZ25f
bWtub2QoKTsNCi1pbnQgYWZzX2duX3JlbW92ZSgpOw0KLWludCBhZnNfZ25f
cmVuYW1lKCk7DQotaW50IGFmc19nbl9ybWRpcigpOw0KLS8qIGxvb2t1cCwg
ZmlsZSBoYW5kbGUgc3R1ZmYgKi8NCi1pbnQgYWZzX2duX2xvb2t1cCgpOw0K
LWludCBhZnNfZ25fZmlkKCk7DQotLyogYWNjZXNzIHRvIGZpbGVzICovDQot
aW50IGFmc19nbl9vcGVuKCk7DQotaW50IGFmc19nbl9jcmVhdGUoKTsNCi1p
bnQgYWZzX2duX2hvbGQoKTsNCi1pbnQgYWZzX2duX3JlbGUoKTsNCi1pbnQg
YWZzX2duX2Nsb3NlKCk7DQotaW50IGFmc19nbl9tYXAoKTsNCi1pbnQgYWZz
X2duX3VubWFwKCk7DQotLyogbWFuaXB1bGF0ZSBhdHRyaWJ1dGVzIG9mIGZp
bGVzICovDQotaW50IGFmc19nbl9hY2Nlc3MoKTsNCi1pbnQgYWZzX2duX2dl
dGF0dHIoKTsNCi1pbnQgYWZzX2duX3NldGF0dHIoKTsNCi0vKiBkYXRhIHVw
ZGF0ZSBvcGVyYXRpb25zICovDQotaW50IGFmc19nbl9mY2xlYXIoKTsNCi1p
bnQgYWZzX2duX2ZzeW5jKCk7DQotaW50IGFmc19nbl9mdHJ1bmMoKTsNCi1p
bnQgYWZzX2duX3Jkd3IoKTsNCi1pbnQgYWZzX2duX2xvY2tjdGwoKTsNCi0v
KiBleHRlbnNpb25zICovDQotaW50IGFmc19nbl9pb2N0bCgpOw0KLWludCBh
ZnNfZ25fcmVhZGxpbmsoKTsNCi1pbnQgYWZzX2duX3NlbGVjdCgpOw0KLWlu
dCBhZnNfZ25fc3ltbGluaygpOw0KLWludCBhZnNfZ25fcmVhZGRpcigpOw0K
LS8qIGJ1ZmZlciBvcHMgKi8NCi1pbnQgYWZzX2duX3N0cmF0ZWd5KCk7DQot
Lyogc2VjdXJpdHkgdGhpbmdzICovDQotaW50IGFmc19nbl9yZXZva2UoKTsN
Ci1pbnQgYWZzX2duX2dldGFjbCgpOw0KLWludCBhZnNfZ25fc2V0YWNsKCk7
DQotaW50IGFmc19nbl9nZXRwY2woKTsNCi1pbnQgYWZzX2duX3NldHBjbCgp
Ow0KLWludCBhZnNfZ25fZW5vc3lzKCk7DQotDQotDQotLyoNCi0gKiBkZWNs
YXJlIGEgc3RydWN0IHZub2Rlb3BzIGFuZCBpbml0aWFsaXplIGl0IHdpdGgg
cHRycyB0byBhbGwgZnVuY3Rpb25zDQotICovDQotc3RydWN0IHZub2Rlb3Bz
IGFmc19nbl92bm9kZW9wcyA9IHsNCi0gICAgLyogY3JlYXRpb24vbmFtaW5n
L2RlbGV0aW9uICovDQotICAgIGFmc19nbl9saW5rLA0KLSAgICBhZnNfZ25f
bWtkaXIsDQotICAgIGFmc19nbl9ta25vZCwNCi0gICAgYWZzX2duX3JlbW92
ZSwNCi0gICAgYWZzX2duX3JlbmFtZSwNCi0gICAgYWZzX2duX3JtZGlyLA0K
LSAgICAvKiBsb29rdXAsIGZpbGUgaGFuZGxlIHN0dWZmICovDQotICAgIGFm
c19nbl9sb29rdXAsDQotICAgIGFmc19nbl9maWQsDQotICAgIC8qIGFjY2Vz
cyB0byBmaWxlcyAqLw0KLSAgICBhZnNfZ25fb3BlbiwNCi0gICAgYWZzX2du
X2NyZWF0ZSwNCi0gICAgYWZzX2duX2hvbGQsDQotICAgIGFmc19nbl9yZWxl
LA0KLSAgICBhZnNfZ25fY2xvc2UsDQotICAgIGFmc19nbl9tYXAsDQotICAg
IGFmc19nbl91bm1hcCwNCi0gICAgLyogbWFuaXB1bGF0ZSBhdHRyaWJ1dGVz
IG9mIGZpbGVzICovDQotICAgIGFmc19nbl9hY2Nlc3MsDQotICAgIGFmc19n
bl9nZXRhdHRyLA0KLSAgICBhZnNfZ25fc2V0YXR0ciwNCi0gICAgLyogZGF0
YSB1cGRhdGUgb3BlcmF0aW9ucyAqLw0KLSAgICBhZnNfZ25fZmNsZWFyLA0K
LSAgICBhZnNfZ25fZnN5bmMsDQotICAgIGFmc19nbl9mdHJ1bmMsDQotICAg
IGFmc19nbl9yZHdyLA0KLSAgICBhZnNfZ25fbG9ja2N0bCwNCi0gICAgLyog
ZXh0ZW5zaW9ucyAqLw0KLSAgICBhZnNfZ25faW9jdGwsDQotICAgIGFmc19n
bl9yZWFkbGluaywNCi0gICAgYWZzX2duX3NlbGVjdCwNCi0gICAgYWZzX2du
X3N5bWxpbmssDQotICAgIGFmc19nbl9yZWFkZGlyLA0KLSAgICAvKiBidWZm
ZXIgb3BzICovDQotICAgIGFmc19nbl9zdHJhdGVneSwNCi0gICAgLyogc2Vj
dXJpdHkgdGhpbmdzICovDQotICAgIGFmc19nbl9yZXZva2UsDQotICAgIGFm
c19nbl9nZXRhY2wsDQotICAgIGFmc19nbl9zZXRhY2wsDQotICAgIGFmc19n
bl9nZXRwY2wsDQotICAgIGFmc19nbl9zZXRwY2wsDQotICAgIGFmc19nbl9l
bm9zeXMsCQkvKiB2bl9zZWVrICovDQotICAgIGFmc19nbl9lbm9zeXMsCQkv
KiB2bl9mc3luY19yYW5nZSAqLw0KLSAgICBhZnNfZ25fZW5vc3lzLAkJLyog
dm5fY3JlYXRlX2F0dHIgKi8NCi0gICAgYWZzX2duX2Vub3N5cywJCS8qIHZu
X2ZpbmZvICovDQotICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9tYXBfbGxv
ZmYgKi8NCi0gICAgYWZzX2duX2Vub3N5cywJCS8qIHZuX3JlYWRkaXJfZW9m
cCAqLw0KLSAgICBhZnNfZ25fZW5vc3lzLAkJLyogdm5fcmR3cl9hdHRyICov
DQotICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9tZW1jbnRsICovDQotICAg
IGFmc19nbl9lbm9zeXMsCQkvKiB2bl9zcGFyZTcgKi8NCi0gICAgYWZzX2du
X2Vub3N5cywJCS8qIHZuX3NwYXJlOCAqLw0KLSAgICBhZnNfZ25fZW5vc3lz
LAkJLyogdm5fc3BhcmU5ICovDQotICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2
bl9zcGFyZUEgKi8NCi0gICAgYWZzX2duX2Vub3N5cywJCS8qIHZuX3NwYXJl
QiAqLw0KLSAgICBhZnNfZ25fZW5vc3lzLAkJLyogdm5fc3BhcmVDICovDQot
ICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9zcGFyZUQgKi8NCi0gICAgYWZz
X2duX2Vub3N5cywJCS8qIHZuX3NwYXJlRSAqLw0KLSAgICBhZnNfZ25fZW5v
c3lzCQkvKiB2bl9zcGFyZUYgKi8NCi0jaWZkZWYgQUZTX0FJWDUxX0VOVg0K
LQksIGFmc19nbl9lbm9zeXMsCS8qIHBhZ2VyQmFja1JhbmdlICovDQotICAg
IGFmc19nbl9lbm9zeXMsCQkvKiBwYWdlckdldEZpbGVTaXplICovDQotICAg
IGFmc19nbl9lbm9zeXMsCQkvKiBwYWdlclJlYWRBaGVhZCAqLw0KLSAgICBh
ZnNfZ25fZW5vc3lzLAkJLyogcGFnZXJXcml0ZUJlaGluZCAqLw0KLSAgICBh
ZnNfZ25fZW5vc3lzCQkvKiBwYWdlckVuZENvcHkgKi8NCi0jZW5kaWYNCi19
Ow0KLXN0cnVjdCB2bm9kZW9wcyAqYWZzX29wcyA9ICZhZnNfZ25fdm5vZGVv
cHM7DQotDQotDQogaW50DQotYWZzX2duX2xpbmsodnAsIGRwLCBuYW1lLCBj
cmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsNCi0gICAgIHN0cnVjdCB2
bm9kZSAqZHA7DQotICAgICBjaGFyICpuYW1lOw0KLSAgICAgc3RydWN0IHVj
cmVkICpjcmVkOw0KK2Fmc19nbl9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIA0K
KwkgICAgc3RydWN0IHZub2RlICpkcCwgDQorCSAgICBjaGFyICpuYW1lLCAN
CisJICAgIHN0cnVjdCB1Y3JlZCAqY3JlZCkNCiB7DQogICAgIGludCBlcnJv
cjsNCiANCkBAIC0xOTUsMTUgKzcyLDEwIEBADQogDQogDQogaW50DQotYWZz
X2duX21rZGlyKGRwLCBuYW1lLCBNb2RlLCBjcmVkKQ0KLSAgICAgc3RydWN0
IHZub2RlICpkcDsNCi0gICAgIGNoYXIgKm5hbWU7DQotI2lmZGVmIEFGU19B
SVg1MV9FTlYNCi0gICAgIGludDMybG9uZzY0X3QgTW9kZTsNCi0jZWxzZQ0K
LSAgICAgaW50IE1vZGU7DQotI2VuZGlmDQotICAgICBzdHJ1Y3QgdWNyZWQg
KmNyZWQ7DQorYWZzX2duX21rZGlyKHN0cnVjdCB2bm9kZSAqZHAsIA0KKwkg
ICAgIGNoYXIgKm5hbWUsIA0KKwkgICAgIGludDMybG9uZzY0X3QgTW9kZSwg
DQorCSAgICAgc3RydWN0IHVjcmVkICpjcmVkKQ0KIHsNCiAgICAgc3RydWN0
IHZhdHRyIHZhOw0KICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0KQEAgLTIyNiwx
NiArOTgsMTEgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fbWtub2QoZHAsIG5h
bWUsIE1vZGUsIGRldiwgY3JlZCkNCi0gICAgIHN0cnVjdCB2bm9kZSAqZHA7
DQotICAgICBjaGFyICpuYW1lOw0KLSNpZmRlZiBBRlNfQUlYNTFfRU5WDQot
ICAgICBpbnQgTW9kZTsNCi0jZWxzZQ0KLSAgICAgaW50IE1vZGU7DQotI2Vu
ZGlmDQotICAgICBkZXZfdCBkZXY7DQotICAgICBzdHJ1Y3QgdWNyZWQgKmNy
ZWQ7DQorYWZzX2duX21rbm9kKHN0cnVjdCB2bm9kZSAqZHAsIA0KKwkgICAg
IGNoYXIgKm5hbWUsIA0KKwkgICAgIGludDMybG9uZzY0X3QgTW9kZSwgDQor
CSAgICAgZGV2X3QgZGV2LCANCisJICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQp
DQogew0KICAgICBzdHJ1Y3QgdmF0dHIgdmE7DQogICAgIHN0cnVjdCB2bm9k
ZSAqdnA7DQpAQCAtMjQ4LDcgKzExNSw3IEBADQogICAgIHZhLnZhX21vZGUg
PSAobW9kZSAmIDA3Nzc3KSAmIH5nZXRfdW1hc2soKTsNCiANCiAvKioqKiBJ
J20gbm90IHN1cmUgaWYgc3VzZXIoKSBzaG91bGQgc3RheSBoZXJlIHNpbmNl
IGl0IG1ha2VzIG5vIHNlbnNlIGluIEFGUzsgaG93ZXZlciB0aGUgZG9jdW1l
bnRhdGlvbiBzYXlzIHRoYXQgb25lICJzaG91bGQgYmUgc3VwZXItdXNlciB1
bmxlc3MgbWFraW5nIGEgRklGTyBmaWxlLiBPdGhlcnMgc3lzdGVtcyBzdWNo
IGFzIFNVTiBkbyB0aGlzIGNoZWNraW5nIGluIHRoZSBlYXJseSBzdGFnZXMg
b2YgbWtub2QgKGJlZm9yZSB0aGUgYWJzdHJhY3Rpb24pLCBzbyBpdCdzIGVx
dWl2YWxlbnRseSB0aGUgc2FtZSEgKioqKiovDQotICAgIGlmICh2YS52YV90
eXBlICE9IFZGSUZPICYmICFzdXNlcigmZXJyb3IpKQ0KKyAgICBpZiAodmEu
dmFfdHlwZSAhPSBWRklGTyAmJiAhc3VzZXIoKGNoYXIgKikmZXJyb3IpKQ0K
IAlyZXR1cm4gKEVQRVJNKTsNCiAgICAgc3dpdGNoICh2YS52YV90eXBlKSB7
DQogICAgIGNhc2UgVkRJUjoNCkBAIC0yNjIsNyArMTI5LDcgQEANCiAgICAg
Y2FzZSBWQkxLOg0KIAl2YS52YV9yZGV2ID0gZGV2Ow0KICAgICBkZWZhdWx0
Og0KLQllcnJvciA9IGFmc19jcmVhdGUoZHAsIG5hbWUsICZ2YSwgTk9ORVhD
TCwgbW9kZSwgJnZwLCBjcmVkKTsNCisJZXJyb3IgPSBhZnNfY3JlYXRlKFZU
T0FGUyhkcCksIG5hbWUsICZ2YSwgTk9ORVhDTCwgbW9kZSwgKHN0cnVjdCB2
Y2FjaGUgKiopJnZwLCBjcmVkKTsNCiAgICAgfQ0KICAgICBpZiAoIWVycm9y
KSB7DQogCUFGU19SRUxFKHZwKTsNCkBAIC0yNzUsMTEgKzE0MiwxMCBAQA0K
IA0KIA0KIGludA0KLWFmc19nbl9yZW1vdmUodnAsIGRwLCBuYW1lLCBjcmVk
KQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsJCS8qIElnbm9yZWQgaW4gQUZT
ICovDQotICAgICBzdHJ1Y3Qgdm5vZGUgKmRwOw0KLSAgICAgY2hhciAqbmFt
ZTsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsNCithZnNfZ25fcmVtb3Zl
KHN0cnVjdCB2bm9kZSAqdnAsCQkvKiBJZ25vcmVkIGluIEFGUyAqLw0KKyAg
ICAgICAgICAgICAgc3RydWN0IHZub2RlICogZHAsIA0KKwkgICAgICBjaGFy
ICpuYW1lLCANCisJICAgICAgc3RydWN0IHVjcmVkICpjcmVkKQ0KIHsNCiAg
ICAgaW50IGVycm9yOw0KIA0KQEAgLTI5MiwxNCArMTU4LDEzIEBADQogDQog
DQogaW50DQotYWZzX2duX3JlbmFtZSh2cCwgZHAsIG5hbWUsIHRwLCB0ZHAs
IHRuYW1lLCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICpkcDsNCi0gICAg
IGNoYXIgKm5hbWU7DQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOwkJLyogSWdu
b3JlZCBpbiBBRlMgKi8NCi0gICAgIHN0cnVjdCB2bm9kZSAqdHA7CQkvKiBJ
Z25vcmVkIGluIEFGUyAqLw0KLSAgICAgc3RydWN0IHZub2RlICp0ZHA7DQot
ICAgICBjaGFyICp0bmFtZTsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsN
CithZnNfZ25fcmVuYW1lKHN0cnVjdCB2bm9kZSAqdnAsIAkJLyogSWdub3Jl
ZCBpbiBBRlMgKi8NCisJICAgICAgc3RydWN0IHZub2RlICpkcCwgDQorCSAg
ICAgIGNoYXIgKm5hbWUsIA0KKwkgICAgICBzdHJ1Y3Qgdm5vZGUgKnRwLCAJ
CS8qIElnbm9yZWQgaW4gQUZTICovDQorCSAgICAgIHN0cnVjdCB2bm9kZSAq
dGRwLCANCisJICAgICAgY2hhciAqdG5hbWUsIA0KKwkgICAgICBzdHJ1Y3Qg
dWNyZWQgKmNyZWQpDQogew0KICAgICBpbnQgZXJyb3I7DQogDQpAQCAtMzEz
LDExICsxNzgsMTAgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fcm1kaXIodnAs
IGRwLCBuYW1lLCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsJCS8q
IElnbm9yZWQgaW4gQUZTICovDQotICAgICBzdHJ1Y3Qgdm5vZGUgKmRwOw0K
LSAgICAgY2hhciAqbmFtZTsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsN
CithZnNfZ25fcm1kaXIoc3RydWN0IHZub2RlICp2cCwgCQkvKiBJZ25vcmVk
IGluIEFGUyAqLw0KKwkgICAgIHN0cnVjdCB2bm9kZSAqZHAsIA0KKwkgICAg
IGNoYXIgKm5hbWUsIA0KKwkgICAgIHN0cnVjdCB1Y3JlZCAqY3JlZCkNCiB7
DQogICAgIGludCBlcnJvcjsNCiANCkBAIC0zMzQsMTcgKzE5OCwxMiBAQA0K
IA0KIA0KIGludA0KLWFmc19nbl9sb29rdXAoZHAsIHZwcCwgbmFtZSwgRmxh
Z3MsIHZhdHRycCwgY3JlZCkNCi0gICAgIHN0cnVjdCB2YXR0ciAqdmF0dHJw
Ow0KLSAgICAgc3RydWN0IHZub2RlICpkcDsNCi0gICAgIHN0cnVjdCB2bm9k
ZSAqKnZwcDsNCi0gICAgIGNoYXIgKm5hbWU7DQotI2lmZGVmIEFGU19BSVg1
MV9FTlYNCi0gICAgIGludDMybG9uZzY0X3QgRmxhZ3M7CS8qIGluY2x1ZGVz
IEZPTExPVy4uLiAqLw0KLSNlbHNlDQotICAgICBhZnNfdWludDMyIEZsYWdz
OwkJLyogaW5jbHVkZXMgRk9MTE9XLi4uICovDQotI2VuZGlmDQotICAgICBz
dHJ1Y3QgdWNyZWQgKmNyZWQ7DQorYWZzX2duX2xvb2t1cChzdHJ1Y3Qgdm5v
ZGUgKmRwLCANCisJICAgICAgc3RydWN0IHZub2RlICoqdnBwLCANCisJICAg
ICAgY2hhciAqbmFtZSwgDQorCSAgICAgIGludDMybG9uZzY0X3QgRmxhZ3Ms
IAkvKiBpbmNsdWRlcyBGT0xMT1cuLi4gKi8NCisJICAgICAgc3RydWN0IHZh
dHRyICp2YXR0cnAsIA0KKwkgICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQpDQog
ew0KICAgICBpbnQgZXJyb3I7DQogICAgIGludCBmbGFncyA9IEZsYWdzOw0K
QEAgLTM2MCwxMCArMjE5LDkgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fZmlk
KHZwLCBmaWRwLCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsNCi0g
ICAgIHN0cnVjdCBmaWQgKmZpZHA7DQotICAgICBzdHJ1Y3QgdWNyZWQgKmNy
ZWQ7DQorYWZzX2duX2ZpZChzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJc3RydWN0
IGZpZCAqZmlkcCwgDQorCXN0cnVjdCB1Y3JlZCAqY3JlZCkNCiB7DQogICAg
IGludCBlcnJvcjsNCiANCkBAIC0zNzYsMTcgKzIzNCwxMSBAQA0KIA0KIA0K
IGludA0KLWFmc19nbl9vcGVuKHZwLCBGbGFncywgZXh0LCB2aW5mb3AsIGNy
ZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSNpZmRlZiBBRlNfQUlY
NTFfRU5WDQotICAgICBpbnQzMmxvbmc2NF90IEZsYWdzOw0KLSAgICAgZXh0
X3QgZXh0OwkJCS8qIElnbm9yZWQgaW4gQUZTICovDQotI2Vsc2UNCi0gICAg
IGludCBGbGFnczsNCi0gICAgIGludCBleHQ7CQkJLyogSWdub3JlZCBpbiBB
RlMgKi8NCi0jZW5kaWYNCi0gICAgIHN0cnVjdCB1Y3JlZCAqKnZpbmZvcDsJ
LyogcmV0dXJuIHB0ciBmb3IgZnAtPmZfdmluZm8sIHVzZWQgYXMgZnAtPmZf
Y3JlZCAqLw0KLSAgICAgc3RydWN0IHVjcmVkICpjcmVkOw0KK2Fmc19nbl9v
cGVuKHN0cnVjdCB2bm9kZSAqdnAsIA0KKwkgICAgaW50MzJsb25nNjRfdCBG
bGFncywgDQorCSAgICBleHRfdCBleHQsIA0KKwkgICAgc3RydWN0IHVjcmVk
ICoqdmluZm9wLCANCisJICAgIHN0cnVjdCB1Y3JlZCAqY3JlZCkNCiB7DQog
ICAgIGludCBlcnJvcjsNCiAgICAgc3RydWN0IHZhdHRyIHZhOw0KQEAgLTQx
MSwxNyArMjYzLDE3IEBADQogCWFmc19vc2lfU2xlZXAoJnR2cC0+b3BlbnMp
Ow0KICAgICB9DQogDQotICAgIGVycm9yID0gYWZzX2FjY2Vzcyh2cCwgbW9k
ZXMsIGNyZWQpOw0KKyAgICBlcnJvciA9IGFmc19hY2Nlc3MoVlRPQUZTKHZw
KSwgbW9kZXMsIGNyZWQpOw0KICAgICBpZiAoZXJyb3IpIHsNCiAJZ290byBh
Ym9ydDsNCiAgICAgfQ0KIA0KLSAgICBlcnJvciA9IGFmc19vcGVuKCZ2cCwg
ZmxhZ3MsIGNyZWQpOw0KKyAgICBlcnJvciA9IGFmc19vcGVuKChzdHJ1Y3Qg
dmNhY2hlICoqKSAmdnAsIGZsYWdzLCBjcmVkKTsNCiAgICAgaWYgKCFlcnJv
cikgew0KIAlpZiAoZmxhZ3MgJiBGVFJVTkMpIHsNCiAJICAgIFZBVFRSX05V
TEwoJnZhKTsNCiAJICAgIHZhLnZhX3NpemUgPSAwOw0KLQkgICAgZXJyb3Ig
PSBhZnNfc2V0YXR0cih2cCwgJnZhLCBjcmVkKTsNCisJICAgIGVycm9yID0g
YWZzX3NldGF0dHIoVlRPQUZTKHZwKSwgJnZhLCBjcmVkKTsNCiAJfQ0KIA0K
IAlpZiAoZmxhZ3MgJiBGTlNIQVJFKQ0KQEAgLTQ0NywxOSArMjk5LDE0IEBA
DQogDQogDQogaW50DQotYWZzX2duX2NyZWF0ZShkcCwgdnBwLCBGbGFncywg
bmFtZSwgTW9kZSwgdmluZm9wLCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2Rl
ICpkcDsNCi0gICAgIHN0cnVjdCB2bm9kZSAqKnZwcDsNCi0gICAgIGNoYXIg
Km5hbWU7DQotI2lmZGVmIEFGU19BSVg1MV9FTlYNCi0gICAgIGludDMybG9u
ZzY0X3QgRmxhZ3M7DQotICAgICBpbnQzMmxvbmc2NF90IE1vZGU7DQotI2Vs
c2UNCi0gICAgIGludCBGbGFnczsNCi0gICAgIGludCBNb2RlOw0KLSNlbmRp
Zg0KLSAgICAgc3RydWN0IHVjcmVkICoqdmluZm9wOwkvKiByZXR1cm4gcHRy
IGZvciBmcC0+Zl92aW5mbywgdXNlZCBhcyBmcC0+Zl9jcmVkICovDQotICAg
ICBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQorYWZzX2duX2NyZWF0ZShzdHJ1Y3Qg
dm5vZGUgKmRwLCANCisJICAgICAgc3RydWN0IHZub2RlICoqdnBwLCANCisJ
ICAgICAgaW50MzJsb25nNjRfdCBGbGFncywgDQorCSAgICAgIGNoYXIgKm5h
bWUsIA0KKwkgICAgICBpbnQzMmxvbmc2NF90IE1vZGUsIA0KKwkgICAgICBz
dHJ1Y3QgdWNyZWQgKip2aW5mb3AsIC8qIHJldHVybiBwdHIgZm9yIGZwLT5m
X3ZpbmZvLCB1c2VkIGFzIGZwLT5mX2NyZWQgKi8NCisJICAgICAgc3RydWN0
IHVjcmVkICpjcmVkKQ0KKw0KIHsNCiAgICAgc3RydWN0IHZhdHRyIHZhOw0K
ICAgICBlbnVtIHZjZXhjbCBleGNsdXNpdmU7DQpAQCAtNDgxLDcgKzMyOCw3
IEBADQogCW1vZGVzIHw9IFhfQUNDOw0KICAgICBpZiAoKGZsYWdzICYgRldS
SVRFKSB8fCAoZmxhZ3MgJiBGVFJVTkMpKQ0KIAltb2RlcyB8PSBXX0FDQzsN
Ci0gICAgZXJyb3IgPSBhZnNfY3JlYXRlKGRwLCBuYW1lLCAmdmEsIGV4Y2x1
c2l2ZSwgbW9kZXMsIHZwcCwgY3JlZCk7DQorICAgIGVycm9yID0gYWZzX2Ny
ZWF0ZShWVE9BRlMoZHApLCBuYW1lLCAmdmEsIGV4Y2x1c2l2ZSwgbW9kZXMs
IChzdHJ1Y3QgdmNhY2hlICoqKXZwcCwgY3JlZCk7DQogICAgIGlmIChlcnJv
cikgew0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCkBAIC01MDIsNyArMzQ5
LDcgQEANCiAJICogZXhlY3NPcldyaXRlcnMgZmxhZyAoZWxzZSB3ZSdsbCBi
ZSB0cmVhdGVkIGFzIHRoZSBzdW4ncyAiY29yZSINCiAJICogY2FzZSkuICov
DQogCSp2aW5mb3AgPSBjcmVkOwkJLyogc2F2ZSB1c2VyIGNyZWRzIGluIGZw
LT5mX3ZpbmZvICovDQotCWVycm9yID0gYWZzX29wZW4odnBwLCBmbGFncywg
Y3JlZCk7DQorCWVycm9yID0gYWZzX29wZW4oKHN0cnVjdCB2Y2FjaGUgKiop
dnBwLCBmbGFncywgY3JlZCk7DQogICAgIH0NCiAgICAgYWZzX1RyYWNlNChh
ZnNfaWNsU2V0cCwgQ01fVFJBQ0VfR0NSRUFURSwgSUNMX1RZUEVfUE9JTlRF
UiwgZHAsDQogCSAgICAgICBJQ0xfVFlQRV9TVFJJTkcsIG5hbWUsIElDTF9U
WVBFX0xPTkcsIG1vZGUsIElDTF9UWVBFX0xPTkcsDQpAQCAtNTEyLDggKzM1
OSw3IEBADQogDQogDQogaW50DQotYWZzX2duX2hvbGQodnApDQotICAgICBz
dHJ1Y3Qgdm5vZGUgKnZwOw0KK2Fmc19nbl9ob2xkKHN0cnVjdCB2bm9kZSAq
dnApDQogew0KICAgICBBRlNfU1RBVENOVChhZnNfZ25faG9sZCk7DQogICAg
ICsrKHZwLT52X2NvdW50KTsNCkBAIC01MjMsOCArMzY5LDcgQEANCiBpbnQg
dm1QYWdlSG9nID0gMDsNCiANCiBpbnQNCi1hZnNfZ25fcmVsZSh2cCkNCi0g
ICAgIHN0cnVjdCB2bm9kZSAqdnA7DQorYWZzX2duX3JlbGUoc3RydWN0IHZu
b2RlICp2cCkNCiB7DQogICAgIHN0cnVjdCB2Y2FjaGUgKnZjcCA9IFZUT0FG
Uyh2cCk7DQogICAgIGludCBlcnJvciA9IDA7DQpAQCAtNTQ0LDE1ICszODks
MTAgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fY2xvc2UodnAsIEZsYWdzLCB2
aW5mbywgY3JlZCkNCi0gICAgIHN0cnVjdCB2bm9kZSAqdnA7DQotI2lmZGVm
IEFGU19BSVg1MV9FTlYNCi0gICAgIGludDMybG9uZzY0X3QgRmxhZ3M7DQot
I2Vsc2UNCi0gICAgIGludCBGbGFnczsNCi0jZW5kaWYNCi0gICAgIGNhZGRy
X3QgdmluZm87CQkvKiBJZ25vcmVkIGluIEFGUyAqLw0KLSAgICAgc3RydWN0
IHVjcmVkICpjcmVkOw0KK2Fmc19nbl9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnZw
LCANCisJICAgICBpbnQzMmxvbmc2NF90IEZsYWdzLCANCisJICAgICBjYWRk
cl90IHZpbmZvLCAJCS8qIElnbm9yZWQgaW4gQUZTICovDQorCSAgICAgc3Ry
dWN0IHVjcmVkICpjcmVkKQ0KIHsNCiAgICAgaW50IGVycm9yOw0KICAgICBz
dHJ1Y3QgdmNhY2hlICp0dnAgPSBWVE9BRlModnApOw0KQEAgLTU3MywxNSAr
NDEzLDEyIEBADQogDQogDQogaW50DQotYWZzX2duX21hcCh2cCwgYWRkciwg
TGVuLCBPZmYsIEZsYWcsIGNyZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZw
Ow0KLSAgICAgY2FkZHJfdCBhZGRyOw0KLSNpZmRlZiBBRlNfQUlYNTFfRU5W
DQotICAgICB1aW50MzJsb25nNjRfdCBMZW4sIE9mZiwgRmxhZzsNCi0jZWxz
ZQ0KLSAgICAgdV9pbnQgTGVuLCBPZmYsIEZsYWc7DQotI2VuZGlmDQotICAg
ICBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQorYWZzX2duX21hcChzdHJ1Y3Qgdm5v
ZGUgKnZwLCANCisJICAgY2FkZHJfdCBhZGRyLCANCisJICAgdWludDMybG9u
ZzY0X3QgTGVuLCANCisJICAgdWludDMybG9uZzY0X3QgT2ZmLCANCisJICAg
dWludDMybG9uZzY0X3QgRmxhZywgDQorCSAgIHN0cnVjdCB1Y3JlZCAqY3Jl
ZCkNCiB7DQogICAgIHN0cnVjdCB2Y2FjaGUgKnZjcCA9IFZUT0FGUyh2cCk7
DQogICAgIHN0cnVjdCB2cmVxdWVzdCB0cmVxOw0KQEAgLTYxMiw3ICs0NDks
NyBAQA0KICNlbmRpZg0KIAkvKiBDb25zaWRlciAgVl9JTlRSU0VHIHRvbyBm
b3IgaW50ZXJydXB0cyAqLw0KIAlpZiAoZXJyb3IgPQ0KLQkgICAgdm1zX2Ny
ZWF0ZSgmdmNwLT5zZWdpZCwgVl9DTElFTlQsIHZjcC0+di52X2dub2RlLCB0
bGVuLCAwLCAwKSkgew0KKwkgICAgdm1zX2NyZWF0ZSgmdmNwLT5zZWdpZCwg
Vl9DTElFTlQsIChkZXZfdCkgdmNwLT52LnZfZ25vZGUsIHRsZW4sIDAsIDAp
KSB7DQogCSAgICBSZWxlYXNlV3JpdGVMb2NrKCZ2Y3AtPmxvY2spOw0KIAkg
ICAgcmV0dXJuIChFT1BOT1RTVVBQKTsNCiAJfQ0KQEAgLTY1MCwxNCArNDg3
LDkgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fdW5tYXAodnAsIGZsYWcsIGNy
ZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSNpZmRlZiBBRlNfQUlY
NTFfRU5WDQotICAgICBpbnQzMmxvbmc2NF90IGZsYWc7DQotI2Vsc2UNCi0g
ICAgIGludCBmbGFnOw0KLSNlbmRpZg0KLSAgICAgc3RydWN0IHVjcmVkICpj
cmVkOw0KK2Fmc19nbl91bm1hcChzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJICAg
ICBpbnQzMmxvbmc2NF90IGZsYWcsIA0KKwkgICAgIHN0cnVjdCB1Y3JlZCAq
Y3JlZCkNCiB7DQogICAgIHN0cnVjdCB2Y2FjaGUgKnZjcCA9IFZUT0FGUyh2
cCk7DQogICAgIEFGU19TVEFUQ05UKGFmc19nbl91bm1hcCk7DQpAQCAtNjc5
LDE2ICs1MTEsMTAgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fYWNjZXNzKHZw
LCBNb2RlLCBXaG8sIGNyZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0K
LSNpZmRlZiBBRlNfQUlYNTFfRU5WDQotICAgICBpbnQzMmxvbmc2NF90IE1v
ZGU7DQotICAgICBpbnQzMmxvbmc2NF90IFdobzsNCi0jZWxzZQ0KLSAgICAg
aW50IE1vZGU7DQotICAgICBpbnQgV2hvOw0KLSNlbmRpZg0KLSAgICAgc3Ry
dWN0IHVjcmVkICpjcmVkOw0KK2Fmc19nbl9hY2Nlc3Moc3RydWN0IHZub2Rl
ICp2cCwgDQorCSAgICAgIGludDMybG9uZzY0X3QgTW9kZSwgDQorCSAgICAg
IGludDMybG9uZzY0X3QgV2hvLCANCisJICAgICAgc3RydWN0IHVjcmVkICpj
cmVkKQ0KIHsNCiAgICAgaW50IGVycm9yOw0KICAgICBzdHJ1Y3QgdmF0dHIg
dmF0dHI7DQpAQCAtNzAxLDExICs1MjcsMTEgQEANCiAJZ290byBvdXQ7DQog
ICAgIH0NCiANCi0gICAgZXJyb3IgPSBhZnNfYWNjZXNzKHZwLCBtb2RlLCBj
cmVkKTsNCisgICAgZXJyb3IgPSBhZnNfYWNjZXNzKFZUT0FGUyh2cCksIG1v
ZGUsIGNyZWQpOw0KICAgICBpZiAoIWVycm9yKSB7DQogCS8qIEFkZGl0aW9u
YWwgdGVzdGluZyAqLw0KIAlpZiAod2hvID09IEFDQ19PVEhFUlMgfHwgd2hv
ID09IEFDQ19BTlkpIHsNCi0JICAgIGVycm9yID0gYWZzX2dldGF0dHIodnAs
ICZ2YXR0ciwgY3JlZCk7DQorCSAgICBlcnJvciA9IGFmc19nZXRhdHRyKFZU
T0FGUyh2cCksICZ2YXR0ciwgY3JlZCk7DQogCSAgICBpZiAoIWVycm9yKSB7
DQogCQlpZiAod2hvID09IEFDQ19BTlkpIHsNCiAJCSAgICBpZiAoKCh2YXR0
ci52YV9tb2RlID4+IDYpICYgbW9kZSkgPT0gbW9kZSkgew0KQEAgLTcxOSw3
ICs1NDUsNyBAQA0KIAkJICAgIGVycm9yID0gRUFDQ0VTOw0KIAkgICAgfQ0K
IAl9IGVsc2UgaWYgKHdobyA9PSBBQ0NfQUxMKSB7DQotCSAgICBlcnJvciA9
IGFmc19nZXRhdHRyKHZwLCAmdmF0dHIsIGNyZWQpOw0KKwkgICAgZXJyb3Ig
PSBhZnNfZ2V0YXR0cihWVE9BRlModnApLCAmdmF0dHIsIGNyZWQpOw0KIAkg
ICAgaWYgKCFlcnJvcikgew0KIAkJaWYgKCghKCh2YXR0ci52YV9tb2RlID4+
IDYpICYgbW9kZSkpDQogCQkgICAgfHwgKCEoKHZhdHRyLnZhX21vZGUgPj4g
MykgJiBtb2RlKSkNCkBAIC03MzksMTUgKzU2NSwxNCBAQA0KIA0KIA0KIGlu
dA0KLWFmc19nbl9nZXRhdHRyKHZwLCB2YXR0cnAsIGNyZWQpDQotICAgICBz
dHJ1Y3Qgdm5vZGUgKnZwOw0KLSAgICAgc3RydWN0IHZhdHRyICp2YXR0cnA7
DQotICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQorYWZzX2duX2dldGF0dHIo
c3RydWN0IHZub2RlICp2cCwgDQorCSAgICAgICBzdHJ1Y3QgdmF0dHIgKnZh
dHRycCwgDQorCSAgICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQpDQogew0KICAg
ICBpbnQgZXJyb3I7DQogDQogICAgIEFGU19TVEFUQ05UKGFmc19nbl9nZXRh
dHRyKTsNCi0gICAgZXJyb3IgPSBhZnNfZ2V0YXR0cih2cCwgdmF0dHJwLCBj
cmVkKTsNCisgICAgZXJyb3IgPSBhZnNfZ2V0YXR0cihWVE9BRlModnApLCB2
YXR0cnAsIGNyZWQpOw0KICAgICBhZnNfVHJhY2UyKGFmc19pY2xTZXRwLCBD
TV9UUkFDRV9HR0VUQVRUUiwgSUNMX1RZUEVfUE9JTlRFUiwgdnAsDQogCSAg
ICAgICBJQ0xfVFlQRV9MT05HLCBlcnJvcik7DQogICAgIHJldHVybiAoZXJy
b3IpOw0KQEAgLTc1NSwyMCArNTgwLDEyIEBADQogDQogDQogaW50DQotYWZz
X2duX3NldGF0dHIodnAsIG9wLCBhcmcxLCBhcmcyLCBhcmczLCBjcmVkKQ0K
LSAgICAgc3RydWN0IHZub2RlICp2cDsNCi0jaWZkZWYgQUZTX0FJWDUxX0VO
Vg0KLSAgICAgaW50MzJsb25nNjRfdCBvcDsNCi0gICAgIGludDMybG9uZzY0
X3QgYXJnMTsNCi0gICAgIGludDMybG9uZzY0X3QgYXJnMjsNCi0gICAgIGlu
dDMybG9uZzY0X3QgYXJnMzsNCi0jZWxzZQ0KLSAgICAgaW50IG9wOw0KLSAg
ICAgaW50IGFyZzE7DQotICAgICBpbnQgYXJnMjsNCi0gICAgIGludCBhcmcz
Ow0KLSNlbmRpZg0KLSAgICAgc3RydWN0IHVjcmVkICpjcmVkOw0KK2Fmc19n
bl9zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdnAsIA0KKwkgICAgICAgaW50MzJs
b25nNjRfdCBvcCwgDQorCSAgICAgICBpbnQzMmxvbmc2NF90IGFyZzEsIA0K
KwkgICAgICAgaW50MzJsb25nNjRfdCBhcmcyLCANCisJICAgICAgIGludDMy
bG9uZzY0X3QgYXJnMywgDQorCSAgICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQp
DQogew0KICAgICBzdHJ1Y3QgdmF0dHIgdmE7DQogICAgIGludCBlcnJvciA9
IDA7DQpAQCAtODA1LDcgKzYyMiw3IEBADQogCWdvdG8gb3V0Ow0KICAgICB9
DQogDQotICAgIGVycm9yID0gYWZzX3NldGF0dHIodnAsICZ2YSwgY3JlZCk7
DQorICAgIGVycm9yID0gYWZzX3NldGF0dHIoVlRPQUZTKHZwKSwgJnZhLCBj
cmVkKTsNCiAgIG91dDoNCiAgICAgYWZzX1RyYWNlMihhZnNfaWNsU2V0cCwg
Q01fVFJBQ0VfR1NFVEFUVFIsIElDTF9UWVBFX1BPSU5URVIsIHZwLA0KIAkg
ICAgICAgSUNMX1RZUEVfTE9ORywgZXJyb3IpOw0KQEAgLTgxNSwyMyArNjMy
LDE4IEBADQogDQogY2hhciB6ZXJvX2J1ZmZlcltQQUdFU0laRV07DQogaW50
DQotYWZzX2duX2ZjbGVhcih2cCwgZmxhZ3MsIG9mZnNldCwgbGVuZ3RoLCB2
aW5mbywgY3JlZCkNCi0gICAgIHN0cnVjdCB2bm9kZSAqdnA7DQotI2lmZGVm
IEFGU19BSVg1MV9FTlYNCi0gICAgIGludDMybG9uZzY0X3QgZmxhZ3M7DQot
I2Vsc2UNCi0gICAgIGludCBmbGFnczsNCi0jZW5kaWYNCi0gICAgIG9mZnNl
dF90IG9mZnNldDsNCi0gICAgIG9mZnNldF90IGxlbmd0aDsNCi0gICAgIGNh
ZGRyX3QgdmluZm87DQotICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQorYWZz
X2duX2ZjbGVhcihzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJICAgICAgaW50MzJs
b25nNjRfdCBmbGFncywgDQorCSAgICAgIG9mZnNldF90IG9mZnNldCwgDQor
CSAgICAgIG9mZnNldF90IGxlbmd0aCwgDQorCSAgICAgIGNhZGRyX3Qgdmlu
Zm8sIA0KKwkgICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQpDQogew0KICAgICBp
bnQgaSwgbGVuLCBlcnJvciA9IDA7DQogICAgIHN0cnVjdCBpb3ZlYyBpb3Y7
DQogICAgIHN0cnVjdCB1aW8gdWlvOw0KICAgICBzdGF0aWMgaW50IGZjbGVh
cl9pbml0ID0gMDsNCi0gICAgcmVnaXN0ZXIgc3RydWN0IHZjYWNoZSAqYXZj
ID0gVlRPQUZTKHZwKTsNCisgICAgc3RydWN0IHZjYWNoZSAqYXZjID0gVlRP
QUZTKHZwKTsNCiANCiAgICAgQUZTX1NUQVRDTlQoYWZzX2duX2ZjbGVhcik7
DQogICAgIGlmICghZmNsZWFyX2luaXQpIHsNCkBAIC04NjAsNyArNjcyLDcg
QEANCiAJdWlvLmFmc2lvX2lvdmNudCA9IDE7DQogCXVpby5hZnNpb19zZWcg
PSBBRlNfVUlPU1lTOw0KIAl1aW8uYWZzaW9fcmVzaWQgPSBpb3YuaW92X2xl
bjsNCi0JaWYgKGVycm9yID0gYWZzX3Jkd3IodnAsICZ1aW8sIFVJT19XUklU
RSwgMCwgY3JlZCkpDQorCWlmIChlcnJvciA9IGFmc19yZHdyKFZUT0FGUyh2
cCksICZ1aW8sIFVJT19XUklURSwgMCwgY3JlZCkpDQogCSAgICBicmVhazsN
CiAgICAgfQ0KICAgICBhZnNfVHJhY2U0KGFmc19pY2xTZXRwLCBDTV9UUkFD
RV9HRkNMRUFSLCBJQ0xfVFlQRV9QT0lOVEVSLCB2cCwNCkBAIC04NzEsMTYg
KzY4MywxMCBAQA0KIA0KIA0KIGludA0KLWFmc19nbl9mc3luYyh2cCwgZmxh
Z3MsIHZpbmZvLCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsNCi0j
aWZkZWYgQUZTX0FJWDUxX0VOVg0KLSAgICAgaW50MzJsb25nNjRfdCBmbGFn
czsJLyogTm90IHVzZWQgYnkgQUZTICovDQotICAgICBpbnQzMmxvbmc2NF90
IHZpbmZvOwkvKiBOb3QgdXNlZCBieSBBRlMgKi8NCi0jZWxzZQ0KLSAgICAg
aW50IGZsYWdzOwkJCS8qIE5vdCB1c2VkIGJ5IEFGUyAqLw0KLSAgICAgY2Fk
ZHJfdCB2aW5mbzsJCS8qIE5vdCB1c2VkIGJ5IEFGUyAqLw0KLSNlbmRpZg0K
LSAgICAgc3RydWN0IHVjcmVkICpjcmVkOw0KK2Fmc19nbl9mc3luYyhzdHJ1
Y3Qgdm5vZGUgKnZwLCANCisJICAgICBpbnQzMmxvbmc2NF90IGZsYWdzLCAJ
LyogTm90IHVzZWQgYnkgQUZTICovDQorCSAgICAgaW50MzJsb25nNjRfdCB2
aW5mbywgCS8qIE5vdCB1c2VkIGJ5IEFGUyAqLw0KKwkgICAgIHN0cnVjdCB1
Y3JlZCAqY3JlZCkNCiB7DQogICAgIGludCBlcnJvcjsNCiANCkBAIC04OTMs
MTYgKzY5OSwxMSBAQA0KIA0KIA0KIGludA0KLWFmc19nbl9mdHJ1bmModnAs
IGZsYWdzLCBsZW5ndGgsIHZpbmZvLCBjcmVkKQ0KLSAgICAgc3RydWN0IHZu
b2RlICp2cDsNCi0jaWZkZWYgQUZTX0FJWDUxX0VOVg0KLSAgICAgaW50MzJs
b25nNjRfdCBmbGFnczsJLyogSWdub3JlZCBpbiBBRlMgKi8NCi0jZWxzZQ0K
LSAgICAgaW50IGZsYWdzOwkJCS8qIElnbm9yZWQgaW4gQUZTICovDQotI2Vu
ZGlmDQotICAgICBvZmZzZXRfdCBsZW5ndGg7DQotICAgICBjYWRkcl90IHZp
bmZvOwkJLyogSWdub3JlZCBpbiBBRlMgKi8NCi0gICAgIHN0cnVjdCB1Y3Jl
ZCAqY3JlZDsNCithZnNfZ25fZnRydW5jKHN0cnVjdCB2bm9kZSAqdnAsIA0K
KwkgICAgICBpbnQzMmxvbmc2NF90IGZsYWdzLCANCisJICAgICAgb2Zmc2V0
X3QgbGVuZ3RoLCANCisJICAgICAgY2FkZHJfdCB2aW5mbywgDQorCSAgICAg
IHN0cnVjdCB1Y3JlZCAqY3JlZCkNCiB7DQogICAgIHN0cnVjdCB2YXR0ciB2
YTsNCiAgICAgaW50IGVycm9yOw0KQEAgLTkxMCw3ICs3MTEsNyBAQA0KICAg
ICBBRlNfU1RBVENOVChhZnNfZ25fZnRydW5jKTsNCiAgICAgVkFUVFJfTlVM
TCgmdmEpOw0KICAgICB2YS52YV9zaXplID0gbGVuZ3RoOw0KLSAgICBlcnJv
ciA9IGFmc19zZXRhdHRyKHZwLCAmdmEsIGNyZWQpOw0KKyAgICBlcnJvciA9
IGFmc19zZXRhdHRyKFZUT0FGUyh2cCksICZ2YSwgY3JlZCk7DQogICAgIGFm
c19UcmFjZTQoYWZzX2ljbFNldHAsIENNX1RSQUNFX0dGVFJVTkMsIElDTF9U
WVBFX1BPSU5URVIsIHZwLA0KIAkgICAgICAgSUNMX1RZUEVfTE9ORywgZmxh
Z3MsIElDTF9UWVBFX09GRlNFVCwNCiAJICAgICAgIElDTF9IQU5ETEVfT0ZG
U0VUKGxlbmd0aCksIElDTF9UWVBFX0xPTkcsIGVycm9yKTsNCkBAIC05MjEs
MjIgKzcyMiwxNiBAQA0KICNkZWZpbmUgTUlOX1BBR0VfSE9HX1NJWkUgODM4
ODYwOA0KIA0KIGludA0KLWFmc19nbl9yZHdyKHZwLCBvcCwgRmxhZ3MsIHVi
dWYsIGV4dCwgdmluZm8sIHZhdHRycCwgY3JlZCkNCi0gICAgIHN0cnVjdCB2
bm9kZSAqdnA7DQotICAgICBlbnVtIHVpb19ydyBvcDsNCi0jaWZkZWYgQUZT
X0FJWDUxX0VOVg0KLSAgICAgaW50MzJsb25nNjRfdCBGbGFnczsNCi0gICAg
IGV4dF90IGV4dDsJCQkvKiBJZ25vcmVkIGluIEFGUyAqLw0KLSNlbHNlDQot
ICAgICBpbnQgRmxhZ3M7DQotICAgICBpbnQgZXh0OwkJCS8qIElnbm9yZWQg
aW4gQUZTICovDQotI2VuZGlmDQotICAgICBzdHJ1Y3QgdWlvICp1YnVmOw0K
LSAgICAgY2FkZHJfdCB2aW5mbzsJCS8qIElnbm9yZWQgaW4gQUZTICovDQot
ICAgICBzdHJ1Y3QgdmF0dHIgKnZhdHRycDsNCi0gICAgIHN0cnVjdCB1Y3Jl
ZCAqY3JlZDsNCithZnNfZ25fcmR3cihzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJ
ICAgIGVudW0gdWlvX3J3IG9wLCANCisJICAgIGludDMybG9uZzY0X3QgRmxh
Z3MsIA0KKwkgICAgc3RydWN0IHVpbyAqdWJ1ZiwgDQorCSAgICBleHRfdCBl
eHQsIAkJCS8qIElnbm9yZWQgaW4gQUZTICovDQorCSAgICBjYWRkcl90IHZp
bmZvLCAJCS8qIElnbm9yZWQgaW4gQUZTICovDQorCSAgICBzdHJ1Y3QgdmF0
dHIgKnZhdHRycCwgDQorCSAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQpDQogew0K
LSAgICByZWdpc3RlciBzdHJ1Y3QgdmNhY2hlICp2Y3AgPSBWVE9BRlModnAp
Ow0KKyAgICBzdHJ1Y3QgdmNhY2hlICp2Y3AgPSBWVE9BRlModnApOw0KICAg
ICBzdHJ1Y3QgdnJlcXVlc3QgdHJlcTsNCiAgICAgaW50IGVycm9yID0gMDsN
CiAgICAgaW50IGZyZWVfY3JlZCA9IDA7DQpAQCAtMTA1MCwxNSArODQ1LDE1
IEBADQogfQ0KIA0KICNkZWZpbmUgQUZTX01BWF9WTV9DSFVOS1MgMTANCi1h
ZnNfdm1fcmR3cih2cCwgdWlvcCwgcncsIGlvZmxhZywgY3JlZHApDQotICAg
ICByZWdpc3RlciBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSAgICAgc3RydWN0IHVp
byAqdWlvcDsNCi0gICAgIGVudW0gdWlvX3J3IHJ3Ow0KLSAgICAgaW50IGlv
ZmxhZzsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZHA7DQorc3RhdGljIGlu
dA0KK2Fmc192bV9yZHdyKHN0cnVjdCB2bm9kZSAqdnAsIA0KKwkgICAgc3Ry
dWN0IHVpbyAqdWlvcCwgDQorCSAgICBlbnVtIHVpb19ydyBydywgDQorCSAg
ICBpbnQgaW9mbGFnLCANCisJICAgIHN0cnVjdCB1Y3JlZCAqY3JlZHApDQog
ew0KLSAgICByZWdpc3RlciBhZnNfaW50MzIgY29kZSA9IDA7DQotICAgIHJl
Z2lzdGVyIGludCBpOw0KKyAgICBhZnNfaW50MzIgY29kZSA9IDA7DQorICAg
IGludCBpOw0KICAgICBhZnNfaW50MzIgYmxvY2tTaXplOw0KICAgICBhZnNf
c2l6ZV90IGZpbGVTaXplLCB4ZnJPZmZzZXQsIG9mZnNldCwgb2xkX29mZnNl
dCwgeGZyU2l6ZTsNCiAgICAgdm1zaXplX3QgdHhmclNpemU7DQpAQCAtMTA2
OCw3ICs4NjMsNyBAQA0KICAgICBpbnQgbWl4ZWQgPSAwOw0KICAgICBhZnNf
c2l6ZV90IGFkZDJyZXNpZCA9IDA7DQogI2VuZGlmIC8qIEFGU182NEJJVF9D
TElFTlQgKi8NCi0gICAgcmVnaXN0ZXIgc3RydWN0IHZjYWNoZSAqdmNwID0g
VlRPQUZTKHZwKTsNCisgICAgc3RydWN0IHZjYWNoZSAqdmNwID0gVlRPQUZT
KHZwKTsNCiAgICAgc3RydWN0IGRjYWNoZSAqdGRjOw0KICAgICBhZnNfc2l6
ZV90IHN0YXJ0X29mZnNldDsNCiAgICAgYWZzX2ludDMyIHNhdmVfcmVzaWQg
PSB1aW9wLT5hZnNpb19yZXNpZDsNCkBAIC0xMTYwLDcgKzk1NSw3IEBADQog
I2VuZGlmDQogCS8qIENvbnNpZGVyICBWX0lOVFJTRUcgdG9vIGZvciBpbnRl
cnJ1cHRzICovDQogCWlmIChjb2RlID0NCi0JICAgIHZtc19jcmVhdGUoJnZj
cC0+c2VnaWQsIFZfQ0xJRU5ULCB2Y3AtPnYudl9nbm9kZSwgdGxlbiwgMCwg
MCkpIHsNCisJICAgIHZtc19jcmVhdGUoJnZjcC0+c2VnaWQsIFZfQ0xJRU5U
LCAoZGV2X3QpIHZjcC0+di52X2dub2RlLCB0bGVuLCAwLCAwKSkgew0KIAkg
ICAgZ290byBmYWlsOw0KIAl9DQogI2lmZGVmIEFGU182NEJJVF9LRVJORUwN
CkBAIC0xMzc2LDE0ICsxMTcxLDE0IEBADQogfQ0KIA0KIA0KLWFmc19kaXJl
Y3RfcmR3cih2cCwgdWlvcCwgcncsIGlvZmxhZywgY3JlZHApDQotICAgICBy
ZWdpc3RlciBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSAgICAgc3RydWN0IHVpbyAq
dWlvcDsNCi0gICAgIGVudW0gdWlvX3J3IHJ3Ow0KLSAgICAgaW50IGlvZmxh
ZzsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZHA7DQorc3RhdGljIGludA0K
K2Fmc19kaXJlY3RfcmR3cihzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJICAgICAg
ICBzdHJ1Y3QgdWlvICp1aW9wLCANCisJCWVudW0gdWlvX3J3IHJ3LCANCisJ
CWludCBpb2ZsYWcsIA0KKwkJc3RydWN0IHVjcmVkICpjcmVkcCkNCiB7DQot
ICAgIHJlZ2lzdGVyIGFmc19pbnQzMiBjb2RlID0gMDsNCisgICAgYWZzX2lu
dDMyIGNvZGUgPSAwOw0KICAgICBhZnNfc2l6ZV90IGZpbGVTaXplLCB4ZnJP
ZmZzZXQsIG9mZnNldCwgb2xkX29mZnNldCwgeGZyU2l6ZTsNCiAgICAgc3Ry
dWN0IHZjYWNoZSAqdmNwID0gVlRPQUZTKHZwKTsNCiAgICAgYWZzX2ludDMy
IHNhdmVfcmVzaWQgPSB1aW9wLT5hZnNpb19yZXNpZDsNCkBAIC0xNDI5LDcg
KzEyMjQsNyBAQA0KICAgICBhZnNfVHJhY2UzKGFmc19pY2xTZXRwLCBDTV9U
UkFDRV9ESVJFQ1RSRFdSLCBJQ0xfVFlQRV9QT0lOVEVSLCB2cCwNCiAJICAg
ICAgIElDTF9UWVBFX09GRlNFVCwgSUNMX0hBTkRMRV9PRkZTRVQodWlvcC0+
YWZzaW9fb2Zmc2V0KSwNCiAJICAgICAgIElDTF9UWVBFX0xPTkcsIHVpb3At
PmFmc2lvX3Jlc2lkKTsNCi0gICAgY29kZSA9IGFmc19yZHdyKHZwLCB1aW9w
LCBydywgaW9mbGFnLCBjcmVkcCk7DQorICAgIGNvZGUgPSBhZnNfcmR3cihW
VE9BRlModnApLCB1aW9wLCBydywgaW9mbGFnLCBjcmVkcCk7DQogICAgIGlm
IChjb2RlICE9IDApIHsNCiAJdWlvcC0+YWZzaW9fcmVzaWQgPSBzYXZlX3Jl
c2lkOw0KICAgICB9IGVsc2Ugew0KQEAgLTE0NTYsMTEgKzEyNTEsMTAgQEAN
CiANCiANCiBzdGF0aWMgaW50DQotbG9ja19ub3JtYWxpemUodnAsIGxja2Rh
dCwgb2Zmc2V0LCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsNCi0g
ICAgIHN0cnVjdCBlZmxvY2sgKmxja2RhdDsNCi0gICAgIG9mZnNldF90IG9m
ZnNldDsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsNCitsb2NrX25vcm1h
bGl6ZShzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJICAgICAgIHN0cnVjdCBmbG9j
ayAqbGNrZGF0LCANCisJICAgICAgIG9mZnNldF90IG9mZnNldCwgDQorCSAg
ICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQpDQogew0KICAgICBzdHJ1Y3QgdmF0
dHIgdmF0dHI7DQogICAgIGludCBjb2RlOw0KQEAgLTE0NzIsNyArMTI2Niw3
IEBADQogCWxja2RhdC0+bF9zdGFydCArPSAob2ZmX3QpIG9mZnNldDsNCiAJ
YnJlYWs7DQogICAgIGNhc2UgMjoNCi0JY29kZSA9IGFmc19nZXRhdHRyKHZw
LCAmdmF0dHIsIGNyZWQpOw0KKwljb2RlID0gYWZzX2dldGF0dHIoVlRPQUZT
KHZwKSwgJnZhdHRyLCBjcmVkKTsNCiAJaWYgKGNvZGUgIT0gMCkNCiAJICAg
IHJldHVybiBjb2RlOw0KIAlsY2tkYXQtPmxfc3RhcnQgKz0gKG9mZl90KSB2
YXR0ci52YV9zaXplOw0KQEAgLTE0ODYsMTggKzEyODAsMTQgQEANCiANCiAN
CiANCi1hZnNfZ25fbG9ja2N0bCh2cCwgb2Zmc2V0LCBsY2tkYXQsIGNtZCwg
aWdub3JlZF9mY24sIGlnbm9yZWRfaWQsIGNyZWQpDQotICAgICB2b2lkICgq
aWdub3JlZF9mY24pICgpOw0KLSAgICAgdm9pZCAqaWdub3JlZF9pZDsNCi0g
ICAgIHN0cnVjdCB2bm9kZSAqdnA7DQotICAgICBvZmZzZXRfdCBvZmZzZXQ7
DQotICAgICBzdHJ1Y3QgZWZsb2NrICpsY2tkYXQ7DQotICAgICBzdHJ1Y3Qg
dWNyZWQgKmNyZWQ7DQotI2lmZGVmIEFGU19BSVg1MV9FTlYNCi0gICAgIGlu
dDMybG9uZzY0X3QgY21kOw0KLSNlbHNlDQotICAgICBpbnQgY21kOw0KLSNl
bmRpZg0KK2ludA0KK2Fmc19nbl9sb2NrY3RsKHN0cnVjdCB2bm9kZSAqdnAs
IA0KKwkgICAgICAgb2Zmc2V0X3Qgb2Zmc2V0LCANCisJICAgICAgIHN0cnVj
dCBlZmxvY2sgKmxja2RhdCwgDQorCSAgICAgICBpbnQzMmxvbmc2NF90IGNt
ZCwgDQorCSAgICAgICBpbnQgKCppZ25vcmVkX2ZjbikgKCksDQorCSAgICAg
ICB1bG9uZyAqIGlnbm9yZWRfaWQsIA0KKwkgICAgICAgc3RydWN0IHVjcmVk
ICpjcmVkKQ0KIHsNCiAgICAgaW50IGVycm9yLCBuY21kID0gMDsNCiAgICAg
c3RydWN0IGZsb2NrIGZsa2Q7DQpAQCAtMTUzOCwxNyArMTMyOCwxMiBAQA0K
IA0KIC8qIE5PVEU6IEluIHRoZSBuZnMgZ2x1ZSByb3V0aW5lIChuZnNfZ24y
c3VuLmMpIHRoZSBvcmRlciB3YXMgd3JvbmcgKHZwLCBmbGFncywgY21kLCBh
cmcsIGV4dCk7IHdhcyB0aGF0IGFub3RoZXIgdHlwbz8gKi8NCiBpbnQNCi1h
ZnNfZ25faW9jdGwodnAsIENtZCwgYXJnLCBmbGFncywgY2hhbm5lbCwgZXh0
KQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsNCi0jaWZkZWYgQUZTX0FJWDUx
X0VOVg0KLSAgICAgaW50MzJsb25nNjRfdCBDbWQ7DQotI2Vsc2UNCi0gICAg
IGludCBDbWQ7DQotI2VuZGlmDQotICAgICBpbnQgYXJnOw0KLSAgICAgaW50
IGZsYWdzOwkJCS8qIElnbm9yZWQgaW4gQUZTICovDQotICAgICBpbnQgY2hh
bm5lbDsJCS8qIElnbm9yZWQgaW4gQUZTICovDQotICAgICBpbnQgZXh0OwkJ
CS8qIElnbm9yZWQgaW4gQUZTICovDQorYWZzX2duX2lvY3RsKHN0cnVjdCB2
bm9kZSAqdnAsIA0KKwkgICAgIGludDMybG9uZzY0X3QgQ21kLCANCisJICAg
ICBjYWRkcl90IGFyZywgDQorCSAgICAgc2l6ZV90IGZsYWdzLCAJCS8qIEln
bm9yZWQgaW4gQUZTICovDQorCSAgICAgZXh0X3QgZXh0LCAJCS8qIElnbm9y
ZWQgaW4gQUZTICovDQorCSAgICAgc3RydWN0IHVjcmVkICpjcnApCQkvKiBJ
Z25vcmVkIGluIEFGUyAqLw0KIHsNCiAgICAgaW50IGVycm9yOw0KICAgICBp
bnQgY21kID0gQ21kOw0KQEAgLTE1NjMsMTAgKzEzNDgsOSBAQA0KIA0KIA0K
IGludA0KLWFmc19nbl9yZWFkbGluayh2cCwgdWlvcCwgY3JlZCkNCi0gICAg
IHN0cnVjdCB2bm9kZSAqdnA7DQotICAgICBzdHJ1Y3QgdWlvICp1aW9wOw0K
LSAgICAgc3RydWN0IHVjcmVkICpjcmVkOw0KK2Fmc19nbl9yZWFkbGluayhz
dHJ1Y3Qgdm5vZGUgKnZwLCANCisJICAgICAgICBzdHJ1Y3QgdWlvICp1aW9w
LCANCisJCXN0cnVjdCB1Y3JlZCAqY3JlZCkNCiB7DQogICAgIGludCBlcnJv
cjsNCiANCkBAIC0xNTc5LDExICsxMzYzLDEzIEBADQogDQogDQogaW50DQot
YWZzX2duX3NlbGVjdCh2cCwgd2hpY2gsIHZpbmZvLCBtcHgpDQotICAgICBz
dHJ1Y3Qgdm5vZGUgKnZwOw0KLSAgICAgaW50IHdoaWNoOw0KLSAgICAgY2Fk
ZHJfdCAqdmluZm87DQotICAgICBjYWRkcl90ICptcHg7DQorYWZzX2duX3Nl
bGVjdChzdHJ1Y3Qgdm5vZGUgKnZwLCANCisJICAgICAgaW50MzJsb25nNjRf
dCBjb3JyZWwsDQorCSAgICAgIHVzaG9ydCBlLA0KKwkgICAgICB1c2hvcnQg
KnJlLA0KKwkgICAgICB2b2lkICgqIG5vdGlmeSkoKSwNCisJICAgICAgY2Fk
ZHJfdCB2aW5mbywNCisJICAgICAgc3RydWN0IHVjcmVkICpjcnApDQogew0K
ICAgICBBRlNfU1RBVENOVChhZnNfZ25fc2VsZWN0KTsNCiAgICAgLyogTk8g
U1VQUE9SVCBmb3IgdGhpcyBpbiBhZnMgWUVUISAqLw0KQEAgLTE1OTIsMTEg
KzEzNzgsMTAgQEANCiANCiANCiBpbnQNCi1hZnNfZ25fc3ltbGluayh2cCwg
bGluaywgdGFyZ2V0LCBjcmVkKQ0KLSAgICAgc3RydWN0IHZub2RlICp2cDsN
Ci0gICAgIGNoYXIgKnRhcmdldDsNCi0gICAgIGNoYXIgKmxpbms7DQotICAg
ICBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQorYWZzX2duX3N5bWxpbmsoc3RydWN0
IHZub2RlICp2cCwgDQorCSAgICAgICBjaGFyICpsaW5rLCANCisJICAgICAg
IGNoYXIgKnRhcmdldCwgDQorCSAgICAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQp
DQogew0KICAgICBzdHJ1Y3QgdmF0dHIgdmE7DQogICAgIGludCBlcnJvcjsN
CkBAIC0xNjEzLDEwICsxMzk4LDkgQEANCiANCiANCiBpbnQNCi1hZnNfZ25f
cmVhZGRpcih2cCwgdWlvcCwgY3JlZCkNCi0gICAgIHN0cnVjdCB2bm9kZSAq
dnA7DQotICAgICBzdHJ1Y3QgdWlvICp1aW9wOw0KLSAgICAgc3RydWN0IHVj
cmVkICpjcmVkOw0KK2Fmc19nbl9yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAs
IA0KKwkgICAgICAgc3RydWN0IHVpbyAqdWlvcCwgDQorCSAgICAgICBzdHJ1
Y3QgdWNyZWQgKmNyZWQpDQogew0KICAgICBpbnQgZXJyb3I7DQogDQpAQCAt
MTYyOSwxNiArMTQxMywxNyBAQA0KIA0KIA0KIGV4dGVybiBTaW1wbGVfbG9j
ayBhZnNfYXN5bmNidWZfbG9jazsNCitleHRlcm4gc3RydWN0IGJ1ZiAqYWZz
X2FzeW5jYnVmOw0KK2V4dGVybiBpbnQgYWZzX2FzeW5jYnVmX2N2Ow0KKw0K
IC8qDQogICogQnVmZmVycyBhcmUgcmFua2VkIGJ5IGFnZS4gIEEgYnVmZmVy
J3MgYWdlIGlzIHRoZSB2YWx1ZSBvZiBhZnNfYmlvdGltZQ0KLSAqIHdoZW4g
dGhlIGJ1ZmZlciBpcyBwcm9jZXNzZWQgYnkgbmFpeF92bXN0cmF0ZWd5LiAg
YWZzX2Jpb3RpbWUgaXMNCisgKiB3aGVuIHRoZSBidWZmZXIgaXMgcHJvY2Vz
c2VkIGJ5IGFmc19nbl9zdHJhdGVneS4gIGFmc19iaW90aW1lIGlzDQogICog
aW5jcmVtZW50ZWQgZm9yIGVhY2ggYnVmZmVyLiAgQSBidWZmZXIncyBhZ2Ug
aXMga2VwdCBpbiBpdHMgYXZfYmFjayBmaWVsZC4NCiAgKiBUaGUgYWdlIHJh
bmtpbmcgaXMgdXNlZCBieSB0aGUgZGFlbW9ucywgd2hpY2ggZmF2b3Igb2xk
ZXIgYnVmZmVycy4NCiAgKi8NCiBhZnNfaW50MzIgYWZzX2Jpb3RpbWUgPSAw
Ow0KIA0KLWV4dGVybiBzdHJ1Y3QgYnVmICphZnNfYXN5bmNidWY7DQotZXh0
ZXJuIGludCBhZnNfYXN5bmNidWZfY3Y7DQogLyogVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgd2l0aCBhIGxpc3Qgb2YgYnVmZmVycywgdGhyZWFkZWQgdGhy
b3VnaA0KICAqIHRoZSBhdl9mb3J3IGZpZWxkLiAgT3VyIGdvYWwgaXMgdG8g
Y29weSB0aGUgbGlzdCBvZiBidWZmZXJzIGludG8gdGhlDQogICogYWZzX2Fz
eW5jYnVmIGxpc3QsIHNvcnRpbmcgYnVmZmVycyBpbnRvIHN1Ymxpc3RzIGxp
bmtlZCBieSB0aGUgYl93b3JrIGZpZWxkLg0KQEAgLTE2NDcsMTYgKzE0MzIs
MTggQEANCiAgKiBiZSBpbmNyZWFzZWQgdG8gY292ZXIgYWxsIG9mIHRoZSBi
dWZmZXJzIGluIHRoZSBiX3dvcmsgcXVldWUuDQogICovDQogI2RlZmluZQlB
SVhfVk1fQkxLU0laRQk4MTkyDQotYWZzX2duX3N0cmF0ZWd5KGFicCwgY3Jl
ZCkNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsNCi0gICAgIHJlZ2lzdGVy
IHN0cnVjdCBidWYgKmFicDsNCisvKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNl
ZW1zIHRvIGJlIGNhbGxlZCBhcyBkZHN0cmF0ZWd5IGVudHJ5IHBvaW50LCBp
ZQ0KKyAqIGhhcyBvbmUgYXJndW1lbnQuIEhvd2V2ZXIsIGl0IGFsc28gbmVl
ZHMgdG8gYmUgcHJlc2VudCBhcw0KKyAqIHZuX3N0cmF0ZWd5IGVudHJ5IHBv
aW50IHdoaWNoIGhhcyB0aHJlZSBhcmd1bWVudHMsIGJ1dCBpdCBzZWVtcyB0
byBuZXZlcg0KKyAqIGJlIGNhbGxlZCBpbiB0aGF0IGNhcGFjaXR5IChpdCB3
b3VsZCBmYWlsIGhvcnJpYmx5IGR1ZSB0byB0aGUgYXJndW1lbnQNCisgKiBt
aXNtYXRjaCkuIEknbSBjb25mdXNlZCwgYnV0IGl0IG9idmlvdXNseSBoYXMg
dG8gYmUgdGhpcyB3YXksIG1heWJlDQorICogc29tZSBJQk0gcGVvcGxlIGNh
biBzaGVkIHNvbSBsaWdodCBvbiB0aGlzIA0KKyAqLw0KK2ludA0KK2Fmc19n
bl9zdHJhdGVneShzdHJ1Y3QgYnVmICphYnApDQogew0KLSAgICByZWdpc3Rl
ciBzdHJ1Y3QgYnVmICoqbGJwLCAqdGJwOw0KLSNpZmRlZiBBRlNfNjRCSVRf
S0VSTkVMDQotICAgIGFmc19pbnQ2NCAqbHdicDsJCS8qIGxhc3QgcXV5IGlu
IHdvcmsgY2hhaW4gKi8NCi0jZWxzZQ0KLSAgICBpbnQgKmx3YnA7CQkJLyog
bGFzdCBndXkgaW4gd29yayBjaGFpbiAqLw0KLSNlbmRpZg0KKyAgICBzdHJ1
Y3QgYnVmICoqbGJwLCAqdGJwOw0KKyAgICBzdHJ1Y3QgYnVmICoqbHdicDsN
CiAgICAgc3RydWN0IGJ1ZiAqbmJwLCAqcWJwLCAqcW5icCwgKmZpcnN0Q29t
cGFyYWJsZTsNCiAgICAgaW50IGRvTWVyZ2U7DQogICAgIGludCBvbGRQcmlv
cml0eTsNCkBAIC0xNzEwLDYgKzE0OTcsNyBAQA0KIAkgICAgICovDQogCSAg
ICBjb250aW51ZTsNCiAJfQ0KKw0KIAkvKiB3ZSBtYXkgaGF2ZSBhY3R1YWxs
eSBhZGRlZCB0aGUgIm5ldyIgZmlyc3RDb21wYXJhYmxlICovDQogCWlmICh0
YnAtPmF2X2ZvcncgPT0gZmlyc3RDb21wYXJhYmxlKQ0KIAkgICAgZmlyc3RD
b21wYXJhYmxlID0gdGJwOw0KQEAgLTE3NjYsMzIgKzE1NTQsMjUgQEANCiAJ
CSAgICBkb01lcmdlID0gMTsJLyogYm90aCBpbnRlZ3JhbCAjcyBvZiBibG9j
a3MgKi8NCiAJCX0NCiAJCWlmIChkb01lcmdlKSB7DQotCQkgICAgcmVnaXN0
ZXIgc3RydWN0IGJ1ZiAqeGJwOw0KKwkJICAgIHN0cnVjdCBidWYgKnhicDsN
CiANCiAJCSAgICAvKiBtZXJnZSBib3RoIG9mIHRoZXNlIGJsb2NrcyB0b2dl
dGhlciAqLw0KIAkJICAgIC8qIGZpcnN0IHNldCBhZ2UgdG8gdGhlIG9sZGVy
IG9mIHRoZSB0d28gKi8NCi0jaWZkZWYgQUZTXzY0QklUX0tFUk5FTA0KLQkJ
ICAgIGlmICgoYWZzX2ludDY0KSBxbmJwLT5hdl9iYWNrIC0gKGFmc19pbnQ2
NCkgcWJwLT5hdl9iYWNrIDwNCi0JCQkwKQ0KLSNlbHNlDQotCQkgICAgaWYg
KChpbnQpcW5icC0+YXZfYmFjayAtIChpbnQpcWJwLT5hdl9iYWNrIDwgMCkN
Ci0jZW5kaWYNCisJCSAgICBpZiAoKGludDMybG9uZzY0X3QpIHFuYnAtPmF2
X2JhY2sgLSANCisJCQkgICAgKGludDMybG9uZzY0X3QpIHFicC0+YXZfYmFj
ayA8IDApIHsNCiAJCQlxYnAtPmF2X2JhY2sgPSBxbmJwLT5hdl9iYWNrOw0K
LQkJICAgIGx3YnAgPSAmcWJwLT5iX3dvcms7DQorCQkgICAgfQ0KKwkJICAg
IGx3YnAgPSAoc3RydWN0IGJ1ZiAqKikgJnFicC0+Yl93b3JrOw0KIAkJICAg
IC8qIGZpbmQgZW5kIG9mIHFicCdzIHdvcmsgcXVldWUgKi8NCi0JCSAgICBm
b3IgKHhicCA9IChzdHJ1Y3QgYnVmICopKCpsd2JwKTsgeGJwOw0KLQkJCSBs
d2JwID0gJnhicC0+Yl93b3JrLCB4YnAgPSAoc3RydWN0IGJ1ZiAqKSgqbHdi
cCkpOw0KKwkJICAgIGZvciAoeGJwID0gKmx3YnA7IHhicDsNCisJCQkgbHdi
cCA9IChzdHJ1Y3QgYnVmICoqKSAmeGJwLT5iX3dvcmssIHhicCA9ICpsd2Jw
KTsNCiAJCSAgICAvKg0KIAkJICAgICAqIG5vdyBzZXR0aW5nICpsd2JwIHdp
bGwgY2hhbmdlIHRoZSBsYXN0IHB0ciBpbiB0aGUgcWJwJ3MNCiAJCSAgICAg
KiB3b3JrIGNoYWluDQogCQkgICAgICovDQogCQkgICAgcWJwLT5hdl9mb3J3
ID0gcW5icC0+YXZfZm9ydzsJLyogc3BsaWNlIG91dCBxbmJwICovDQogCQkg
ICAgcWJwLT5iX2Jjb3VudCArPSBxbmJwLT5iX2Jjb3VudDsJLyogZml4IGNv
dW50ICovDQotI2lmZGVmIEFGU182NEJJVF9LRVJORUwNCi0JCSAgICAqbHdi
cCA9IChhZnNfaW50NjQpIHFuYnA7CS8qIGFwcGVuZCBxbmJwIHRvIGVuZCAq
Lw0KLSNlbHNlDQotCQkgICAgKmx3YnAgPSAoaW50KXFuYnA7CS8qIGFwcGVu
ZCBxbmJwIHRvIGVuZCAqLw0KLSNlbmRpZg0KKwkJICAgICpsd2JwID0gcW5i
cDsJLyogYXBwZW5kIHFuYnAgdG8gZW5kICovDQogCQkgICAgLyoNCiAJCSAg
ICAgKiBub3RlIHRoYXQgcW5icCBpcyBib2d1cywgYnV0IGl0IGRvZXNuJ3Qg
bWF0dGVyIGJlY2F1c2UNCiAJCSAgICAgKiB3ZSdyZSBnb2luZyB0byByZXN0
YXJ0IHRoZSBmb3IgbG9vcCBub3cuDQpAQCAtMTgwOCwxNiArMTU4OSwxOSBA
QA0KIH0NCiANCiANCi1hZnNfaW5hY3RpdmUoYXZjLCBhY3JlZCkNCi0gICAg
IHJlZ2lzdGVyIHN0cnVjdCB2Y2FjaGUgKmF2YzsNCi0gICAgIHN0cnVjdCBB
RlNfVUNSRUQgKmFjcmVkOw0KK2ludA0KK2Fmc19pbmFjdGl2ZShzdHJ1Y3Qg
dmNhY2hlICphdmMsIA0KKwkgICAgIHN0cnVjdCBBRlNfVUNSRUQgKmFjcmVk
KQ0KIHsNCiAgICAgYWZzX0luYWN0aXZlVkNhY2hlKGF2YywgYWNyZWQpOw0K
IH0NCiANCiBpbnQNCi1hZnNfZ25fcmV2b2tlKHZwKQ0KLSAgICAgc3RydWN0
IHZub2RlICp2cDsNCithZnNfZ25fcmV2b2tlKHN0cnVjdCB2bm9kZSAqdnAs
DQorICAgICAgICAgICAgICBpbnQzMmxvbmc2NF90IGNtZCwNCisJICAgICAg
aW50MzJsb25nNjRfdCBmbGFnLA0KKwkgICAgICBzdHJ1Y3QgdmF0dHIgKnZp
bmZvcCwNCisJICAgICAgc3RydWN0IHVjcmVkICpjcnApDQogew0KICAgICBB
RlNfU1RBVENOVChhZnNfZ25fcmV2b2tlKTsNCiAgICAgLyogTk8gU1VQUE9S
VCBmb3IgdGhpcyBpbiBhZnMgWUVUISAqLw0KQEAgLTE4MjUsNTEgKzE2MDks
MTQ2IEBADQogfQ0KIA0KIGludA0KLWFmc19nbl9nZXRhY2wodnAsIHVpb3As
IGNyZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSAgICAgc3RydWN0
IHVpbyAqdWlvcDsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsNCithZnNf
Z25fZ2V0YWNsKHN0cnVjdCB2bm9kZSAqdnAsIA0KKwkgICAgICBzdHJ1Y3Qg
dWlvICp1aW9wLCANCisJICAgICAgc3RydWN0IHVjcmVkICpjcmVkKQ0KIHsN
CiAgICAgcmV0dXJuIEVOT1NZUzsNCiB9Ow0KIA0KIA0KIGludA0KLWFmc19n
bl9zZXRhY2wodnAsIHVpb3AsIGNyZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUg
KnZwOw0KLSAgICAgc3RydWN0IHVpbyAqdWlvcDsNCi0gICAgIHN0cnVjdCB1
Y3JlZCAqY3JlZDsNCithZnNfZ25fc2V0YWNsKHN0cnVjdCB2bm9kZSAqdnAs
IA0KKwkgICAgICBzdHJ1Y3QgdWlvICp1aW9wLCANCisJICAgICAgc3RydWN0
IHVjcmVkICpjcmVkKQ0KIHsNCiAgICAgcmV0dXJuIEVOT1NZUzsNCiB9Ow0K
IA0KIA0KIGludA0KLWFmc19nbl9nZXRwY2wodnAsIHVpb3AsIGNyZWQpDQot
ICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSAgICAgc3RydWN0IHVpbyAqdWlv
cDsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3JlZDsNCithZnNfZ25fZ2V0cGNs
KHN0cnVjdCB2bm9kZSAqdnAsIA0KKwkgICAgICBzdHJ1Y3QgdWlvICp1aW9w
LCANCisJICAgICAgc3RydWN0IHVjcmVkICpjcmVkKQ0KIHsNCiAgICAgcmV0
dXJuIEVOT1NZUzsNCiB9Ow0KIA0KIA0KIGludA0KLWFmc19nbl9zZXRwY2wo
dnAsIHVpb3AsIGNyZWQpDQotICAgICBzdHJ1Y3Qgdm5vZGUgKnZwOw0KLSAg
ICAgc3RydWN0IHVpbyAqdWlvcDsNCi0gICAgIHN0cnVjdCB1Y3JlZCAqY3Jl
ZDsNCithZnNfZ25fc2V0cGNsKHN0cnVjdCB2bm9kZSAqdnAsIA0KKwkgICAg
ICBzdHJ1Y3QgdWlvICp1aW9wLCANCisJICAgICAgc3RydWN0IHVjcmVkICpj
cmVkKQ0KIHsNCiAgICAgcmV0dXJuIEVOT1NZUzsNCiB9Ow0KKw0KIGludA0K
IGFmc19nbl9lbm9zeXMoKQ0KIHsNCiAgICAgcmV0dXJuIEVOT1NZUzsNCiB9
DQogDQorLyoNCisgKiBkZWNsYXJlIGEgc3RydWN0IHZub2Rlb3BzIGFuZCBp
bml0aWFsaXplIGl0IHdpdGggcHRycyB0byBhbGwgZnVuY3Rpb25zDQorICov
DQorc3RydWN0IHZub2Rlb3BzIGFmc19nbl92bm9kZW9wcyA9IHsNCisgICAg
LyogY3JlYXRpb24vbmFtaW5nL2RlbGV0aW9uICovDQorICAgIGFmc19nbl9s
aW5rLA0KKyAgICBhZnNfZ25fbWtkaXIsDQorICAgIGFmc19nbl9ta25vZCwN
CisgICAgYWZzX2duX3JlbW92ZSwNCisgICAgYWZzX2duX3JlbmFtZSwNCisg
ICAgYWZzX2duX3JtZGlyLA0KKyAgICAvKiBsb29rdXAsIGZpbGUgaGFuZGxl
IHN0dWZmICovDQorICAgIGFmc19nbl9sb29rdXAsDQorICAgIChpbnQoKiko
c3RydWN0IHZub2RlKixzdHJ1Y3QgZmlsZWlkKixzdHJ1Y3QgdWNyZWQqKSkN
CisJYWZzX2duX2ZpZCwNCisgICAgLyogYWNjZXNzIHRvIGZpbGVzICovDQor
ICAgIChpbnQoKikoc3RydWN0IHZub2RlICosIGludDMybG9uZzY0X3QsIGV4
dF90LCBjYWRkcl90ICosc3RydWN0IHVjcmVkICopKQ0KKwlhZnNfZ25fb3Bl
biwNCisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2Rl
ICoqLCBpbnQzMmxvbmc2NF90LGNhZGRyX3QsIGludDMybG9uZzY0X3QsIGNh
ZGRyX3QgKiwgc3RydWN0IHVjcmVkICopKQ0KKwlhZnNfZ25fY3JlYXRlLA0K
KyAgICBhZnNfZ25faG9sZCwNCisgICAgYWZzX2duX3JlbGUsDQorICAgIGFm
c19nbl9jbG9zZSwNCisgICAgYWZzX2duX21hcCwNCisgICAgYWZzX2duX3Vu
bWFwLA0KKyAgICAvKiBtYW5pcHVsYXRlIGF0dHJpYnV0ZXMgb2YgZmlsZXMg
Ki8NCisgICAgYWZzX2duX2FjY2VzcywNCisgICAgYWZzX2duX2dldGF0dHIs
DQorICAgIGFmc19nbl9zZXRhdHRyLA0KKyAgICAvKiBkYXRhIHVwZGF0ZSBv
cGVyYXRpb25zICovDQorICAgIGFmc19nbl9mY2xlYXIsDQorICAgIGFmc19n
bl9mc3luYywNCisgICAgYWZzX2duX2Z0cnVuYywNCisgICAgYWZzX2duX3Jk
d3IsDQorICAgIGFmc19nbl9sb2NrY3RsLA0KKyAgICAvKiBleHRlbnNpb25z
ICovDQorICAgIGFmc19nbl9pb2N0bCwNCisgICAgYWZzX2duX3JlYWRsaW5r
LA0KKyAgICBhZnNfZ25fc2VsZWN0LA0KKyAgICBhZnNfZ25fc3ltbGluaywN
CisgICAgYWZzX2duX3JlYWRkaXIsDQorICAgIC8qIGJ1ZmZlciBvcHMgKi8N
CisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUqLHN0cnVjdCBidWYqLHN0cnVj
dCB1Y3JlZCopKQ0KKwlhZnNfZ25fc3RyYXRlZ3ksDQorICAgIC8qIHNlY3Vy
aXR5IHRoaW5ncyAqLw0KKyAgICBhZnNfZ25fcmV2b2tlLA0KKyAgICBhZnNf
Z25fZ2V0YWNsLA0KKyAgICBhZnNfZ25fc2V0YWNsLA0KKyAgICBhZnNfZ25f
Z2V0cGNsLA0KKyAgICBhZnNfZ25fc2V0cGNsLA0KKyAgICAoaW50KCopKHN0
cnVjdCB2bm9kZSosbG9uZyBsb25nKixzdHJ1Y3QgdWNyZWQqKSkNCisJYWZz
X2duX2Vub3N5cywJCS8qIHZuX3NlZWsgKi8NCisgICAgKGludCgqKShzdHJ1
Y3Qgdm5vZGUgKiwgaW50MzJsb25nNjRfdCwgaW50MzJsb25nNjRfdCwgb2Zm
c2V0X3QsIG9mZnNldF90LCBzdHJ1Y3QgdWNyZWQgKikpDQorCWFmc19nbl9l
bm9zeXMsCQkvKiB2bl9mc3luY19yYW5nZSAqLw0KKyAgICAoaW50KCopKHN0
cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiosIGludDMybG9uZzY0X3Qs
IGNoYXIgKiwgc3RydWN0IHZhdHRyICosIGludDMybG9uZzY0X3QsIGNhZGRy
X3QgKiwgc3RydWN0IHVjcmVkICopKQ0KKwlhZnNfZ25fZW5vc3lzLAkJLyog
dm5fY3JlYXRlX2F0dHIgKi8NCisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUg
KiwgaW50MzJsb25nNjRfdCwgdm9pZCAqLCBzaXplX3QsIHN0cnVjdCB1Y3Jl
ZCAqKSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZuX2ZpbmZvICovDQorICAg
IChpbnQoKikoc3RydWN0IHZub2RlICosIGNhZGRyX3QsIG9mZnNldF90LCBv
ZmZzZXRfdCwgdWludDMybG9uZzY0X3QsIHVpbnQzMmxvbmc2NF90LCBzdHJ1
Y3QgdWNyZWQgKikpDQorCWFmc19nbl9lbm9zeXMsCQkvKiB2bl9tYXBfbGxv
ZmYgKi8NCisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUqLHN0cnVjdCB1aW8q
LGludCosc3RydWN0IHVjcmVkKikpDQorCWFmc19nbl9lbm9zeXMsCQkvKiB2
bl9yZWFkZGlyX2VvZnAgKi8NCisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUg
KiwgZW51bSB1aW9fcncsIGludDMybG9uZzY0X3QsIHN0cnVjdCB1aW8gKiwg
ZXh0X3QgLCBjYWRkcl90LCBzdHJ1Y3QgdmF0dHIgKiwgc3RydWN0IHZhdHRy
ICosIHN0cnVjdCB1Y3JlZCAqKSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZu
X3Jkd3JfYXR0ciAqLw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSosaW50
LHZvaWQqLHN0cnVjdCB1Y3JlZCopKQ0KKwlhZnNfZ25fZW5vc3lzLAkJLyog
dm5fbWVtY250bCAqLw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSosY29u
c3QgY2hhciosc3RydWN0IHVpbyosc3RydWN0IHVjcmVkKikpDQorCWFmc19n
bl9lbm9zeXMsCQkvKiB2bl9nZXRlYSAqLw0KKyAgICAoaW50KCopKHN0cnVj
dCB2bm9kZSosY29uc3QgY2hhciosc3RydWN0IHVpbyosaW50LHN0cnVjdCB1
Y3JlZCopKQ0KKwlhZnNfZ25fZW5vc3lzLAkJLyogdm5fc2V0ZWEgKi8NCisg
ICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqLCBzdHJ1
Y3QgdWNyZWQgKikpDQorCWFmc19nbl9lbm9zeXMsCQkvKiB2bl9saXN0ZWEg
Ki8NCisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUgKiwgY29uc3QgY2hhciAq
LCBzdHJ1Y3QgdWNyZWQgKikpDQorCWFmc19nbl9lbm9zeXMsCQkvKiB2bl9y
ZW1vdmVlYSAqLw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSAqLCBjb25z
dCBjaGFyICosIHN0cnVjdCB2YXR0ciAqLCBzdHJ1Y3QgdWNyZWQgKikpDQor
CWFmc19nbl9lbm9zeXMsCQkvKiB2bl9zdGF0ZWEgKi8NCisgICAgKGludCgq
KShzdHJ1Y3Qgdm5vZGUgKiwgdWludDY0X3QsIGFjbF90eXBlX3QgKiwgc3Ry
dWN0IHVpbyAqLCBzaXplX3QgKiwgbW9kZV90ICosIHN0cnVjdCB1Y3JlZCAq
KSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZuX2dldHhhY2wgKi8NCisgICAg
KGludCgqKShzdHJ1Y3Qgdm5vZGUgKiwgdWludDY0X3QsIGFjbF90eXBlX3Qs
IHN0cnVjdCB1aW8gKiwgbW9kZV90LCAgc3RydWN0IHVjcmVkICopKQ0KKwlh
ZnNfZ25fZW5vc3lzLAkJLyogdm5fc2V0eGFjbCAqLw0KKyAgICBhZnNfZ25f
ZW5vc3lzLAkJLyogdm5fc3BhcmVFICovDQorICAgIGFmc19nbl9lbm9zeXMJ
CS8qIHZuX3NwYXJlRiAqLw0KKyNpZmRlZiBBRlNfQUlYNTFfRU5WDQorICAg
ICwoaW50KCopKHN0cnVjdCBnbm9kZSosbG9uZyBsb25nLGNoYXIqLHVuc2ln
bmVkIGxvbmcqLCB1bnNpZ25lZCBsb25nKix1bnNpZ25lZCBpbnQqKSkNCisJ
YWZzX2duX2Vub3N5cywJCS8qIHBhZ2VyQmFja1JhbmdlICovDQorICAgIChp
bnQ2NF90KCopKHN0cnVjdCBnbm9kZSopKQ0KKwlhZnNfZ25fZW5vc3lzLAkJ
LyogcGFnZXJHZXRGaWxlU2l6ZSAqLw0KKyAgICAodm9pZCgqKShzdHJ1Y3Qg
Z25vZGUgKiwgdnBuX3QsIHZwbl90ICosIHZwbl90ICosIHZwbl90ICosIGJv
b2xlYW5fdCkpDQorCWFmc19nbl9lbm9zeXMsCQkvKiBwYWdlclJlYWRBaGVh
ZCAqLw0KKyAgICAodm9pZCgqKShzdHJ1Y3QgZ25vZGUgKiwgaW50NjRfdCwg
aW50NjRfdCwgdWludCkpDQorCWFmc19nbl9lbm9zeXMsCQkvKiBwYWdlclJl
YWRXcml0ZUJlaGluZCAqLw0KKyAgICAodm9pZCgqKShzdHJ1Y3QgZ25vZGUq
LGxvbmcgbG9uZyx1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGxvbmcsdW5zaWdu
ZWQgaW50KSkNCisJYWZzX2duX2Vub3N5cwkJLyogcGFnZXJFbmRDb3B5ICov
DQorI2VuZGlmDQorfTsNCitzdHJ1Y3Qgdm5vZGVvcHMgKmFmc19vcHMgPSAm
YWZzX2duX3Zub2Rlb3BzOw0KKw0KKw0KKw0KIGV4dGVybiBzdHJ1Y3QgdmZz
b3BzIEFmc192ZnNvcHM7DQotZXh0ZXJuIHN0cnVjdCB2bm9kZW9wcyBhZnNf
Z25fdm5vZGVvcHM7DQogZXh0ZXJuIGludCBBZnNfaW5pdCgpOw0KIA0KICNk
ZWZpbmUJQUZTX0NBTExPVVRfVEJMX1NJWkUJMjU2DQpAQCAtMTg4Myw3ICsx
NzYyLDcgQEANCiBzdGF0aWMNCiB2ZnNfbW91bnQoc3RydWN0IHZmcyAqYSwg
c3RydWN0IHVjcmVkICpiKQ0KIHsNCi0gICAgcmVnaXN0ZXIgZ2xvY2tPd25l
ciwgcmV0Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0Ow0KIA0KICAgICBn
bG9ja093bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAgaWYgKCFnbG9ja093
bmVyKQ0KQEAgLTE4OTgsNyArMTc3Nyw3IEBADQogc3RhdGljDQogdmZzX3Vu
bW91bnQoc3RydWN0IHZmcyAqYSwgaW50IGIsIHN0cnVjdCB1Y3JlZCAqYykN
CiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50
IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZT
X0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0xOTEzLDcg
KzE3OTIsNyBAQA0KIHN0YXRpYw0KIHZmc19yb290KHN0cnVjdCB2ZnMgKmEs
IHN0cnVjdCB2bm9kZSAqKmIsIHN0cnVjdCB1Y3JlZCAqYykNCiB7DQotICAg
IHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3du
ZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7
DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0xOTI4LDcgKzE4MDcsNyBA
QA0KIHN0YXRpYw0KIHZmc19zdGF0ZnMoc3RydWN0IHZmcyAqYSwgc3RydWN0
IHN0YXRmcyAqYiwgc3RydWN0IHVjcmVkICpjKQ0KIHsNCi0gICAgcmVnaXN0
ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0
Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAg
aWYgKCFnbG9ja093bmVyKQ0KQEAgLTE5NDMsNyArMTgyMiw3IEBADQogc3Rh
dGljDQogdmZzX3N5bmMoc3RydWN0IGdmcyAqYSkNCiB7DQotICAgIHJlZ2lz
dGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJl
dDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAg
IGlmICghZ2xvY2tPd25lcikNCkBAIC0xOTU3LDcgKzE4MzYsNyBAQA0KIHN0
YXRpYw0KIHZmc192Z2V0KHN0cnVjdCB2ZnMgKmEsIHN0cnVjdCB2bm9kZSAq
KmIsIHN0cnVjdCBmaWxlaWQgKmMsIHN0cnVjdCB1Y3JlZCAqZCkNCiB7DQot
ICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2Nr
T3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NL
KCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0xOTcyLDcgKzE4NTEs
NyBAQA0KIHN0YXRpYw0KIHZmc19jbnRsKHN0cnVjdCB2ZnMgKmEsIGludCBi
LCBjYWRkcl90IGMsIHNpemVfdCBkLCBzdHJ1Y3QgdWNyZWQgKmUpDQogew0K
LSAgICByZWdpc3RlciBnbG9ja093bmVyLCByZXQ7DQorICAgIGludCBnbG9j
a093bmVyLCByZXQ7DQogDQogICAgIGdsb2NrT3duZXIgPSBJU0FGU19HTE9D
SygpOw0KICAgICBpZiAoIWdsb2NrT3duZXIpDQpAQCAtMTk4Nyw3ICsxODY2
LDcgQEANCiBzdGF0aWMNCiB2ZnNfcXVvdGFjdGwoc3RydWN0IHZmcyAqYSwg
aW50IGIsIHVpZF90IGMsIGNhZGRyX3QgZCwgc3RydWN0IHVjcmVkICplKQ0K
IHsNCi0gICAgcmVnaXN0ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBpbnQg
Z2xvY2tPd25lciwgcmV0Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNBRlNf
R0xPQ0soKTsNCiAgICAgaWYgKCFnbG9ja093bmVyKQ0KQEAgLTIwMDMsNyAr
MTg4Miw3IEBADQogc3RhdGljDQogdmZzX3N5bmN2ZnMoc3RydWN0IGdmcyAq
YSwgc3RydWN0IHZmcyAqYiwgaW50IGMsIHN0cnVjdCB1Y3JlZCAqZCkNCiB7
DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGds
b2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dM
T0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0yMDM0LDcgKzE5
MTMsNyBAQA0KIHN0YXRpYw0KIHZuX2xpbmsoc3RydWN0IHZub2RlICphLCBz
dHJ1Y3Qgdm5vZGUgKmIsIGNoYXIgKmMsIHN0cnVjdCB1Y3JlZCAqZCkNCiB7
DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGds
b2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dM
T0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0yMDQ3LDE0ICsx
OTI2LDkgQEANCiB9DQogDQogc3RhdGljDQotI2lmZGVmIEFGU19BSVg1MV9F
TlYNCiB2bl9ta2RpcihzdHJ1Y3Qgdm5vZGUgKmEsIGNoYXIgKmIsIGludDMy
bG9uZzY0X3QgYywgc3RydWN0IHVjcmVkICpkKQ0KIHsNCi0jZWxzZQ0KLXZu
X21rZGlyKHN0cnVjdCB2bm9kZSAqYSwgY2hhciAqYiwgaW50IGMsIHN0cnVj
dCB1Y3JlZCAqZCkNCi17DQotI2VuZGlmDQotICAgIHJlZ2lzdGVyIGdsb2Nr
T3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAg
ICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xv
Y2tPd25lcikNCkBAIC0yMDY3LDE1ICsxOTQxLDEwIEBADQogfQ0KIA0KIHN0
YXRpYw0KLSNpZmRlZiBBRlNfQUlYNTFfRU5WDQogdm5fbWtub2Qoc3RydWN0
IHZub2RlICphLCBjYWRkcl90IGIsIGludDMybG9uZzY0X3QgYywgZGV2X3Qg
ZCwNCiAJIHN0cnVjdCB1Y3JlZCAqZSkNCiB7DQotI2Vsc2UNCi12bl9ta25v
ZChzdHJ1Y3Qgdm5vZGUgKmEsIGNhZGRyX3QgYiwgaW50IGMsIGRldl90IGQs
IHN0cnVjdCB1Y3JlZCAqZSkNCi17DQotI2VuZGlmDQotICAgIHJlZ2lzdGVy
IGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsN
CiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlm
ICghZ2xvY2tPd25lcikNCkBAIC0yMDkwLDcgKzE5NTksNyBAQA0KIHN0YXRp
Yw0KIHZuX3JlbW92ZShzdHJ1Y3Qgdm5vZGUgKmEsIHN0cnVjdCB2bm9kZSAq
YiwgY2hhciAqYywgc3RydWN0IHVjcmVkICpkKQ0KIHsNCi0gICAgcmVnaXN0
ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0
Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAg
aWYgKCFnbG9ja093bmVyKQ0KQEAgLTIxMDYsNyArMTk3NSw3IEBADQogdm5f
cmVuYW1lKHN0cnVjdCB2bm9kZSAqYSwgc3RydWN0IHZub2RlICpiLCBjYWRk
cl90IGMsIHN0cnVjdCB2bm9kZSAqZCwNCiAJICBzdHJ1Y3Qgdm5vZGUgKmUs
IGNhZGRyX3QgZiwgc3RydWN0IHVjcmVkICpnKQ0KIHsNCi0gICAgcmVnaXN0
ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0
Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAg
aWYgKCFnbG9ja093bmVyKQ0KQEAgLTIxMjEsNyArMTk5MCw3IEBADQogc3Rh
dGljDQogdm5fcm1kaXIoc3RydWN0IHZub2RlICphLCBzdHJ1Y3Qgdm5vZGUg
KmIsIGNoYXIgKmMsIHN0cnVjdCB1Y3JlZCAqZCkNCiB7DQotICAgIHJlZ2lz
dGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJl
dDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAg
IGlmICghZ2xvY2tPd25lcikNCkBAIC0yMTM0LDE0ICsyMDAzLDEwIEBADQog
fQ0KIA0KIHN0YXRpYw0KLSNpZmRlZiBBRlNfQUlYNTFfRU5WDQotICB2bl9s
b29rdXAoc3RydWN0IHZub2RlICphLCBzdHJ1Y3Qgdm5vZGUgKipiLCBjaGFy
ICpjLCBpbnQzMmxvbmc2NF90IGQsDQotI2Vsc2UNCi12bl9sb29rdXAoc3Ry
dWN0IHZub2RlICphLCBzdHJ1Y3Qgdm5vZGUgKipiLCBjaGFyICpjLCBpbnQg
ZCwNCi0jZW5kaWYNCit2bl9sb29rdXAoc3RydWN0IHZub2RlICphLCBzdHJ1
Y3Qgdm5vZGUgKipiLCBjaGFyICpjLCBpbnQzMmxvbmc2NF90IGQsDQogCSAg
c3RydWN0IHZhdHRyICp2LCBzdHJ1Y3QgdWNyZWQgKmUpDQogew0KLSAgICBy
ZWdpc3RlciBnbG9ja093bmVyLCByZXQ7DQorICAgIGludCBnbG9ja093bmVy
LCByZXQ7DQogDQogICAgIGdsb2NrT3duZXIgPSBJU0FGU19HTE9DSygpOw0K
ICAgICBpZiAoIWdsb2NrT3duZXIpDQpAQCAtMjE1Niw3ICsyMDIxLDcgQEAN
CiBzdGF0aWMNCiB2bl9maWQoc3RydWN0IHZub2RlICphLCBzdHJ1Y3QgZmls
ZWlkICpiLCBzdHJ1Y3QgdWNyZWQgKmMpDQogew0KLSAgICByZWdpc3RlciBn
bG9ja093bmVyLCByZXQ7DQorICAgIGludCBnbG9ja093bmVyLCByZXQ7DQog
DQogICAgIGdsb2NrT3duZXIgPSBJU0FGU19HTE9DSygpOw0KICAgICBpZiAo
IWdsb2NrT3duZXIpDQpAQCAtMjE2OSwxNSArMjAzNCwxMyBAQA0KIH0NCiAN
CiBzdGF0aWMNCi0jaWZkZWYgQUZTX0FJWDUxX0VOVg0KLXZuX29wZW4oc3Ry
dWN0IHZub2RlICphLCBpbnQgYiwgaW50IGMsIGNhZGRyX3QgKiBkLCBzdHJ1
Y3QgdWNyZWQgKmUpDQotew0KLSNlbHNlDQotdm5fb3BlbihzdHJ1Y3Qgdm5v
ZGUgKmEsIGludDMybG9uZzY0X3QgYiwgZXh0X3QgYywgY2FkZHJfdCAqIGQs
DQordm5fb3BlbihzdHJ1Y3Qgdm5vZGUgKmEsIA0KKwlpbnQzMmxvbmc2NF90
IGIsIA0KKwlleHRfdCBjLCANCisJY2FkZHJfdCAqIGQsIA0KIAlzdHJ1Y3Qg
dWNyZWQgKmUpDQogew0KLSNlbmRpZg0KLSAgICByZWdpc3RlciBnbG9ja093
bmVyLCByZXQ7DQorICAgIGludCBnbG9ja093bmVyLCByZXQ7DQogDQogICAg
IGdsb2NrT3duZXIgPSBJU0FGU19HTE9DSygpOw0KICAgICBpZiAoIWdsb2Nr
T3duZXIpDQpAQCAtMjE5MCwxNiArMjA1MywxMCBAQA0KIH0NCiANCiBzdGF0
aWMNCi0jaWZkZWYgQUZTX0FJWDUxX0VOVg0KIHZuX2NyZWF0ZShzdHJ1Y3Qg
dm5vZGUgKmEsIHN0cnVjdCB2bm9kZSAqKmIsIGludDMybG9uZzY0X3QgYywg
Y2FkZHJfdCBkLA0KIAkgIGludDMybG9uZzY0X3QgZSwgY2FkZHJfdCAqIGYs
IHN0cnVjdCB1Y3JlZCAqZykNCiB7DQotI2Vsc2UNCi12bl9jcmVhdGUoc3Ry
dWN0IHZub2RlICphLCBzdHJ1Y3Qgdm5vZGUgKipiLCBpbnQgYywgY2FkZHJf
dCBkLCBpbnQgZSwNCi0JICBjYWRkcl90ICogZiwgc3RydWN0IHVjcmVkICpn
KQ0KLXsNCi0jZW5kaWYNCi0gICAgcmVnaXN0ZXIgZ2xvY2tPd25lciwgcmV0
Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0Ow0KIA0KICAgICBnbG9ja093
bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAgaWYgKCFnbG9ja093bmVyKQ0K
QEAgLTIyMTQsNyArMjA3MSw3IEBADQogc3RhdGljDQogdm5faG9sZChzdHJ1
Y3Qgdm5vZGUgKmEpDQogew0KLSAgICByZWdpc3RlciBnbG9ja093bmVyLCBy
ZXQ7DQorICAgIGludCBnbG9ja093bmVyLCByZXQ7DQogDQogICAgIGdsb2Nr
T3duZXIgPSBJU0FGU19HTE9DSygpOw0KICAgICBpZiAoIWdsb2NrT3duZXIp
DQpAQCAtMjIyOSw3ICsyMDg2LDcgQEANCiBzdGF0aWMNCiB2bl9yZWxlKHN0
cnVjdCB2bm9kZSAqYSkNCiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIs
IHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xv
Y2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25l
cikNCkBAIC0yMjQyLDE0ICsyMDk5LDkgQEANCiB9DQogDQogc3RhdGljDQot
I2lmZGVmIEFGU19BSVg1MV9FTlYNCiB2bl9jbG9zZShzdHJ1Y3Qgdm5vZGUg
KmEsIGludDMybG9uZzY0X3QgYiwgY2FkZHJfdCBjLCBzdHJ1Y3QgdWNyZWQg
KmQpDQogew0KLSNlbHNlDQotdm5fY2xvc2Uoc3RydWN0IHZub2RlICphLCBp
bnQgYiwgY2FkZHJfdCBjLCBzdHJ1Y3QgdWNyZWQgKmQpDQotew0KLSNlbmRp
Zg0KLSAgICByZWdpc3RlciBnbG9ja093bmVyLCByZXQ7DQorICAgIGludCBn
bG9ja093bmVyLCByZXQ7DQogDQogICAgIGdsb2NrT3duZXIgPSBJU0FGU19H
TE9DSygpOw0KICAgICBpZiAoIWdsb2NrT3duZXIpDQpAQCAtMjI2MiwxNSAr
MjExNCwxMCBAQA0KIH0NCiANCiBzdGF0aWMNCi0jaWZkZWYgQUZTX0FJWDUx
X0VOVg0KIHZuX21hcChzdHJ1Y3Qgdm5vZGUgKmEsIGNhZGRyX3QgYiwgdWlu
dDMybG9uZzY0X3QgYywgdWludDMybG9uZzY0X3QgZCwNCiAgICAgICAgdWlu
dDMybG9uZzY0X3QgZSwgc3RydWN0IHVjcmVkICpmKQ0KIHsNCi0jZWxzZQ0K
LXZuX21hcChzdHJ1Y3Qgdm5vZGUgKmEsIGNhZGRyX3QgYiwgdWludCBjLCB1
aW50IGQsIHVpbnQgZSwgc3RydWN0IHVjcmVkICpmKQ0KLXsNCi0jZW5kaWYN
Ci0gICAgcmVnaXN0ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBpbnQgZ2xv
Y2tPd25lciwgcmV0Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNBRlNfR0xP
Q0soKTsNCiAgICAgaWYgKCFnbG9ja093bmVyKQ0KQEAgLTIyODMsMTQgKzIx
MzAsOSBAQA0KIH0NCiANCiBzdGF0aWMNCi0jaWZkZWYgQUZTX0FJWDUxX0VO
Vg0KIHZuX3VubWFwKHN0cnVjdCB2bm9kZSAqYSwgaW50MzJsb25nNjRfdCBi
LCBzdHJ1Y3QgdWNyZWQgKmMpDQogew0KLSNlbHNlDQotdm5fdW5tYXAoc3Ry
dWN0IHZub2RlICphLCBpbnQgYiwgc3RydWN0IHVjcmVkICpjKQ0KLXsNCi0j
ZW5kaWYNCi0gICAgcmVnaXN0ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBp
bnQgZ2xvY2tPd25lciwgcmV0Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNB
RlNfR0xPQ0soKTsNCiAgICAgaWYgKCFnbG9ja093bmVyKQ0KQEAgLTIzMDMs
MTQgKzIxNDUsOSBAQA0KIH0NCiANCiBzdGF0aWMNCi0jaWZkZWYgQUZTX0FJ
WDUxX0VOVg0KIHZuX2FjY2VzcyhzdHJ1Y3Qgdm5vZGUgKmEsIGludDMybG9u
ZzY0X3QgYiwgaW50MzJsb25nNjRfdCBjLCBzdHJ1Y3QgdWNyZWQgKmQpDQog
ew0KLSNlbHNlDQotdm5fYWNjZXNzKHN0cnVjdCB2bm9kZSAqYSwgaW50IGIs
IGludCBjLCBzdHJ1Y3QgdWNyZWQgKmQpDQotew0KLSNlbmRpZg0KLSAgICBy
ZWdpc3RlciBnbG9ja093bmVyLCByZXQ7DQorICAgIGludCBnbG9ja093bmVy
LCByZXQ7DQogDQogICAgIGdsb2NrT3duZXIgPSBJU0FGU19HTE9DSygpOw0K
ICAgICBpZiAoIWdsb2NrT3duZXIpDQpAQCAtMjMyNSw3ICsyMTYyLDcgQEAN
CiBzdGF0aWMNCiB2bl9nZXRhdHRyKHN0cnVjdCB2bm9kZSAqYSwgc3RydWN0
IHZhdHRyICpiLCBzdHJ1Y3QgdWNyZWQgKmMpDQogew0KLSAgICByZWdpc3Rl
ciBnbG9ja093bmVyLCByZXQ7DQorICAgIGludCBnbG9ja093bmVyLCByZXQ7
DQogDQogICAgIGdsb2NrT3duZXIgPSBJU0FGU19HTE9DSygpOw0KICAgICBp
ZiAoIWdsb2NrT3duZXIpDQpAQCAtMjMzOCwxNSArMjE3NSwxMCBAQA0KIH0N
CiANCiBzdGF0aWMNCi0jaWZkZWYgQUZTX0FJWDUxX0VOVg0KIHZuX3NldGF0
dHIoc3RydWN0IHZub2RlICphLCBpbnQzMmxvbmc2NF90IGIsIGludDMybG9u
ZzY0X3QgYywgaW50MzJsb25nNjRfdCBkLA0KIAkgICBpbnQzMmxvbmc2NF90
IGUsIHN0cnVjdCB1Y3JlZCAqZikNCiB7DQotI2Vsc2UNCi12bl9zZXRhdHRy
KHN0cnVjdCB2bm9kZSAqYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUs
IHN0cnVjdCB1Y3JlZCAqZikNCi17DQotI2VuZGlmDQotICAgIHJlZ2lzdGVy
IGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsN
CiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlm
ICghZ2xvY2tPd25lcikNCkBAIC0yMzU5LDE0ICsyMTkxLDEwIEBADQogfQ0K
IA0KIHN0YXRpYw0KLSNpZmRlZiBBRlNfQUlYNTFfRU5WDQotICB2bl9mY2xl
YXIoc3RydWN0IHZub2RlICphLCBpbnQzMmxvbmc2NF90IGIsIG9mZnNldF90
IGMsIG9mZnNldF90IGQNCi0jZWxzZQ0KLXZuX2ZjbGVhcihzdHJ1Y3Qgdm5v
ZGUgKmEsIGludCBiLCBvZmZzZXRfdCBjLCBvZmZzZXRfdCBkDQotI2VuZGlm
DQordm5fZmNsZWFyKHN0cnVjdCB2bm9kZSAqYSwgaW50MzJsb25nNjRfdCBi
LCBvZmZzZXRfdCBjLCBvZmZzZXRfdCBkDQogCSAgLCBjYWRkcl90IGUsIHN0
cnVjdCB1Y3JlZCAqZikNCiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIs
IHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xv
Y2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25l
cikNCkBAIC0yMzc5LDE0ICsyMjA3LDkgQEANCiB9DQogDQogc3RhdGljDQot
I2lmZGVmIEFGU19BSVg1MV9FTlYNCiB2bl9mc3luYyhzdHJ1Y3Qgdm5vZGUg
KmEsIGludDMybG9uZzY0X3QgYiwgaW50MzJsb25nNjRfdCBjLCBzdHJ1Y3Qg
dWNyZWQgKmQpDQogew0KLSNlbHNlDQotdm5fZnN5bmMoc3RydWN0IHZub2Rl
ICphLCBpbnQgYiwgaW50IGMsIHN0cnVjdCB1Y3JlZCAqZCkNCi17DQotI2Vu
ZGlmDQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50
IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZT
X0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0yMzk5LDE1
ICsyMjIyLDEwIEBADQogfQ0KIA0KIHN0YXRpYw0KLSNpZmRlZiBBRlNfQUlY
NTFfRU5WDQogdm5fZnRydW5jKHN0cnVjdCB2bm9kZSAqYSwgaW50MzJsb25n
NjRfdCBiLCBvZmZzZXRfdCBjLCBjYWRkcl90IGQsDQogCSAgc3RydWN0IHVj
cmVkICplKQ0KIHsNCi0jZWxzZQ0KLXZuX2Z0cnVuYyhzdHJ1Y3Qgdm5vZGUg
KmEsIGludCBiLCBvZmZzZXRfdCBjLCBjYWRkcl90IGQsIHN0cnVjdCB1Y3Jl
ZCAqZSkNCi17DQotI2VuZGlmDQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIs
IHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xv
Y2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25l
cikNCkBAIC0yNDIwLDE2ICsyMjM4LDEwIEBADQogfQ0KIA0KIHN0YXRpYw0K
LSNpZmRlZiBBRlNfQUlYNTFfRU5WDQogdm5fcmR3cihzdHJ1Y3Qgdm5vZGUg
KmEsIGVudW0gdWlvX3J3IGIsIGludDMybG9uZzY0X3QgYywgc3RydWN0IHVp
byAqZCwNCiAJZXh0X3QgZSwgY2FkZHJfdCBmLCBzdHJ1Y3QgdmF0dHIgKnYs
IHN0cnVjdCB1Y3JlZCAqZykNCiB7DQotI2Vsc2UNCi12bl9yZHdyKHN0cnVj
dCB2bm9kZSAqYSwgZW51bSB1aW9fcncgYiwgaW50IGMsIHN0cnVjdCB1aW8g
KmQsIGludCBlLA0KLQljYWRkcl90IGYsIHN0cnVjdCB2YXR0ciAqdiwgc3Ry
dWN0IHVjcmVkICpnKQ0KLXsNCi0jZW5kaWYNCi0gICAgcmVnaXN0ZXIgZ2xv
Y2tPd25lciwgcmV0Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0Ow0KIA0K
ICAgICBnbG9ja093bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAgaWYgKCFn
bG9ja093bmVyKQ0KQEAgLTI0NDIsMTYgKzIyNTQsMTAgQEANCiB9DQogDQog
c3RhdGljDQotI2lmZGVmIEFGU19BSVg1MV9FTlYNCiB2bl9sb2NrY3RsKHN0
cnVjdCB2bm9kZSAqYSwgb2Zmc2V0X3QgYiwgc3RydWN0IGVmbG9jayAqYywg
aW50MzJsb25nNjRfdCBkLA0KLQkgICBpbnQgKCplKSAoKSwgdWxvbmczMmlu
dDY0X3QgKiBmLCBzdHJ1Y3QgdWNyZWQgKmcpDQorCSAgIGludCAoKmUpICgp
LCB1bG9uZyAqIGYsIHN0cnVjdCB1Y3JlZCAqZykNCiB7DQotI2Vsc2UNCi12
bl9sb2NrY3RsKHN0cnVjdCB2bm9kZSAqYSwgb2Zmc2V0X3QgYiwgc3RydWN0
IGVmbG9jayAqYywgaW50IGQsIGludCAoKmUpICgpLA0KLQkgICB1bG9uZyAq
IGYsIHN0cnVjdCB1Y3JlZCAqZykNCi17DQotI2VuZGlmDQotICAgIHJlZ2lz
dGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJl
dDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAg
IGlmICghZ2xvY2tPd25lcikNCkBAIC0yNDY0LDE1ICsyMjcwLDEwIEBADQog
fQ0KIA0KIHN0YXRpYw0KLSNpZmRlZiBBRlNfQUlYNTFfRU5WDQogdm5faW9j
dGwoc3RydWN0IHZub2RlICphLCBpbnQzMmxvbmc2NF90IGIsIGNhZGRyX3Qg
Yywgc2l6ZV90IGQsIGV4dF90IGUsDQogCSBzdHJ1Y3QgdWNyZWQgKmYpDQog
ew0KLSNlbHNlDQotdm5faW9jdGwoc3RydWN0IHZub2RlICphLCBpbnQgYiwg
Y2FkZHJfdCBjLCBzaXplX3QgZCwgaW50IGUsIHN0cnVjdCB1Y3JlZCAqZikN
Ci17DQotI2VuZGlmDQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsN
CisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25l
ciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBA
IC0yNDg3LDcgKzIyODgsNyBAQA0KIHN0YXRpYw0KIHZuX3JlYWRsaW5rKHN0
cnVjdCB2bm9kZSAqYSwgc3RydWN0IHVpbyAqYiwgc3RydWN0IHVjcmVkICpj
KQ0KIHsNCi0gICAgcmVnaXN0ZXIgZ2xvY2tPd25lciwgcmV0Ow0KKyAgICBp
bnQgZ2xvY2tPd25lciwgcmV0Ow0KIA0KICAgICBnbG9ja093bmVyID0gSVNB
RlNfR0xPQ0soKTsNCiAgICAgaWYgKCFnbG9ja093bmVyKQ0KQEAgLTI1MDAs
MTUgKzIzMDEsMTAgQEANCiB9DQogDQogc3RhdGljDQotI2lmZGVmIEFGU19B
SVg1MV9FTlYNCi0gIHZuX3NlbGVjdChzdHJ1Y3Qgdm5vZGUgKmEsIGludDMy
bG9uZzY0X3QgYiwgdXNob3J0IGMsIHVzaG9ydCAqIGQsDQotCSAgICB2b2lk
ICgqZSkgKCkNCi0jZWxzZQ0KLXZuX3NlbGVjdChzdHJ1Y3Qgdm5vZGUgKmEs
IGludCBiLCB1c2hvcnQgYywgdXNob3J0ICogZCwgdm9pZCAoKmUpICgpDQot
I2VuZGlmDQotCSAgLCBjYWRkcl90IGYsIHN0cnVjdCB1Y3JlZCAqZykNCit2
bl9zZWxlY3Qoc3RydWN0IHZub2RlICphLCBpbnQzMmxvbmc2NF90IGIsIHVz
aG9ydCBjLCB1c2hvcnQgKiBkLA0KKwkgIHZvaWQgKCplKSAoKSwgY2FkZHJf
dCBmLCBzdHJ1Y3QgdWNyZWQgKmcpDQogew0KLSAgICByZWdpc3RlciBnbG9j
a093bmVyLCByZXQ7DQorICAgIGludCBnbG9ja093bmVyLCByZXQ7DQogDQog
ICAgIGdsb2NrT3duZXIgPSBJU0FGU19HTE9DSygpOw0KICAgICBpZiAoIWds
b2NrT3duZXIpDQpAQCAtMjUyMyw3ICsyMzE5LDcgQEANCiBzdGF0aWMNCiB2
bl9zeW1saW5rKHN0cnVjdCB2bm9kZSAqYSwgY2hhciAqYiwgY2hhciAqYywg
c3RydWN0IHVjcmVkICpkKQ0KIHsNCi0gICAgcmVnaXN0ZXIgZ2xvY2tPd25l
ciwgcmV0Ow0KKyAgICBpbnQgZ2xvY2tPd25lciwgcmV0Ow0KIA0KICAgICBn
bG9ja093bmVyID0gSVNBRlNfR0xPQ0soKTsNCiAgICAgaWYgKCFnbG9ja093
bmVyKQ0KQEAgLTI1MzgsNyArMjMzNCw3IEBADQogc3RhdGljDQogdm5fcmVh
ZGRpcihzdHJ1Y3Qgdm5vZGUgKmEsIHN0cnVjdCB1aW8gKmIsIHN0cnVjdCB1
Y3JlZCAqYykNCiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsN
CisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25l
ciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBA
IC0yNTUxLDE1ICsyMzQ3LDEwIEBADQogfQ0KIA0KIHN0YXRpYw0KLSNpZmRl
ZiBBRlNfQUlYNTFfRU5WDQogdm5fcmV2b2tlKHN0cnVjdCB2bm9kZSAqYSwg
aW50MzJsb25nNjRfdCBiLCBpbnQzMmxvbmc2NF90IGMsIHN0cnVjdCB2YXR0
ciAqZCwNCiAJICBzdHJ1Y3QgdWNyZWQgKmUpDQogew0KLSNlbHNlDQotdm5f
cmV2b2tlKHN0cnVjdCB2bm9kZSAqYSwgaW50IGIsIGludCBjLCBzdHJ1Y3Qg
dmF0dHIgKmQsIHN0cnVjdCB1Y3JlZCAqZSkNCi17DQotI2VuZGlmDQotICAg
IHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3du
ZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7
DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0yNTc0LDcgKzIzNjUsNyBA
QA0KIHN0YXRpYw0KIHZuX2dldGFjbChzdHJ1Y3Qgdm5vZGUgKmEsIHN0cnVj
dCB1aW8gKmIsIHN0cnVjdCB1Y3JlZCAqYykNCiB7DQotICAgIHJlZ2lzdGVy
IGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsN
CiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlm
ICghZ2xvY2tPd25lcikNCkBAIC0yNTg5LDcgKzIzODAsNyBAQA0KIHN0YXRp
Yw0KIHZuX3NldGFjbChzdHJ1Y3Qgdm5vZGUgKmEsIHN0cnVjdCB1aW8gKmIs
IHN0cnVjdCB1Y3JlZCAqYykNCiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3du
ZXIsIHJldDsNCisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAg
Z2xvY2tPd25lciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tP
d25lcikNCkBAIC0yNjA0LDcgKzIzOTUsNyBAQA0KIHN0YXRpYw0KIHZuX2dl
dHBjbChzdHJ1Y3Qgdm5vZGUgKmEsIHN0cnVjdCB1aW8gKmIsIHN0cnVjdCB1
Y3JlZCAqYykNCiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsN
CisgICAgaW50IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25l
ciA9IElTQUZTX0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBA
IC0yNjE5LDcgKzI0MTAsNyBAQA0KIHN0YXRpYw0KIHZuX3NldHBjbChzdHJ1
Y3Qgdm5vZGUgKmEsIHN0cnVjdCB1aW8gKmIsIHN0cnVjdCB1Y3JlZCAqYykN
CiB7DQotICAgIHJlZ2lzdGVyIGdsb2NrT3duZXIsIHJldDsNCisgICAgaW50
IGdsb2NrT3duZXIsIHJldDsNCiANCiAgICAgZ2xvY2tPd25lciA9IElTQUZT
X0dMT0NLKCk7DQogICAgIGlmICghZ2xvY2tPd25lcikNCkBAIC0yNjMxLDgg
KzI0MjIsNiBAQA0KICAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1leHRlcm4g
aW50IGFmc19nbl9zdHJhdGVneSgpOw0KLQ0KIHN0cnVjdCB2bm9kZW9wcyBs
b2NrZWRfYWZzX2duX3Zub2Rlb3BzID0gew0KICAgICB2bl9saW5rLA0KICAg
ICB2bl9ta2RpciwNCkBAIC0yNjYyLDM1ICsyNDUxLDU2IEBADQogICAgIHZu
X3NlbGVjdCwNCiAgICAgdm5fc3ltbGluaywNCiAgICAgdm5fcmVhZGRpciwN
Ci0gICAgYWZzX2duX3N0cmF0ZWd5LAkJLyogbm8gbG9ja2luZyEhISAoZGlz
Y292ZXJlZCB0aGUgaGFyZCB3YXkpICovDQorICAgIChpbnQoKikoc3RydWN0
IHZub2RlKixzdHJ1Y3QgYnVmKixzdHJ1Y3QgdWNyZWQqKSkNCisJYWZzX2du
X3N0cmF0ZWd5LAkvKiBubyBsb2NraW5nISEhIChkaXNjb3ZlcmVkIHRoZSBo
YXJkIHdheSkgKi8NCiAgICAgdm5fcmV2b2tlLA0KICAgICB2bl9nZXRhY2ws
DQogICAgIHZuX3NldGFjbCwNCiAgICAgdm5fZ2V0cGNsLA0KICAgICB2bl9z
ZXRwY2wsDQotICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9zZWVrICovDQot
ICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9mc3luY19yYW5nZSAqLw0KLSAg
ICBhZnNfZ25fZW5vc3lzLAkJLyogdm5fY3JlYXRlX2F0dHIgKi8NCi0gICAg
YWZzX2duX2Vub3N5cywJCS8qIHZuX2ZpbmZvICovDQotICAgIGFmc19nbl9l
bm9zeXMsCQkvKiB2bl9tYXBfbGxvZmYgKi8NCi0gICAgYWZzX2duX2Vub3N5
cywJCS8qIHZuX3JlYWRkaXJfZW9mcCAqLw0KLSAgICBhZnNfZ25fZW5vc3lz
LAkJLyogdm5fcmR3cl9hdHRyICovDQotICAgIGFmc19nbl9lbm9zeXMsCQkv
KiB2bl9tZW1jbnRsICovDQotICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9z
cGFyZTcgKi8NCi0gICAgYWZzX2duX2Vub3N5cywJCS8qIHZuX3NwYXJlOCAq
Lw0KLSAgICBhZnNfZ25fZW5vc3lzLAkJLyogdm5fc3BhcmU5ICovDQotICAg
IGFmc19nbl9lbm9zeXMsCQkvKiB2bl9zcGFyZUEgKi8NCi0gICAgYWZzX2du
X2Vub3N5cywJCS8qIHZuX3NwYXJlQiAqLw0KLSAgICBhZnNfZ25fZW5vc3lz
LAkJLyogdm5fc3BhcmVDICovDQotICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2
bl9zcGFyZUQgKi8NCisgICAgKGludCgqKShzdHJ1Y3Qgdm5vZGUqLGxvbmcg
bG9uZyosc3RydWN0IHVjcmVkKikpIA0KKwlhZnNfZ25fZW5vc3lzLAkJLyog
dm5fc2VlayAqLw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSAqLCBpbnQz
Mmxvbmc2NF90LCBpbnQzMmxvbmc2NF90LCBvZmZzZXRfdCwgb2Zmc2V0X3Qs
IHN0cnVjdCB1Y3JlZCAqKSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZuX2Zz
eW5jX3JhbmdlICovDQorICAgIChpbnQoKikoc3RydWN0IHZub2RlICosIHN0
cnVjdCB2bm9kZSAqKiwgaW50MzJsb25nNjRfdCwgY2hhciAqLCBzdHJ1Y3Qg
dmF0dHIgKiwgaW50MzJsb25nNjRfdCwgY2FkZHJfdCAqLCBzdHJ1Y3QgdWNy
ZWQgKikpDQorCWFmc19nbl9lbm9zeXMsCQkvKiB2bl9jcmVhdGVfYXR0ciAq
Lw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSAqLCBpbnQzMmxvbmc2NF90
LCB2b2lkICosIHNpemVfdCwgc3RydWN0IHVjcmVkICopKQ0KKwlhZnNfZ25f
ZW5vc3lzLAkJLyogdm5fZmluZm8gKi8NCisgICAgKGludCgqKShzdHJ1Y3Qg
dm5vZGUgKiwgY2FkZHJfdCwgb2Zmc2V0X3QsIG9mZnNldF90LCB1aW50MzJs
b25nNjRfdCwgdWludDMybG9uZzY0X3QsIHN0cnVjdCB1Y3JlZCAqKSkNCisJ
YWZzX2duX2Vub3N5cywJCS8qIHZuX21hcF9sbG9mZiAqLw0KKyAgICAoaW50
KCopKHN0cnVjdCB2bm9kZSosc3RydWN0IHVpbyosaW50KixzdHJ1Y3QgdWNy
ZWQqKSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZuX3JlYWRkaXJfZW9mcCAq
Lw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSAqLCBlbnVtIHVpb19ydywg
aW50MzJsb25nNjRfdCwgc3RydWN0IHVpbyAqLCBleHRfdCAsIGNhZGRyX3Qs
IHN0cnVjdCB2YXR0ciAqLCBzdHJ1Y3QgdmF0dHIgKiwgc3RydWN0IHVjcmVk
ICopKQ0KKwlhZnNfZ25fZW5vc3lzLAkJLyogdm5fcmR3cl9hdHRyICovDQor
ICAgIChpbnQoKikoc3RydWN0IHZub2RlKixpbnQsdm9pZCosc3RydWN0IHVj
cmVkKikpDQorCWFmc19nbl9lbm9zeXMsCQkvKiB2bl9tZW1jbnRsICovDQor
ICAgIChpbnQoKikoc3RydWN0IHZub2RlKixjb25zdCBjaGFyKixzdHJ1Y3Qg
dWlvKixzdHJ1Y3QgdWNyZWQqKSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZu
X2dldGVhICovDQorICAgIChpbnQoKikoc3RydWN0IHZub2RlKixjb25zdCBj
aGFyKixzdHJ1Y3QgdWlvKixpbnQsc3RydWN0IHVjcmVkKikpDQorCWFmc19n
bl9lbm9zeXMsCQkvKiB2bl9zZXRlYSAqLw0KKyAgICAoaW50KCopKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIHN0cnVjdCB1Y3JlZCAqKSkNCisJ
YWZzX2duX2Vub3N5cywJCS8qIHZuX2xpc3RlYSAqLw0KKyAgICAoaW50KCop
KHN0cnVjdCB2bm9kZSAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB1Y3JlZCAq
KSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHZuX3JlbW92ZWVhICovDQorICAg
IChpbnQoKikoc3RydWN0IHZub2RlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0
IHZhdHRyICosIHN0cnVjdCB1Y3JlZCAqKSkNCisJYWZzX2duX2Vub3N5cywJ
CS8qIHZuX3N0YXRlYSAqLw0KKyAgICAoaW50KCopKHN0cnVjdCB2bm9kZSAq
LCB1aW50NjRfdCwgYWNsX3R5cGVfdCAqLCBzdHJ1Y3QgdWlvICosIHNpemVf
dCAqLCBtb2RlX3QgKiwgc3RydWN0IHVjcmVkICopKQ0KKwlhZnNfZ25fZW5v
c3lzLAkJLyogdm5fZ2V0eGFjbCAqLw0KKyAgICAoaW50KCopKHN0cnVjdCB2
bm9kZSAqLCB1aW50NjRfdCwgYWNsX3R5cGVfdCwgc3RydWN0IHVpbyAqLCBt
b2RlX3QsICBzdHJ1Y3QgdWNyZWQgKikpDQorCWFmc19nbl9lbm9zeXMsCQkv
KiB2bl9zZXR4YWNsICovDQogICAgIGFmc19nbl9lbm9zeXMsCQkvKiB2bl9z
cGFyZUUgKi8NCiAgICAgYWZzX2duX2Vub3N5cwkJLyogdm5fc3BhcmVGICov
DQogI2lmZGVmIEFGU19BSVg1MV9FTlYNCi0JLCBhZnNfZ25fZW5vc3lzLAkv
KiBwYWdlckJhY2tSYW5nZSAqLw0KLSAgICBhZnNfZ25fZW5vc3lzLAkJLyog
cGFnZXJHZXRGaWxlU2l6ZSAqLw0KLSAgICBhZnNfZ25fZW5vc3lzLAkJLyog
cGFnZXJSZWFkQWhlYWQgKi8NCi0gICAgYWZzX2duX2Vub3N5cywJCS8qIHBh
Z2VyV3JpdGVCZWhpbmQgKi8NCi0gICAgYWZzX2duX2Vub3N5cwkJLyogcGFn
ZXJFbmRDb3B5ICovDQorICAgICwoaW50KCopKHN0cnVjdCBnbm9kZSosbG9u
ZyBsb25nLGNoYXIqLHVuc2lnbmVkIGxvbmcqLCB1bnNpZ25lZCBsb25nKix1
bnNpZ25lZCBpbnQqKSkNCisJYWZzX2duX2Vub3N5cywJCS8qIHBhZ2VyQmFj
a1JhbmdlICovDQorICAgIChpbnQ2NF90KCopKHN0cnVjdCBnbm9kZSopKQ0K
KwlhZnNfZ25fZW5vc3lzLAkJLyogcGFnZXJHZXRGaWxlU2l6ZSAqLw0KKyAg
ICAodm9pZCgqKShzdHJ1Y3QgZ25vZGUgKiwgdnBuX3QsIHZwbl90ICosIHZw
bl90ICosIHZwbl90ICosIGJvb2xlYW5fdCkpDQorCWFmc19nbl9lbm9zeXMs
CQkvKiBwYWdlclJlYWRBaGVhZCAqLw0KKyAgICAodm9pZCgqKShzdHJ1Y3Qg
Z25vZGUgKiwgaW50NjRfdCwgaW50NjRfdCwgdWludCkpDQorCWFmc19nbl9l
bm9zeXMsCQkvKiBwYWdlclJlYWRXcml0ZUJlaGluZCAqLw0KKyAgICAodm9p
ZCgqKShzdHJ1Y3QgZ25vZGUqLGxvbmcgbG9uZyx1bnNpZ25lZCBsb25nLHVu
c2lnbmVkIGxvbmcsdW5zaWduZWQgaW50KSkNCisJYWZzX2duX2Vub3N5cwkJ
LyogcGFnZXJFbmRDb3B5ICovDQogI2VuZGlmDQogfTsNCiANCkluZGV4OiBz
cmMvcngvcnhfa2NvbW1vbi5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS
Q1MgZmlsZTogL2N2cy9vcGVuYWZzL3NyYy9yeC9yeF9rY29tbW9uLmMsdg0K
cmV0cmlldmluZyByZXZpc2lvbiAxLjQ5DQpkaWZmIC11IC1yMS40OSByeF9r
Y29tbW9uLmMNCi0tLSBzcmMvcngvcnhfa2NvbW1vbi5jCTggQXVnIDIwMDUg
MTQ6NTg6MzIgLTAwMDAJMS40OQ0KKysrIHNyYy9yeC9yeF9rY29tbW9uLmMJ
MTggQXVnIDIwMDUgMDk6NDU6MDIgLTAwMDANCkBAIC0yNiw4ICsyNiw4IEBA
DQogI2luY2x1ZGUgImFmc2ludC5oIg0KIA0KICNpZm5kZWYgUlhLX0xJU1RF
TkVSX0VOVg0KLWludCAoKnJ4a19QYWNrZXRBcnJpdmFsUHJvYykgKHJlZ2lz
dGVyIHN0cnVjdCByeF9wYWNrZXQgKiBhaGFuZGxlLCByZWdpc3RlciBzdHJ1
Y3Qgc29ja2FkZHJfaW4gKiBhZnJvbSwgY2hhciAqYXJvY2ssIGFmc19pbnQz
MiBhc2l6ZSk7CS8qIHNldCB0byBwYWNrZXQgYWxsb2NhdGlvbiBwcm9jZWR1
cmUgKi8NCi1pbnQgKCpyeGtfR2V0UGFja2V0UHJvYykgKGNoYXIgKiphaGFu
ZGxlLCBpbnQgYXNpemUpOw0KK2ludCAoKnJ4a19QYWNrZXRBcnJpdmFsUHJv
YykgKHN0cnVjdCByeF9wYWNrZXQgKiBhaGFuZGxlLCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gKiBhZnJvbSwgc3RydWN0IHNvY2tldCAqYXJvY2ssIGFmc19pbnQz
MiBhc2l6ZSk7CS8qIHNldCB0byBwYWNrZXQgYWxsb2NhdGlvbiBwcm9jZWR1
cmUgKi8NCitpbnQgKCpyeGtfR2V0UGFja2V0UHJvYykgKHN0cnVjdCByeF9w
YWNrZXQgKiphaGFuZGxlLCBpbnQgYXNpemUpOw0KICNlbmRpZg0KIA0KIG9z
aV9zb2NrZXQgKnJ4a19OZXdTb2NrZXRIb3N0KGFmc191aW50MzIgYWhvc3Qs
IHNob3J0IGFwb3J0KTsNCkBAIC0yODQsOSArMjg0LDkgQEANCiAjaWZuZGVm
IFJYS19MSVNURU5FUl9FTlYNCiAvKiBhc2l6ZSBpbmNsdWRlcyB0aGUgUngg
aGVhZGVyICovDQogc3RhdGljIGludA0KLU15UGFja2V0UHJvYyhjaGFyICoq
YWhhbmRsZSwgaW50IGFzaXplKQ0KK015UGFja2V0UHJvYyhzdHJ1Y3Qgcnhf
cGFja2V0ICoqYWhhbmRsZSwgaW50IGFzaXplKQ0KIHsNCi0gICAgcmVnaXN0
ZXIgc3RydWN0IHJ4X3BhY2tldCAqdHA7DQorICAgIHN0cnVjdCByeF9wYWNr
ZXQgKnRwOw0KIA0KICAgICAvKiBJZiB0aGlzIGlzIGxhcmdlciB0aGFuIHdl
IGV4cGVjdGVkLCBpbmNyZWFzZSByeF9tYXhSZWNlaXZlRGF0YVNpemUgKi8N
CiAgICAgLyogSWYgd2UgY2FuJ3Qgc2Nyb3VuZ2UgZW5vdWdoIGNidWZzLCB0
aGVuIHdlIGhhdmUgdG8gZHJvcCB0aGUgcGFja2V0LA0KQEAgLTMyMywyMCAr
MzIzLDIxIEBADQogICAgIGlmICghdHApDQogCXJldHVybiAtMTsNCiAgICAg
Lyogb3RoZXJ3aXNlIHdlIGhhdmUgYSBwYWNrZXQsIHNldCBhcHByb3ByaWF0
ZSB2YWx1ZXMgKi8NCi0gICAgKmFoYW5kbGUgPSAoY2hhciAqKXRwOw0KKyAg
ICAqYWhhbmRsZSA9IHRwOw0KICAgICByZXR1cm4gMDsNCiB9DQogDQogc3Rh
dGljIGludA0KLU15QXJyaXZhbFByb2MocmVnaXN0ZXIgc3RydWN0IHJ4X3Bh
Y2tldCAqYWhhbmRsZSwNCi0JICAgICAgcmVnaXN0ZXIgc3RydWN0IHNvY2th
ZGRyX2luICphZnJvbSwgY2hhciAqYXJvY2ssDQorTXlBcnJpdmFsUHJvYyhz
dHJ1Y3QgcnhfcGFja2V0ICphaGFuZGxlLA0KKwkgICAgICBzdHJ1Y3Qgc29j
a2FkZHJfaW4gKmFmcm9tLA0KKwkgICAgICBzdHJ1Y3Qgc29ja2V0ICphcm9j
aywNCiAJICAgICAgYWZzX2ludDMyIGFzaXplKQ0KIHsNCiAgICAgLyogaGFu
ZGxlIGJhc2ljIHJ4IHBhY2tldCAqLw0KICAgICBhaGFuZGxlLT5sZW5ndGgg
PSBhc2l6ZSAtIFJYX0hFQURFUl9TSVpFOw0KICAgICByeGlfRGVjb2RlUGFj
a2V0SGVhZGVyKGFoYW5kbGUpOw0KICAgICBhaGFuZGxlID0NCi0JcnhpX1Jl
Y2VpdmVQYWNrZXQoYWhhbmRsZSwgKHN0cnVjdCBzb2NrZXQgKilhcm9jaywN
CisJcnhpX1JlY2VpdmVQYWNrZXQoYWhhbmRsZSwgYXJvY2ssDQogCQkJICBh
ZnJvbS0+c2luX2FkZHIuc19hZGRyLCBhZnJvbS0+c2luX3BvcnQsIE5VTEws
DQogCQkJICBOVUxMKTsNCiANCkluZGV4OiBzcmMvcngvcnhfcHJvdG90eXBl
cy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9v
cGVuYWZzL3NyYy9yeC9yeF9wcm90b3R5cGVzLmgsdg0KcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjI0DQpkaWZmIC11IC1yMS4yNCByeF9wcm90b3R5cGVzLmgN
Ci0tLSBzcmMvcngvcnhfcHJvdG90eXBlcy5oCTMwIE1heSAyMDA1IDAzOjM5
OjUwIC0wMDAwCTEuMjQNCisrKyBzcmMvcngvcnhfcHJvdG90eXBlcy5oCTE4
IEF1ZyAyMDA1IDA5OjQ1OjAyIC0wMDAwDQpAQCAtMzA5LDEwICszMDksMTEg
QEANCiANCiANCiAvKiByeF9rY29tbW9uLmMgKi8NCi1leHRlcm4gaW50ICgq
cnhrX1BhY2tldEFycml2YWxQcm9jKSAocmVnaXN0ZXIgc3RydWN0IHJ4X3Bh
Y2tldCAqIGFoYW5kbGUsDQotCQkJCSAgICAgcmVnaXN0ZXIgc3RydWN0IHNv
Y2thZGRyX2luICogYWZyb20sDQotCQkJCSAgICAgY2hhciAqYXJvY2ssIGFm
c19pbnQzMiBhc2l6ZSk7DQotZXh0ZXJuIGludCAoKnJ4a19HZXRQYWNrZXRQ
cm9jKSAoY2hhciAqKmFoYW5kbGUsIGludCBhc2l6ZSk7DQorZXh0ZXJuIGlu
dCAoKnJ4a19QYWNrZXRBcnJpdmFsUHJvYykgKHN0cnVjdCByeF9wYWNrZXQg
KiBhaGFuZGxlLA0KKwkJCQkgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqIGFm
cm9tLA0KKwkJCQkgICAgIHN0cnVjdCBzb2NrZXQgKmFyb2NrLA0KKwkJCQkg
ICAgIGFmc19pbnQzMiBhc2l6ZSk7DQorZXh0ZXJuIGludCAoKnJ4a19HZXRQ
YWNrZXRQcm9jKSAoc3RydWN0IHJ4X3BhY2tldCAqKmFoYW5kbGUsIGludCBh
c2l6ZSk7DQogZXh0ZXJuIGFmc19pbnQzMiBhZnNfdGVybVN0YXRlOw0KIGV4
dGVybiBpbnQgcnhrX2luaXREb25lOw0KIA0KSW5kZXg6IHNyYy9yeC9BSVgv
cnhfa211dGV4LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvY3ZzL29wZW5hZnMvc3JjL3J4L0FJWC9yeF9rbXV0ZXguaCx2DQpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNw0KZGlmZiAtdSAtcjEuNyByeF9rbXV0ZXgu
aA0KLS0tIHNyYy9yeC9BSVgvcnhfa211dGV4LmgJMTQgQXByIDIwMDUgMDI6
MjU6MTQgLTAwMDAJMS43DQorKysgc3JjL3J4L0FJWC9yeF9rbXV0ZXguaAkx
OCBBdWcgMjAwNSAwOTo0NTowMiAtMDAwMA0KQEAgLTQ1LDcgKzQ1LDYgQEAN
CiAjZGVmaW5lIENWX0JST0FEQ0FTVChfY3YpCWVfd2FrZXVwKF9jdikNCiB0
eXBlZGVmIHNpbXBsZV9sb2NrX2RhdGEgYWZzX2ttdXRleF90Ow0KIHR5cGVk
ZWYgdGlkX3QgYWZzX2tjb25kdmFyX3Q7DQotI2RlZmluZQlvc2lfcnhXYWtl
dXAoY3YpCWVfd2FrZXVwKGN2KQ0KIA0KIA0KICNkZWZpbmUJTE9DS19JTklU
KGEsIGIpCQlsb2NrX2FsbG9jKCh2b2lkKikoYSksIExPQ0tfQUxMT0NfUElO
LCAxLCAxKSwgXA0KSW5kZXg6IHNyYy9yeC9BSVgvcnhfa25ldC5jDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9vcGVuYWZzL3Ny
Yy9yeC9BSVgvcnhfa25ldC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
Mg0KZGlmZiAtdSAtcjEuMTIgcnhfa25ldC5jDQotLS0gc3JjL3J4L0FJWC9y
eF9rbmV0LmMJMTkgQXVnIDIwMDQgMDU6NDI6MjYgLTAwMDAJMS4xMg0KKysr
IHNyYy9yeC9BSVgvcnhfa25ldC5jCTE4IEF1ZyAyMDA1IDA5OjQ1OjAyIC0w
MDAwDQpAQCAtMTksMTUgKzE5LDE0IEBADQogc3RhdGljIHN0cnVjdCBwcm90
b3N3IHBhcmVudF9wcm90bzsJLyogdWRwIHByb3RvIHN3aXRjaCAqLw0KIA0K
IHN0YXRpYyB2b2lkDQotcnhrX2lucHV0KGFtLCBobGVuKQ0KLSAgICAgcmVn
aXN0ZXIgc3RydWN0IG1idWYgKmFtOw0KK3J4a19pbnB1dChzdHJ1Y3QgbWJ1
ZiAqYW0sIGludCBobGVuKQ0KIHsNCi0gICAgcmVnaXN0ZXIgdW5zaWduZWQg
c2hvcnQgKnRzcDsNCisgICAgdW5zaWduZWQgc2hvcnQgKnRzcDsNCiAgICAg
aW50IGhkcjsNCiAgICAgc3RydWN0IHVkcGhkciAqdHU7DQotICAgIHJlZ2lz
dGVyIHN0cnVjdCBpcCAqdGk7DQorICAgIHN0cnVjdCBpcCAqdGk7DQogICAg
IHN0cnVjdCB1ZHBpcGhkciAqdHZ1Ow0KLSAgICByZWdpc3RlciBpbnQgaTsN
CisgICAgaW50IGk7DQogICAgIGNoYXIgKnBoYW5kbGU7DQogICAgIGxvbmcg
Y29kZTsNCiAgICAgc3RydWN0IHNvY2thZGRyX2luIHRhZGRyOw0KQEAgLTgw
LDggKzc5LDcgQEANCiBzdGF0aWMgc3RydWN0IGFycGNvbSByeGtfYm9nb3Np
dHk7DQogDQogLyogcnhrX2twb3JrIC0Jc2VuZCBwa3Qgb3ZlciB0byBuZXR3
ZXJrIGtwb3JjIGZvciBwcm9jZXNzaW5nICovDQotcnhrX2twb3JrKG0pDQot
ICAgICByZWdpc3RlciBzdHJ1Y3QgbWJ1ZiAqbTsNCityeGtfa3Bvcmsoc3Ry
dWN0IG1idWYgKm0pDQogew0KICAgICBmaW5kX2lucHV0X3R5cGUoMHhkZWFk
LCBtLCAmcnhrX2JvZ29zaXR5LCAwKTsNCiB9DQpAQCAtMTA4LDggKzEwNiw4
IEBADQogaXBfc3RyaXBvcHRpb25zKHN0cnVjdCBtYnVmICptLCBTVFJJUF9B
UkcyX1RZUEUgbW9wdCkNCiB7DQogICAgIHN0cnVjdCBpcCAqaXAgPSBtdG9k
KG0sIHN0cnVjdCBpcCAqKTsNCi0gICAgcmVnaXN0ZXIgaW50IGk7DQotICAg
IHJlZ2lzdGVyIGNhZGRyX3Qgb3B0czsNCisgICAgaW50IGk7DQorICAgIGNh
ZGRyX3Qgb3B0czsNCiAgICAgaW50IG9sZW47DQogDQogICAgIG9sZW4gPSAo
aXAtPmlwX2hsIDw8IDIpIC0gc2l6ZW9mKHN0cnVjdCBpcCk7DQpAQCAtMTIz
LDE2ICsxMjEsMTUgQEANCiB9DQogDQogLyogcnhrX1JYX2lucHV0IC0JUlgg
cGt0IGlucHV0IHByb2Nlc3MgKi8NCi1yeGtfUlhfaW5wdXQoYW0pDQotICAg
ICByZWdpc3RlciBzdHJ1Y3QgbWJ1ZiAqYW07DQorcnhrX1JYX2lucHV0KHN0
cnVjdCBtYnVmICphbSkNCiB7DQotICAgIHJlZ2lzdGVyIHVuc2lnbmVkIHNo
b3J0ICp0c3A7DQorICAgIHVuc2lnbmVkIHNob3J0ICp0c3A7DQogICAgIGlu
dCBoZHI7DQogICAgIHN0cnVjdCB1ZHBoZHIgKnR1Ow0KLSAgICByZWdpc3Rl
ciBzdHJ1Y3QgaXAgKnRpOw0KKyAgICBzdHJ1Y3QgaXAgKnRpOw0KICAgICBz
dHJ1Y3QgdWRwaXBoZHIgKnR2dTsNCi0gICAgcmVnaXN0ZXIgaW50IGk7DQot
ICAgIGNoYXIgKnBoYW5kbGU7DQorICAgIGludCBpOw0KKyAgICBzdHJ1Y3Qg
cnhfcGFja2V0ICpwaGFuZGxlOw0KICAgICBsb25nIGNvZGU7DQogICAgIHN0
cnVjdCBzb2NrYWRkcl9pbiB0YWRkcjsNCiAgICAgaW50IHRsZW47DQpAQCAt
MjQ1LDcgKzI0Miw3IEBADQogc3RhdGljDQogcnhrX2lzcigpDQogew0KLSAg
ICByZWdpc3RlciBzdHJ1Y3QgbWJ1ZiAqbTsNCisgICAgc3RydWN0IG1idWYg
Km07DQogICAgIElGUV9MT0NLX0RFQ0woKTsJCS8qIHNpbGx5IG1hY3JvIGhh
cyB0cmFpbGluZyAnOycuICBTaWdoLiAqLw0KICAgICB3aGlsZSAoMSkgew0K
IAlJRl9ERVFVRVVFKCZyeGtfcSwgbSk7DQpAQCAtMjYzLDcgKzI2MCw3IEBA
DQogc3RhdGljIHZvaWQNCiByeGtfZmFzdHRpbW8odm9pZCkNCiB7DQotICAg
IGludCAoKnRwcm9jKSAoKTsNCisgICAgdm9pZCAoKnRwcm9jKSAodm9pZCk7
DQogICAgIHN0cnVjdCBjbG9jayB0ZW1wOw0KIA0KICAgICAvKiBkbyByeCBm
YXN0dGltbyBwcm9jZXNzaW5nIGhlcmUgKi8NCkBAIC0yNzYsNyArMjczLDcg
QEANCiB2b2lkDQogcnhrX2luaXQodm9pZCkNCiB7DQotICAgIHJlZ2lzdGVy
IHN0cnVjdCBwcm90b3N3ICpwcjsNCisgICAgc3RydWN0IHByb3Rvc3cgKnBy
Ow0KICAgICBleHRlcm4gc3RydWN0IHByb3Rvc3cgKnBmZmluZHByb3RvKCk7
DQogDQogICAgIGlmICghcnhrX2luaXREb25lICYmIChwciA9IHBmZmluZHBy
b3RvKEFGX0lORVQsIElQUFJPVE9fVURQLCBTT0NLX0RHUkFNKSkpIHsNCkBA
IC0zMDcsOCArMzA0LDggQEANCiB2b2lkDQogc2h1dGRvd25fcnhrZXJuZWwo
dm9pZCkNCiB7DQotICAgIHJlZ2lzdGVyIHN0cnVjdCBwcm90b3N3ICpwcjsN
Ci0gICAgcmVnaXN0ZXIgaW50IGk7DQorICAgIHN0cnVjdCBwcm90b3N3ICpw
cjsNCisgICAgaW50IGk7DQogICAgIGV4dGVybiBzdHJ1Y3QgcHJvdG9zdyAq
cGZmaW5kcHJvdG8oKTsNCiANCiAgICAgaWYgKHJ4a19pbml0RG9uZSAmJiAo
cHIgPSBwZmZpbmRwcm90byhBRl9JTkVULCBJUFBST1RPX1VEUCwgU09DS19E
R1JBTSkpKSB7DQpAQCAtMzQ3LDEwICszNDQsMTAgQEANCiBvc2lfTmV0U2Vu
ZChvc2lfc29ja2V0IGFzb2NrZXQsIHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRk
ciwgc3RydWN0IGlvdmVjICpkdmVjLA0KIAkgICAgaW50IG52ZWMsIGFmc19p
bnQzMiBhc2l6ZSwgaW50IGlzdGFjaykNCiB7DQotICAgIHJlZ2lzdGVyIHN0
cnVjdCBtYnVmICp0bSwgKnVtOw0KLSAgICByZWdpc3RlciBhZnNfaW50MzIg
Y29kZTsNCisgICAgc3RydWN0IG1idWYgKnRtLCAqdW07DQorICAgIGFmc19p
bnQzMiBjb2RlOw0KICAgICBzdHJ1Y3QgbWJ1ZiAqdG9wID0gMDsNCi0gICAg
cmVnaXN0ZXIgc3RydWN0IG1idWYgKm0sICoqbXA7DQorICAgIHN0cnVjdCBt
YnVmICptLCAqKm1wOw0KICAgICBpbnQgbGVuLCBtbGVuOw0KICAgICBjaGFy
ICp0ZGF0YTsNCiAgICAgY2FkZHJfdCB0cGE7DQo=

---559023410-684387517-1124363698=:4087--