usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset driver

Valery V.Chikalov valera at chikalov.dp.ua
Fri Apr 27 23:30:10 UTC 2007


The following reply was made to PR usb/107642; it has been noted by GNATS.

From: "Valery V.Chikalov" <valera at chikalov.dp.ua>
To: bug-followup at FreeBSD.org,  valera at chikalov.dp.ua
Cc:  
Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset
 driver
Date: Sun, 22 Apr 2007 11:32:18 +0300

 This is a multi-part message in MIME format.
 --------------030900090303000507070905
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 7bit
 
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
 if_rum(4) for 7.0-CURRENT
 
 replaced amrr_* functions by "standard" ones already existed in
 net80211/ieee80211_amrr.c
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.5 (MingW32)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
 
 iD8DBQFGKx14760S3kDvEC4RAn8PAKCn990QJE0wZRKcwdxAZ61MY0JRgACeI2W5
 ZosSlh6pIqi7JdZ5Wi1BUYc=
 =LvWZ
 -----END PGP SIGNATURE-----
 
 --------------030900090303000507070905
 Content-Type: text/plain;
  name="rum.patch"
 Content-Transfer-Encoding: base64
 Content-Disposition: inline;
  filename="rum.patch"
 
 SW5kZXg6IHN5cy9kZXYvdXNiL2lmX3J1bS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
 c3lzL2Rldi91c2IvaWZfcnVtLmMNCmRpZmYgLU4gc3lzL2Rldi91c2IvaWZfcnVtLmMNCi0t
 LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHN5cy9kZXYvdXNi
 L2lmX3J1bS5jCTIyIEFwciAyMDA3IDA4OjAxOjU0IC0wMDAwDQpAQCAtMCwwICsxLDIyMjUg
 QEANCisvKiAgICAkT3BlbkJTRDogaWZfcnVtLmMsdiAxLjQwIDIwMDYvMDkvMTggMTY6MjA6
 MjAgZGFtaWVuIEV4cCAkICAgICovDQorLyogICAgJE5ldEJTRDogaWZfcnVtLmMsdiAxLjIg
 MjAwNi8xMS8wMSAwODozOToyNSB4dHJhZW1lIEV4cCAkICAgICovDQorDQorLyotDQorICog
 Q29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IERhbWllbiBCZXJnYW1pbmkgPGRhbWllbi5iZXJn
 YW1pbmlAZnJlZS5mcj4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgTmlhbGwgTydIaWdnaW5z
 IDxuaWFsbG9Ab3BlbmJzZC5vcmc+DQorICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3IFZh
 bGVyeSBWLkNoaWthbG92IDx2YWxlcmFAY2hpa2Fsb3YuZHAudWE+DQorICoNCisgKiBQZXJt
 aXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3
 YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5
 IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGlj
 ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4NCisg
 Kg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9S
 IERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUw0KKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09G
 VFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCisgKiBNRVJDSEFO
 VEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUg
 TElBQkxFIEZPUg0KKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05T
 RVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMNCisgKiBXSEFUU09FVkVSIFJFU1VM
 VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4N
 CisgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMg
 QUNUSU9OLCBBUklTSU5HIE9VVCBPRg0KKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
 VVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQorICovDQorDQorLyotDQor
 ICogUmFsaW5rIFRlY2hub2xvZ3kgUlQyNTAxVVNCL1JUMjYwMVVTQiBjaGlwc2V0IGRyaXZl
 cg0KKyAqIGh0dHA6Ly93d3cucmFsaW5rdGVjaC5jb20vDQorICovDQorDQorI2lmIGRlZmlu
 ZWQoX19OZXRCU0RfXykNCisjaW5jbHVkZSAib3B0X25zLmgiDQorI2VuZGlmDQorI2lmIGRl
 ZmluZWQoX19OZXRCU0RfXykNCisjaW5jbHVkZSAiYnBmaWx0ZXIuaCINCisjZW5kaWYNCisj
 aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykNCisjZGVmaW5lIE5CUEZJTFRFUiAgIDENCisjZW5k
 aWYNCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQ0KKyNpbmNsdWRlICJybmQuaCINCisjZW5k
 aWYNCisNCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQorI2luY2x1ZGUgPHN5cy9zeXNjdGwu
 aD4NCisjaW5jbHVkZSA8c3lzL3NvY2tpby5oPg0KKyNpbmNsdWRlIDxzeXMvbWJ1Zi5oPg0K
 KyNpbmNsdWRlIDxzeXMva2VybmVsLmg+DQorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCisj
 aW5jbHVkZSA8c3lzL3N5c3RtLmg+DQorI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4NCisjaW5j
 bHVkZSA8c3lzL21vZHVsZS5oPg0KKyNpbmNsdWRlIDxzeXMvYnVzLmg+DQorI2luY2x1ZGUg
 PHN5cy9lbmRpYW4uaD4NCisjaW5jbHVkZSA8c3lzL2xpbmtlci5oPg0KKyNpbmNsdWRlIDxz
 eXMvZmlybXdhcmUuaD4NCisNCisjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4NCisjaW5jbHVk
 ZSA8bWFjaGluZS9yZXNvdXJjZS5oPg0KKyNpbmNsdWRlIDxtYWNoaW5lL2Nsb2NrLmg+DQor
 I2luY2x1ZGUgPHN5cy9ybWFuLmg+DQorDQorI2luY2x1ZGUgPG5ldC9icGYuaD4NCisjaW5j
 bHVkZSA8bmV0L2lmLmg+DQorI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4NCisjaW5jbHVkZSA8
 bmV0L2V0aGVybmV0Lmg+DQorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KKyNpbmNsdWRlIDxu
 ZXQvaWZfbWVkaWEuaD4NCisjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+DQorDQorI2luY2x1
 ZGUgPG5ldDgwMjExL2llZWU4MDIxMV92YXIuaD4NCisjaW5jbHVkZSA8bmV0ODAyMTEvaWVl
 ZTgwMjExX3JhZGlvdGFwLmg+DQorI2luY2x1ZGUgPG5ldDgwMjExL2llZWU4MDIxMV9hbXJy
 Lmg+DQorDQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCisjaW5jbHVkZSA8bmV0aW5ldC9p
 bl9zeXN0bS5oPg0KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3Zhci5oPg0KKyNpbmNsdWRlIDxu
 ZXRpbmV0L2lwLmg+DQorI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4NCisNCisjaW5j
 bHVkZSA8ZGV2L3VzYi91c2IuaD4NCisjaW5jbHVkZSA8ZGV2L3VzYi91c2JkaS5oPg0KKyNp
 bmNsdWRlIDxkZXYvdXNiL3VzYmRpX3V0aWwuaD4NCisjaW5jbHVkZSAidXNiZGV2cy5oIg0K
 Kw0KKyNpbmNsdWRlIDxkZXYvdXNiL2lmX3J1bXJlZy5oPg0KKyNpbmNsdWRlIDxkZXYvdXNi
 L2lmX3J1bXZhci5oPg0KKw0KKyNpZmRlZiBVU0JfREVCVUcNCisjZGVmaW5lIFJVTV9ERUJV
 Rw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBSVU1fREVCVUcNCitpbnQgcnVtX2RlYnVnID0gMDsN
 CisjZGVmaW5lIERQUklOVEYoeCkgICAgZG8geyBpZiAocnVtX2RlYnVnKSBsb2dwcmludGYg
 eDsgfSB3aGlsZSAoMCkNCisjZGVmaW5lIERQUklOVEZOKG4sIHgpICAgIGRvIHsgaWYgKHJ1
 bV9kZWJ1ZyA+PSAobikpIGxvZ3ByaW50ZiB4OyB9IHdoaWxlICgwKQ0KKyNlbHNlDQorI2Rl
 ZmluZSBEUFJJTlRGKHgpDQorI2RlZmluZSBEUFJJTlRGTihuLCB4KQ0KKyNlbmRpZg0KKw0K
 Ky8qIHZhcmlvdXMgc3VwcG9ydGVkIGRldmljZSB2ZW5kb3JzL3Byb2R1Y3RzICovDQorc3Rh
 dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2bm8gcnVtX2RldnNbXSA9IHsNCisgICAgeyBVU0Jf
 VkVORE9SX0FCT0NPTSwgICAgICAgIFVTQl9QUk9EVUNUX0FCT0NPTV9SVDI1NzMgfSwNCisg
 ICAgeyBVU0JfVkVORE9SX0FTVVMsICAgICAgICAgIFVTQl9QUk9EVUNUX0FTVVNfUlQyNTcz
 IH0sDQorICAgIHsgVVNCX1ZFTkRPUl9CRUxLSU4sICAgICAgICBVU0JfUFJPRFVDVF9CRUxL
 SU5fRjVENzA1MEEgfSwNCisgICAgeyBVU0JfVkVORE9SX0JFTEtJTiwgICAgICAgIFVTQl9Q
 Uk9EVUNUX0JFTEtJTl9GNUQ5MDUwVjMgfSwNCisgICAgeyBVU0JfVkVORE9SX0xJTktTWVM0
 LCAgICAgIFVTQl9QUk9EVUNUX0xJTktTWVM0X1dVU0I1NEdDIH0sDQorICAgIHsgVVNCX1ZF
 TkRPUl9DT05DRVBUUk9OSUMyLCBVU0JfUFJPRFVDVF9DT05DRVBUUk9OSUMyX0M1NFJVMiB9
 LA0KKyAgICB7IFVTQl9WRU5ET1JfRElDS1NNSVRILCAgICAgVVNCX1BST0RVQ1RfRElDS1NN
 SVRIX0NXRDg1NEYgfSwNCisgICAgeyBVU0JfVkVORE9SX0RJQ0tTTUlUSCwgICAgIFVTQl9Q
 Uk9EVUNUX0RJQ0tTTUlUSF9SVDI1NzMgfSwNCisgICAgeyBVU0JfVkVORE9SX0RMSU5LMiwg
 ICAgICAgIFVTQl9QUk9EVUNUX0RMSU5LMl9EV0xHMTIyQzEgfSwNCisgICAgeyBVU0JfVkVO
 RE9SX0RMSU5LMiwgICAgICAgIFVTQl9QUk9EVUNUX0RMSU5LMl9XVUExMzQwIH0sDQorICAg
 IHsgVVNCX1ZFTkRPUl9HSUdBQllURSwgICAgICBVU0JfUFJPRFVDVF9HSUdBQllURV9HTldC
 MDFHUyB9LA0KKyAgICB7IFVTQl9WRU5ET1JfR0lHQVNFVCwgICAgICAgVVNCX1BST0RVQ1Rf
 R0lHQVNFVF9SVDI1NzMgfSwNCisgICAgeyBVU0JfVkVORE9SX0dPT0RXQVksICAgICAgIFVT
 Ql9QUk9EVUNUX0dPT0RXQVlfUlQyNTczIH0sDQorICAgIHsgVVNCX1ZFTkRPUl9IVUFXRUkz
 Q09NLCAgICBVU0JfUFJPRFVDVF9IVUFXRUkzQ09NX1JUMjU3MyB9LA0KKyAgICB7IFVTQl9W
 RU5ET1JfTVNJLCAgICAgICAgICAgVVNCX1BST0RVQ1RfTVNJX1JUMjU3MyB9LA0KKyAgICB7
 IFVTQl9WRU5ET1JfTVNJLCAgICAgICAgICAgVVNCX1BST0RVQ1RfTVNJX1JUMjU3M18yIH0s
 DQorICAgIHsgVVNCX1ZFTkRPUl9NU0ksICAgICAgICAgICBVU0JfUFJPRFVDVF9NU0lfUlQy
 NTczXzMgfSwNCisgICAgeyBVU0JfVkVORE9SX1BMQU5FWDIsICAgICAgIFVTQl9QUk9EVUNU
 X1BMQU5FWDJfR1dVU01NIH0sDQorICAgIHsgVVNCX1ZFTkRPUl9RQ09NLCAgICAgICAgICBV
 U0JfUFJPRFVDVF9RQ09NX1JUMjU3MyB9LA0KKyAgICB7IFVTQl9WRU5ET1JfUUNPTSwgICAg
 ICAgICAgVVNCX1BST0RVQ1RfUUNPTV9SVDI1NzNfMiB9LA0KKyAgICB7IFVTQl9WRU5ET1Jf
 UkFMSU5LLCAgICAgICAgVVNCX1BST0RVQ1RfUkFMSU5LX1JUMjU3MyB9LA0KKyAgICB7IFVT
 Ql9WRU5ET1JfUkFMSU5LLCAgICAgICAgVVNCX1BST0RVQ1RfUkFMSU5LX1JUMjY3MSB9LA0K
 KyAgICB7IFVTQl9WRU5ET1JfU0lURUNPTUVVLCAgICAgVVNCX1BST0RVQ1RfU0lURUNPTUVV
 X1dMMTEzUjIgfSwNCisgICAgeyBVU0JfVkVORE9SX1NJVEVDT01FVSwgICAgIFVTQl9QUk9E
 VUNUX1NJVEVDT01FVV9XTDE3MiB9LA0KKyAgICB7IFVTQl9WRU5ET1JfU1VSRUNPTSwgICAg
 ICAgVVNCX1BST0RVQ1RfU1VSRUNPTV9SVDI1NzMgfQ0KK307DQorDQorTU9EVUxFX0RFUEVO
 RChydW0sIHdsYW4sICAgICAxLCAxLCAxKTsNCitNT0RVTEVfREVQRU5EKHJ1bSwgZmlybXdh
 cmUsIDEsIDEsIDEpOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fbG9hZF9mdyhzdHJ1
 Y3QgcnVtX3NvZnRjICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc3RvcChzdHJ1Y3Qg
 aWZuZXQgKik7DQorDQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9pbml0KHZvaWQgKik7DQor
 c3RhdGljIGludCAgICAgICAgIHJ1bV9pb2N0bChzdHJ1Y3QgaWZuZXQgKiwgdV9sb25nLCBj
 YWRkcl90KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3N0YXJ0KHN0cnVjdCBpZm5ldCAq
 KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqKTsN
 CitzdGF0aWMgaW50ICAgICAgICAgcnVtX21lZGlhX2NoYW5nZShzdHJ1Y3QgaWZuZXQgKik7
 DQorDQorc3RhdGljIGludCAgICAgICAgIHJ1bV9hbGxvY190eF9saXN0KHN0cnVjdCBydW1f
 c29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9mcmVlX3R4X2xpc3Qoc3RydWN0
 IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgaW50ICAgICAgICAgcnVtX2FsbG9jX3J4X2xpc3Qo
 c3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX2ZyZWVfcnhf
 bGlzdChzdHJ1Y3QgcnVtX3NvZnRjICopOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1f
 dHhlb2YodXNiZF94ZmVyX2hhbmRsZSwgdXNiZF9wcml2YXRlX2hhbmRsZSwgdXNiZF9zdGF0
 dXMpOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fcnhlb2YodXNiZF94ZmVyX2hhbmRsZSwg
 dXNiZF9wcml2YXRlX2hhbmRsZSwgdXNiZF9zdGF0dXMpOw0KKw0KK3N0YXRpYyB2b2lkICAg
 ICAgICBydW1fdGFzayh2b2lkICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fbmV4dF9z
 Y2FuKHZvaWQgKik7DQorc3RhdGljIGludCAgICAgICAgIHJ1bV9uZXdzdGF0ZShzdHJ1Y3Qg
 aWVlZTgwMjExY29tICosIGVudW0gaWVlZTgwMjExX3N0YXRlLCBpbnQpOw0KK3N0YXRpYyB1
 aW50OF90ICAgICBydW1fcnhyYXRlKHN0cnVjdCBydW1fcnhfZGVzYyAqKTsNCitzdGF0aWMg
 aW50ICAgICAgICAgcnVtX2Fja19yYXRlKHN0cnVjdCBpZWVlODAyMTFjb20gKiwgaW50KTsN
 CitzdGF0aWMgdWludDE2X3QgICAgcnVtX3R4dGltZShpbnQsIGludCwgdWludDMyX3QpOw0K
 K3N0YXRpYyB1aW50OF90ICAgICBydW1fcGxjcF9zaWduYWwoaW50KTsNCisNCitzdGF0aWMg
 dm9pZCAgICAgICAgcnVtX3NldHVwX3R4X2Rlc2Moc3RydWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1
 Y3QgcnVtX3R4X2Rlc2MgKiwgdWludDMyX3QsIHVpbnQxNl90LCBpbnQsIGludCk7DQorc3Rh
 dGljIGludCAgICAgICAgIHJ1bV90eF9tZ3Qoc3RydWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1Y3Qg
 bWJ1ZiAqLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKik7DQorc3RhdGljIGludCAgICAgICAg
 IHJ1bV90eF9kYXRhKHN0cnVjdCBydW1fc29mdGMgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0
 IGllZWU4MDIxMV9ub2RlICopOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fcmVhZF9l
 ZXByb20oc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX2Vl
 cHJvbV9yZWFkKHN0cnVjdCBydW1fc29mdGMgKiwgdWludDE2X3QsIHZvaWQgKiwgaW50KTsN
 CitzdGF0aWMgdWludDMyX3QgICAgcnVtX3JlYWQoc3RydWN0IHJ1bV9zb2Z0YyAqLCB1aW50
 MTZfdCk7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9yZWFkX211bHRpKHN0cnVjdCBydW1f
 c29mdGMgKiwgdWludDE2X3QsIHZvaWQgKiwgaW50KTsNCitzdGF0aWMgdm9pZCAgICAgICAg
 cnVtX3dyaXRlKHN0cnVjdCBydW1fc29mdGMgKiwgdWludDE2X3QsIHVpbnQzMl90KTsNCitz
 dGF0aWMgdm9pZCAgICAgICAgcnVtX3dyaXRlX211bHRpKHN0cnVjdCBydW1fc29mdGMgKiwg
 dWludDE2X3QsIHZvaWQgKiwgc2l6ZV90KTsNCisNCitzdGF0aWMgaW50ICAgICAgICAgcnVt
 X2JicF9pbml0KHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1
 bV9iYnBfd3JpdGUoc3RydWN0IHJ1bV9zb2Z0YyAqLCB1aW50OF90LCB1aW50OF90KTsNCitz
 dGF0aWMgdWludDhfdCAgICAgcnVtX2JicF9yZWFkKHN0cnVjdCBydW1fc29mdGMgKiwgdWlu
 dDhfdCk7DQorDQorc3RhdGljIGNvbnN0IGNoYXIgICpydW1fZ2V0X3JmKGludCk7DQorc3Rh
 dGljIHZvaWQgICAgICAgIHJ1bV9yZl93cml0ZShzdHJ1Y3QgcnVtX3NvZnRjICosIHVpbnQ4
 X3QsIHVpbnQzMl90KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3NlbGVjdF9hbnRlbm5h
 KHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9lbmFibGVf
 bXJyKHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9zZXRf
 dHhwcmVhbWJsZShzdHJ1Y3QgcnVtX3NvZnRjICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBy
 dW1fc2V0X2Jhc2ljcmF0ZXMoc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAg
 ICAgICAgcnVtX3NlbGVjdF9iYW5kKHN0cnVjdCBydW1fc29mdGMgKiwgc3RydWN0IGllZWU4
 MDIxMV9jaGFubmVsICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc2V0X2NoYW4oc3Ry
 dWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKik7DQorc3RhdGlj
 IHZvaWQgICAgICAgIHJ1bV9lbmFibGVfdHNmX3N5bmMoc3RydWN0IHJ1bV9zb2Z0YyAqKTsN
 CitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3VwZGF0ZV9zbG90KHN0cnVjdCBydW1fc29mdGMg
 Kik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9zZXRfYnNzaWQoc3RydWN0IHJ1bV9zb2Z0
 YyAqLCBjb25zdCB1aW50OF90ICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc2V0X21h
 Y2FkZHIoc3RydWN0IHJ1bV9zb2Z0YyAqLCBjb25zdCB1aW50OF90ICopOw0KK3N0YXRpYyB2
 b2lkICAgICAgICBydW1fdXBkYXRlX3Byb21pc2Moc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCisN
 CitzdGF0aWMgaW50ICAgICAgICAgcnVtX3ByZXBhcmVfYmVhY29uKHN0cnVjdCBydW1fc29m
 dGMgKik7DQorDQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9hbXJyX3N0YXJ0KHN0cnVjdCBy
 dW1fc29mdGMgKiwgc3RydWN0IGllZWU4MDIxMV9ub2RlICopOw0KK3N0YXRpYyB2b2lkICAg
 ICAgICBydW1fYW1ycl90aW1lb3V0KHZvaWQgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1
 bV9hbXJyX3VwZGF0ZSh1c2JkX3hmZXJfaGFuZGxlLCB1c2JkX3ByaXZhdGVfaGFuZGxlLCB1
 c2JkX3N0YXR1cyBzdGF0dXMpOw0KKw0KKy8qDQorICogU3VwcG9ydGVkIHJhdGVzIGZvciA4
 MDIuMTFhL2IvZyBtb2RlcyAoaW4gNTAwS2JwcyB1bml0KS4NCisgKi8NCitzdGF0aWMgY29u
 c3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0IHJ1bV9yYXRlc2V0XzExYSA9DQorICAgIHsg
 OCwgeyAxMiwgMTgsIDI0LCAzNiwgNDgsIDcyLCA5NiwgMTA4IH0gfTsNCisNCitzdGF0aWMg
 Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0IHJ1bV9yYXRlc2V0XzExYiA9DQorICAg
 IHsgNCwgeyAyLCA0LCAxMSwgMjIgfSB9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWVl
 ZTgwMjExX3JhdGVzZXQgcnVtX3JhdGVzZXRfMTFnID0NCisgICAgeyAxMiwgeyAyLCA0LCAx
 MSwgMjIsIDEyLCAxOCwgMjQsIDM2LCA0OCwgNzIsIDk2LCAxMDggfSB9Ow0KKw0KK3N0YXRp
 YyBjb25zdCBzdHJ1Y3Qgew0KKyAgICB1aW50MzJfdCAgICByZWc7DQorICAgIHVpbnQzMl90
 ICAgIHZhbDsNCit9IHJ1bV9kZWZfbWFjW10gPSB7DQorICAgIFJUMjU3M19ERUZfTUFDDQor
 fTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHsNCisgICAgdWludDhfdCAgICByZWc7DQor
 ICAgIHVpbnQ4X3QgICAgdmFsOw0KK30gcnVtX2RlZl9iYnBbXSA9IHsNCisgICAgUlQyNTcz
 X0RFRl9CQlANCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmZwcm9nIHsNCisgICAg
 dWludDhfdCAgICAgICAgY2hhbjsNCisgICAgdWludDMyX3QgICAgcjEsIHIyLCByMywgcjQ7
 DQorfSAgcnVtX3JmNTIyNltdID0gew0KKyAgICBSVDI1NzNfUkY1MjI2DQorfSwgcnVtX3Jm
 NTIyNVtdID0gew0KKyAgICBSVDI1NzNfUkY1MjI1DQorfTsNCisNCitVU0JfREVDTEFSRV9E
 UklWRVIocnVtKTsNCisNCitVU0JfTUFUQ0gocnVtKQ0KK3sNCisgICAgVVNCX01BVENIX1NU
 QVJUKHJ1bSwgdWFhKTsNCisNCisgICAgaWYgKHVhYS0+aWZhY2UgIT0gTlVMTCkNCisgICAg
 ICAgIHJldHVybiBVTUFUQ0hfTk9ORTsNCisNCisgICAgcmV0dXJuICh1c2JfbG9va3VwKHJ1
 bV9kZXZzLCB1YWEtPnZlbmRvciwgdWFhLT5wcm9kdWN0KSAhPSBOVUxMKSA/DQorICAgICAg
 ICBVTUFUQ0hfVkVORE9SX1BST0RVQ1QgOiBVTUFUQ0hfTk9ORTsNCit9DQorDQorc3RhdGlj
 IHZvaWQNCitydW1fbG9hZF9mdyhzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIGNv
 bnN0IGNoYXIgKmZ3X25hbWUgPSAicnQyNTczIjsNCisgICAgY29uc3Qgc3RydWN0IGZpcm13
 YXJlICpmcDsNCisJdV9pbnQgaTsNCisJc2l6ZV90IHNpemU7DQorICAgIHVzYl9kZXZpY2Vf
 cmVxdWVzdF90IHJlcTsNCisgICAgdWludDE2X3QgcmVnID0gUlQyNTczX01DVV9DT0RFX0JB
 U0U7DQorICAgIHVzYmRfc3RhdHVzIGVycm9yOw0KKw0KKyAgICBmcCA9IGZpcm13YXJlX2dl
 dChmd19uYW1lKTsNCisNCisgICAgaWYgKGZwID09IE5VTEwgfHwgZnAtPmRhdGFzaXplID09
 IDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IGZhaWxlZCBsb2FkZmlybXdhcmUgb2YgZmls
 ZSAlc1xuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYp
 LCBmd19uYW1lKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfSBlbHNlIHsNCisgICAgICAg
 IHByaW50ZigiJXM6IGZpcm13YXJlIGxvYWRlZDogbmFtZTogJXMsIHNpemU6JWRcbiIsIGRl
 dmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldiksIGZwLT5uYW1lLCAoaW50KWZwLT5kYXRh
 c2l6ZSk7DQorICAgIH0NCisNCisgICAgLyogY29weSBmaXJtd2FyZSBpbWFnZSBpbnRvIE5J
 QyAqLw0KKyAgICBmb3IgKGkgPSAwLCBzaXplID0gZnAtPmRhdGFzaXplOyBzaXplID49IDQ7
 IA0KKwkJCXJlZyArPSA0LCBpICs9IDQsIHNpemUgLT0gNCkNCisgICAgICAgIHJ1bV93cml0
 ZShzYywgcmVnLCBVR0VURFcoKGNvbnN0IHVfY2hhciopZnAtPmRhdGEgKyBpKSk7DQorDQor
 ICAgIHJlcS5ibVJlcXVlc3RUeXBlID0gVVRfV1JJVEVfVkVORE9SX0RFVklDRTsNCisgICAg
 cmVxLmJSZXF1ZXN0ID0gUlQyNTczX01DVV9DTlRMOw0KKyAgICBVU0VUVyhyZXEud1ZhbHVl
 LCBSVDI1NzNfTUNVX1JVTik7DQorICAgIFVTRVRXKHJlcS53SW5kZXgsIDApOw0KKyAgICBV
 U0VUVyhyZXEud0xlbmd0aCwgMCk7DQorDQorICAgIGVycm9yID0gdXNiZF9kb19yZXF1ZXN0
 KHNjLT5zY191ZGV2LCAmcmVxLCBOVUxMKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisg
 ICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCBydW4gZmlybXdhcmU6ICVzXG4iLA0KKyAg
 ICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldiksIHVzYmRfZXJyc3Ry
 KGVycm9yKSk7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgbG9hZCA4MDUxIG1p
 Y3JvY29kZVxuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19k
 ZXYpKTsNCisgICAgfQ0KKw0KK30NCisNCitVU0JfQVRUQUNIKHJ1bSkNCit7DQorICAgIFVT
 Ql9BVFRBQ0hfU1RBUlQocnVtLCBzYywgdWFhKTsNCisgICAgc3RydWN0IGllZWU4MDIxMWNv
 bSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IE5VTEw7DQor
 ICAgIHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvcl90ICppZDsNCisgICAgdXNiX2VuZHBvaW50
 X2Rlc2NyaXB0b3JfdCAqZWQ7DQorICAgIHVzYmRfc3RhdHVzIGVycm9yOw0KKyAgICBjaGFy
 IGRldmluZm9bMTAyNF07DQorICAgIGludCBpLCBudHJpZXM7DQorICAgIHVpbnQzMl90IHRt
 cDsNCisNCisJYnplcm8oc2MsIHNpemVvZihzdHJ1Y3QgcnVtX3NvZnRjKSk7DQorDQorICAg
 IHVzYmRfZGV2aW5mbyh1YWEtPmRldmljZSwgMCwgZGV2aW5mbyk7DQorDQorICAgIHNjLT5z
 Y191ZGV2ID0gdWFhLT5kZXZpY2U7DQorICAgIHNjLT5zY19mbGFncyA9IDA7DQorDQorICAg
 IFVTQl9BVFRBQ0hfU0VUVVA7DQorICAgIHByaW50ZigiJXM6ICVzXG4iLCBkZXZpY2VfZ2V0
 X25hbWV1bml0KHNjLT5zY19kZXYpLCBkZXZpbmZvKTsNCisNCisgICAgaWYgKHVzYmRfc2V0
 X2NvbmZpZ19ubyhzYy0+c2NfdWRldiwgUlQyNTczX0NPTkZJR19OTywgMCkgIT0gMCkgew0K
 KyAgICAgICAgcHJpbnRmKCIlczogY291bGQgbm90IHNldCBjb25maWd1cmF0aW9uIG5vXG4i
 LA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAg
 ICAgICAgVVNCX0FUVEFDSF9FUlJPUl9SRVRVUk47DQorICAgIH0NCisNCisgICAgLyogZ2V0
 IHRoZSBmaXJzdCBpbnRlcmZhY2UgaGFuZGxlICovDQorICAgIGVycm9yID0gdXNiZF9kZXZp
 Y2UyaW50ZXJmYWNlX2hhbmRsZShzYy0+c2NfdWRldiwgUlQyNTczX0lGQUNFX0lOREVYLA0K
 KyAgICAgICAgJnNjLT5zY19pZmFjZSk7DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAg
 ICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgZ2V0IGludGVyZmFjZSBoYW5kbGVcbiIsDQor
 ICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAg
 ICBVU0JfQVRUQUNIX0VSUk9SX1JFVFVSTjsNCisgICAgfQ0KKw0KKyAgICAvKg0KKyAgICAg
 KiBGaW5kIGVuZHBvaW50cy4NCisgICAgICovDQorICAgIGlkID0gdXNiZF9nZXRfaW50ZXJm
 YWNlX2Rlc2NyaXB0b3Ioc2MtPnNjX2lmYWNlKTsNCisNCisgICAgc2MtPnNjX3J4X25vID0g
 c2MtPnNjX3R4X25vID0gLTE7DQorICAgIGZvciAoaSA9IDA7IGkgPCBpZC0+Yk51bUVuZHBv
 aW50czsgaSsrKSB7DQorICAgICAgICBlZCA9IHVzYmRfaW50ZXJmYWNlMmVuZHBvaW50X2Rl
 c2NyaXB0b3Ioc2MtPnNjX2lmYWNlLCBpKTsNCisgICAgICAgIGlmIChlZCA9PSBOVUxMKSB7
 DQorICAgICAgICAgICAgcHJpbnRmKCIlczogbm8gZW5kcG9pbnQgZGVzY3JpcHRvciBmb3Ig
 aWZhY2UgJWRcbiIsDQorICAgICAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2Mt
 PnNjX2RldiksIGkpOw0KKyAgICAgICAgICAgIFVTQl9BVFRBQ0hfRVJST1JfUkVUVVJOOw0K
 KyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKFVFX0dFVF9ESVIoZWQtPmJFbmRwb2ludEFk
 ZHJlc3MpID09IFVFX0RJUl9JTiAmJg0KKyAgICAgICAgICAgIFVFX0dFVF9YRkVSVFlQRShl
 ZC0+Ym1BdHRyaWJ1dGVzKSA9PSBVRV9CVUxLKQ0KKyAgICAgICAgICAgIHNjLT5zY19yeF9u
 byA9IGVkLT5iRW5kcG9pbnRBZGRyZXNzOw0KKyAgICAgICAgZWxzZSBpZiAoVUVfR0VUX0RJ
 UihlZC0+YkVuZHBvaW50QWRkcmVzcykgPT0gVUVfRElSX09VVCAmJg0KKyAgICAgICAgICAg
 IFVFX0dFVF9YRkVSVFlQRShlZC0+Ym1BdHRyaWJ1dGVzKSA9PSBVRV9CVUxLKQ0KKyAgICAg
 ICAgICAgIHNjLT5zY190eF9ubyA9IGVkLT5iRW5kcG9pbnRBZGRyZXNzOw0KKyAgICB9DQor
 ICAgIGlmIChzYy0+c2Nfcnhfbm8gPT0gLTEgfHwgc2MtPnNjX3R4X25vID09IC0xKSB7DQor
 ICAgICAgICBwcmludGYoIiVzOiBtaXNzaW5nIGVuZHBvaW50XG4iLCBkZXZpY2VfZ2V0X25h
 bWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIFVTQl9BVFRBQ0hfRVJST1JfUkVUVVJO
 Ow0KKyAgICB9DQorCQ0KKyAgICBtdHhfaW5pdCgmc2MtPnNjX210eCwgZGV2aWNlX2dldF9u
 YW1ldW5pdChzYy0+c2NfZGV2KSwgTVRYX05FVFdPUktfTE9DSywgDQorCQlNVFhfREVGIHwg
 TVRYX1JFQ1VSU0UpOw0KKw0KKyAgICB1c2JfaW5pdF90YXNrKCZzYy0+c2NfdGFzaywgcnVt
 X3Rhc2ssIHNjKTsNCisgICAgY2FsbG91dF9pbml0KCZzYy0+c2Nhbl9jaCwgZGVidWdfbXBz
 YWZlbmV0ID8gQ0FMTE9VVF9NUFNBRkUgOiAwKTsNCisgICAgY2FsbG91dF9pbml0KCZzYy0+
 YW1ycl9jaCwgMCk7DQorDQorICAgIC8qIHJldHJpZXZlIFJUMjU3MyByZXYuIG5vICovDQor
 ICAgIGZvciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwMDsgbnRyaWVzKyspIHsNCisgICAg
 ICAgIGlmICgodG1wID0gcnVtX3JlYWQoc2MsIFJUMjU3M19NQUNfQ1NSMCkpICE9IDApDQor
 ICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBERUxBWSgxMDAwKTsNCisgICAgfQ0KKyAg
 ICBpZiAobnRyaWVzID09IDEwMDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IHRpbWVvdXQg
 d2FpdGluZyBmb3IgY2hpcCB0byBzZXR0bGVcbiIsDQorICAgICAgICAgICAgZGV2aWNlX2dl
 dF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBVU0JfQVRUQUNIX0VSUk9SX1JF
 VFVSTjsNCisgICAgfQ0KKw0KKyAgICAvKiByZXRyaWV2ZSBNQUMgYWRkcmVzcyBhbmQgdmFy
 aW91cyBvdGhlciB0aGluZ3MgZnJvbSBFRVBST00gKi8NCisgICAgcnVtX3JlYWRfZWVwcm9t
 KHNjKTsNCisNCisgICAgcHJpbnRmKCIlczogTUFDL0JCUCBSVCUwNHggKHJldiAweCUwNXgp
 LCBSRiAlcywgYWRkcmVzcyAlc1xuIiwNCisgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQo
 c2MtPnNjX2RldiksIHNjLT5tYWNiYnBfcmV2LCB0bXAsDQorICAgICAgICBydW1fZ2V0X3Jm
 KHNjLT5yZl9yZXYpLCBldGhlcl9zcHJpbnRmKGljLT5pY19teWFkZHIpKTsNCisNCisgICAg
 aWZwID0gc2MtPnNjX2lmcCA9IGlmX2FsbG9jKElGVF9FVEhFUik7DQorICAgIGlmIChpZnAg
 PT0gTlVMTCkgew0KKyAgICAgICAgcHJpbnRmKCIlczogY2FuIG5vdCBpZl9hbGxvYygpXG4i
 LCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIFVTQl9BVFRB
 Q0hfRVJST1JfUkVUVVJOOw0KKyAgICB9DQorDQorI2lmIDENCisgICAgcnVtX2xvYWRfZnco
 c2MpOw0KKyNlbmRpZg0KKw0KKyAgICBpYy0+aWNfaWZwID0gaWZwOw0KKyAgICBpYy0+aWNf
 cGh5dHlwZSA9IElFRUU4MDIxMV9UX09GRE07ICAgIC8qIG5vdCBvbmx5LCBidXQgbm90IHVz
 ZWQgKi8NCisgICAgaWMtPmljX29wbW9kZSAgPSBJRUVFODAyMTFfTV9TVEE7ICAgIC8qIGRl
 ZmF1bHQgdG8gQlNTIG1vZGUgKi8NCisgICAgaWMtPmljX3N0YXRlICAgPSBJRUVFODAyMTFf
 U19JTklUOw0KKw0KKyAgICAvKiBzZXQgZGV2aWNlIGNhcGFiaWxpdGllcyAqLw0KKyAgICBp
 Yy0+aWNfY2FwcyA9DQorICAgICAgICBJRUVFODAyMTFfQ19JQlNTIHwgICAgICAgIC8qIElC
 U1MgbW9kZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX01PTklUT1IgfCAg
 ICAvKiBtb25pdG9yIG1vZGUgc3VwcG9ydGVkICovDQorICAgICAgICBJRUVFODAyMTFfQ19I
 T1NUQVAgfCAgICAvKiBIb3N0QXAgbW9kZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4
 MDIxMV9DX1RYUE1HVCB8ICAgIC8qIHR4IHBvd2VyIG1hbmFnZW1lbnQgKi8NCisgICAgICAg
 IElFRUU4MDIxMV9DX1NIUFJFQU1CTEUgfCAgICAvKiBzaG9ydCBwcmVhbWJsZSBzdXBwb3J0
 ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX1NIU0xPVCB8ICAgIC8qIHNob3J0IHNsb3Qg
 dGltZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX1dQQTsgICAgICAgIC8q
 IDgwMi4xMWkgKi8NCisNCisgICAgaWYgKHNjLT5yZl9yZXYgPT0gUlQyNTczX1JGXzUyMjUg
 fHwgc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIyNikgew0KKyAgICAgICAgLyogc2V0IHN1
 cHBvcnRlZCAuMTFhIHJhdGVzICovDQorICAgICAgICBpYy0+aWNfc3VwX3JhdGVzW0lFRUU4
 MDIxMV9NT0RFXzExQV0gPSBydW1fcmF0ZXNldF8xMWE7DQorDQorICAgICAgICAvKiBzZXQg
 c3VwcG9ydGVkIC4xMWEgY2hhbm5lbHMgKi8NCisgICAgICAgIGZvciAoaSA9IDM0OyBpIDw9
 IDQ2OyBpICs9IDQpIHsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZnJl
 cSA9DQorICAgICAgICAgICAgICAgIGllZWU4MDIxMV9pZWVlMm1oeihpLCBJRUVFODAyMTFf
 Q0hBTl81R0haKTsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZmxhZ3Mg
 PSBJRUVFODAyMTFfQ0hBTl9BOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpID0gMzY7
 IGkgPD0gNjQ7IGkgKz0gNCkgew0KKyAgICAgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5p
 Y19mcmVxID0NCisgICAgICAgICAgICAgICAgaWVlZTgwMjExX2llZWUybWh6KGksIElFRUU4
 MDIxMV9DSEFOXzVHSFopOw0KKyAgICAgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5pY19m
 bGFncyA9IElFRUU4MDIxMV9DSEFOX0E7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGkg
 PSAxMDA7IGkgPD0gMTQwOyBpICs9IDQpIHsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5l
 bHNbaV0uaWNfZnJlcSA9DQorICAgICAgICAgICAgICAgIGllZWU4MDIxMV9pZWVlMm1oeihp
 LCBJRUVFODAyMTFfQ0hBTl81R0haKTsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNb
 aV0uaWNfZmxhZ3MgPSBJRUVFODAyMTFfQ0hBTl9BOw0KKyAgICAgICAgfQ0KKyAgICAgICAg
 Zm9yIChpID0gMTQ5OyBpIDw9IDE2NTsgaSArPSA0KSB7DQorICAgICAgICAgICAgaWMtPmlj
 X2NoYW5uZWxzW2ldLmljX2ZyZXEgPQ0KKyAgICAgICAgICAgICAgICBpZWVlODAyMTFfaWVl
 ZTJtaHooaSwgSUVFRTgwMjExX0NIQU5fNUdIWik7DQorICAgICAgICAgICAgaWMtPmljX2No
 YW5uZWxzW2ldLmljX2ZsYWdzID0gSUVFRTgwMjExX0NIQU5fQTsNCisgICAgICAgIH0NCisg
 ICAgfQ0KKw0KKyAgICAvKiBzZXQgc3VwcG9ydGVkIC4xMWIgYW5kIC4xMWcgcmF0ZXMgKi8N
 CisgICAgaWMtPmljX3N1cF9yYXRlc1tJRUVFODAyMTFfTU9ERV8xMUJdID0gcnVtX3JhdGVz
 ZXRfMTFiOw0KKyAgICBpYy0+aWNfc3VwX3JhdGVzW0lFRUU4MDIxMV9NT0RFXzExR10gPSBy
 dW1fcmF0ZXNldF8xMWc7DQorDQorICAgIC8qIHNldCBzdXBwb3J0ZWQgLjExYiBhbmQgLjEx
 ZyBjaGFubmVscyAoMSB0aHJvdWdoIDE0KSAqLw0KKyAgICBmb3IgKGkgPSAxOyBpIDw9IDE0
 OyBpKyspIHsNCisgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5pY19mcmVxID0NCisgICAg
 ICAgICAgICBpZWVlODAyMTFfaWVlZTJtaHooaSwgSUVFRTgwMjExX0NIQU5fMkdIWik7DQor
 ICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZmxhZ3MgPQ0KKyAgICAgICAgICAgIElF
 RUU4MDIxMV9DSEFOX0NDSyB8IElFRUU4MDIxMV9DSEFOX09GRE0gfA0KKyAgICAgICAgICAg
 IElFRUU4MDIxMV9DSEFOX0RZTiB8IElFRUU4MDIxMV9DSEFOXzJHSFo7DQorICAgIH0NCisN
 CisgICAgaWZwLT5pZl9zb2Z0YyA9IHNjOw0KKyAgICBpZl9pbml0bmFtZShpZnAsICJydW0i
 LCBkZXZpY2VfZ2V0X3VuaXQoc2MtPnNjX2RldikpOw0KKyAgICBpZnAtPmlmX2ZsYWdzID0g
 SUZGX0JST0FEQ0FTVCB8IElGRl9TSU1QTEVYIHwgSUZGX01VTFRJQ0FTVCB8IElGRl9ORUVE
 U0dJQU5UOw0KKyAgICBpZnAtPmlmX2luaXQgICAgID0gcnVtX2luaXQ7DQorICAgIGlmcC0+
 aWZfaW9jdGwgICAgPSBydW1faW9jdGw7DQorICAgIGlmcC0+aWZfc3RhcnQgICAgPSBydW1f
 c3RhcnQ7DQorICAgIGlmcC0+aWZfd2F0Y2hkb2cgPSBydW1fd2F0Y2hkb2c7DQorDQorICAg
 IElGUV9TRVRfTUFYTEVOKCZpZnAtPmlmX3NuZCwgSUZRX01BWExFTik7DQorICAgIElGUV9T
 RVRfUkVBRFkoJmlmcC0+aWZfc25kKTsNCisNCisgICAgaWVlZTgwMjExX2lmYXR0YWNoKGlj
 KTsNCisNCisgICAgLyogb3ZlcnJpZGUgc3RhdGUgdHJhbnNpdGlvbiBtYWNoaW5lICovDQor
 ICAgIHNjLT5zY19uZXdzdGF0ZSA9IGljLT5pY19uZXdzdGF0ZTsNCisgICAgaWMtPmljX25l
 d3N0YXRlID0gcnVtX25ld3N0YXRlOw0KKyAgICBpZWVlODAyMTFfbWVkaWFfaW5pdChpYywg
 cnVtX21lZGlhX2NoYW5nZSwgaWVlZTgwMjExX21lZGlhX3N0YXR1cyk7DQorDQorICAgIGJw
 ZmF0dGFjaDIoaWZwLCBETFRfSUVFRTgwMl8xMV9SQURJTywNCisgICAgICAgIHNpemVvZiAo
 c3RydWN0IGllZWU4MDIxMV9mcmFtZSkgKyBJRUVFODAyMTFfUkFESU9UQVBfSERSTEVOLCAm
 c2MtPnNjX2RydmJwZik7DQorDQorICAgIHNjLT5zY19yeHRhcF9sZW4gPSBzaXplb2Ygc2Mt
 PnNjX3J4dGFwdTsNCisgICAgc2MtPnNjX3J4dGFwLndyX2loZHIuaXRfbGVuID0gaHRvbGUx
 NihzYy0+c2Nfcnh0YXBfbGVuKTsNCisgICAgc2MtPnNjX3J4dGFwLndyX2loZHIuaXRfcHJl
 c2VudCA9IGh0b2xlMzIoUlQyNTczX1JYX1JBRElPVEFQX1BSRVNFTlQpOw0KKw0KKyAgICBz
 Yy0+c2NfdHh0YXBfbGVuID0gc2l6ZW9mIHNjLT5zY190eHRhcHU7DQorICAgIHNjLT5zY190
 eHRhcC53dF9paGRyLml0X2xlbiA9IGh0b2xlMTYoc2MtPnNjX3R4dGFwX2xlbik7DQorICAg
 IHNjLT5zY190eHRhcC53dF9paGRyLml0X3ByZXNlbnQgPSBodG9sZTMyKFJUMjU3M19UWF9S
 QURJT1RBUF9QUkVTRU5UKTsNCisNCisJaWYgKGJvb3R2ZXJib3NlKQ0KKyAgICAJaWVlZTgw
 MjExX2Fubm91bmNlKGljKTsNCisNCisgICAgVVNCX0FUVEFDSF9TVUNDRVNTX1JFVFVSTjsN
 Cit9DQorDQorVVNCX0RFVEFDSChydW0pDQorew0KKyAgICBVU0JfREVUQUNIX1NUQVJUKHJ1
 bSwgc2MpOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQor
 ICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gc2MtPnNjX2lmcDsNCisNCisgICAgcnVtX3N0b3Ao
 aWZwKTsNCisgICAgdXNiX3JlbV90YXNrKHNjLT5zY191ZGV2LCAmc2MtPnNjX3Rhc2spOw0K
 KyAgICBjYWxsb3V0X3N0b3AoJnNjLT5zY2FuX2NoKTsNCisgICAgY2FsbG91dF9zdG9wKCZz
 Yy0+YW1ycl9jaCk7DQorDQorICAgIGlmIChzYy0+YW1ycl94ZmVyICE9IE5VTEwpIHsNCisg
 ICAgICAgIHVzYmRfZnJlZV94ZmVyKHNjLT5hbXJyX3hmZXIpOw0KKyAgICAgICAgc2MtPmFt
 cnJfeGZlciA9IE5VTEw7DQorICAgIH0NCisNCisgICAgaWYgKHNjLT5zY19yeF9waXBlaCAh
 PSBOVUxMKSB7DQorICAgICAgICB1c2JkX2Fib3J0X3BpcGUoc2MtPnNjX3J4X3BpcGVoKTsN
 CisgICAgICAgIHVzYmRfY2xvc2VfcGlwZShzYy0+c2NfcnhfcGlwZWgpOw0KKyAgICB9DQor
 DQorICAgIGlmIChzYy0+c2NfdHhfcGlwZWggIT0gTlVMTCkgew0KKyAgICAgICAgdXNiZF9h
 Ym9ydF9waXBlKHNjLT5zY190eF9waXBlaCk7DQorICAgICAgICB1c2JkX2Nsb3NlX3BpcGUo
 c2MtPnNjX3R4X3BpcGVoKTsNCisgICAgfQ0KKw0KKyAgICBydW1fZnJlZV9yeF9saXN0KHNj
 KTsNCisgICAgcnVtX2ZyZWVfdHhfbGlzdChzYyk7DQorDQorICAgIGJwZmRldGFjaChpZnAp
 Ow0KKyAgICBpZWVlODAyMTFfaWZkZXRhY2goaWMpOyAgICAvKiBmcmVlIGFsbCBub2RlcyAq
 Lw0KKyAvLyAgIGlmX2RldGFjaChpZnApOw0KKyAgICBpZl9mcmVlKGlmcCk7DQorDQorLyoN
 CisgICAgdXNiZF9hZGRfZHJ2X2V2ZW50KFVTQl9FVkVOVF9EUklWRVJfREVUQUNILCBzYy0+
 c2NfdWRldiwNCisgICAgICAgIFVTQkRFVihzYy0+c2NfZGV2KSk7DQorKi8NCisgICAgbXR4
 X2Rlc3Ryb3koJnNjLT5zY19tdHgpOw0KKw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3Rh
 dGljIGludA0KK3J1bV9hbGxvY190eF9saXN0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sN
 CisgICAgc3RydWN0IHJ1bV90eF9kYXRhICpkYXRhOw0KKyAgICBpbnQgaSwgZXJyb3I7DQor
 DQorICAgIHNjLT50eF9xdWV1ZWQgPSAwOw0KKw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgUlQy
 NTczX1RYX0xJU1RfQ09VTlQ7IGkrKykgew0KKyAgICAgICAgZGF0YSA9ICZzYy0+dHhfZGF0
 YVtpXTsNCisNCisgICAgICAgIGRhdGEtPnNjID0gc2M7DQorDQorICAgICAgICBkYXRhLT54
 ZmVyID0gdXNiZF9hbGxvY194ZmVyKHNjLT5zY191ZGV2KTsNCisgICAgICAgIGlmIChkYXRh
 LT54ZmVyID09IE5VTEwpIHsNCisgICAgICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3Qg
 YWxsb2NhdGUgdHggeGZlclxuIiwNCisgICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1l
 dW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAg
 ICAgICAgICAgZ290byBmYWlsOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgZGF0YS0+YnVm
 ID0gdXNiZF9hbGxvY19idWZmZXIoZGF0YS0+eGZlciwNCisgICAgICAgICAgICBSVDI1NzNf
 VFhfREVTQ19TSVpFICsgTUNMQllURVMpOw0KKyAgICAgICAgaWYgKGRhdGEtPmJ1ZiA9PSBO
 VUxMKSB7DQorICAgICAgICAgICAgcHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIHR4
 IGJ1ZmZlclxuIiwNCisgICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+
 c2NfZGV2KSk7DQorICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAgICAgICAgICAg
 Z290byBmYWlsOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KKw0K
 K2ZhaWw6ICAgIHJ1bV9mcmVlX3R4X2xpc3Qoc2MpOw0KKyAgICByZXR1cm4gZXJyb3I7DQor
 fQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX2ZyZWVfdHhfbGlzdChzdHJ1Y3QgcnVtX3NvZnRj
 ICpzYykNCit7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisgICAgaW50IGk7
 DQorDQorICAgIGZvciAoaSA9IDA7IGkgPCBSVDI1NzNfVFhfTElTVF9DT1VOVDsgaSsrKSB7
 DQorICAgICAgICBkYXRhID0gJnNjLT50eF9kYXRhW2ldOw0KKw0KKyAgICAgICAgaWYgKGRh
 dGEtPnhmZXIgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIHVzYmRfZnJlZV94ZmVyKGRhdGEt
 PnhmZXIpOw0KKyAgICAgICAgICAgIGRhdGEtPnhmZXIgPSBOVUxMOw0KKyAgICAgICAgfQ0K
 Kw0KKyAgICAgICAgaWYgKGRhdGEtPm5pICE9IE5VTEwpIHsNCisgICAgICAgICAgICBpZWVl
 ODAyMTFfZnJlZV9ub2RlKGRhdGEtPm5pKTsNCisgICAgICAgICAgICBkYXRhLT5uaSA9IE5V
 TEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorc3RhdGljIGludA0KK3J1bV9hbGxv
 Y19yeF9saXN0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9y
 eF9kYXRhICpkYXRhOw0KKyAgICBpbnQgaSwgZXJyb3I7DQorDQorICAgIGZvciAoaSA9IDA7
 IGkgPCBSVDI1NzNfUlhfTElTVF9DT1VOVDsgaSsrKSB7DQorICAgICAgICBkYXRhID0gJnNj
 LT5yeF9kYXRhW2ldOw0KKw0KKyAgICAgICAgZGF0YS0+c2MgPSBzYzsNCisNCisgICAgICAg
 IGRhdGEtPnhmZXIgPSB1c2JkX2FsbG9jX3hmZXIoc2MtPnNjX3VkZXYpOw0KKyAgICAgICAg
 aWYgKGRhdGEtPnhmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHByaW50ZigiJXM6IGNv
 dWxkIG5vdCBhbGxvY2F0ZSByeCB4ZmVyXG4iLA0KKyAgICAgICAgICAgICAgICBkZXZpY2Vf
 Z2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgICAgICBlcnJvciA9IEVOT01F
 TTsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAgICAgICB9DQorDQorICAgICAgICBp
 ZiAodXNiZF9hbGxvY19idWZmZXIoZGF0YS0+eGZlciwgTUNMQllURVMpID09IE5VTEwpIHsN
 CisgICAgICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgYWxsb2NhdGUgcnggYnVmZmVy
 XG4iLA0KKyAgICAgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYp
 KTsNCisgICAgICAgICAgICBlcnJvciA9IEVOT01FTTsNCisgICAgICAgICAgICBnb3RvIGZh
 aWw7DQorICAgICAgICB9DQorDQorICAgICAgICBNR0VUSERSKGRhdGEtPm0sIE1fRE9OVFdB
 SVQsIE1UX0RBVEEpOw0KKyAgICAgICAgaWYgKGRhdGEtPm0gPT0gTlVMTCkgew0KKyAgICAg
 ICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCBhbGxvY2F0ZSByeCBtYnVmXG4iLA0KKyAg
 ICAgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAg
 ICAgICAgICBlcnJvciA9IEVOT01FTTsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAg
 ICAgICB9DQorDQorICAgICAgICBNQ0xHRVQoZGF0YS0+bSwgTV9ET05UV0FJVCk7DQorICAg
 ICAgICBpZiAoIShkYXRhLT5tLT5tX2ZsYWdzICYgTV9FWFQpKSB7DQorICAgICAgICAgICAg
 cHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIHJ4IG1idWYgY2x1c3RlclxuIiwNCisg
 ICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAg
 ICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAgICAgICAgICAgZ290byBmYWlsOw0KKyAg
 ICAgICAgfQ0KKw0KKyAgICAgICAgZGF0YS0+YnVmID0gbXRvZChkYXRhLT5tLCB1aW50OF90
 ICopOw0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KKw0KK2ZhaWw6ICAgIHJ1bV9mcmVl
 X3R4X2xpc3Qoc2MpOw0KKyAgICByZXR1cm4gZXJyb3I7DQorfQ0KKw0KK3N0YXRpYyB2b2lk
 DQorcnVtX2ZyZWVfcnhfbGlzdChzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIHN0
 cnVjdCBydW1fcnhfZGF0YSAqZGF0YTsNCisgICAgaW50IGk7DQorDQorICAgIGZvciAoaSA9
 IDA7IGkgPCBSVDI1NzNfUlhfTElTVF9DT1VOVDsgaSsrKSB7DQorICAgICAgICBkYXRhID0g
 JnNjLT5yeF9kYXRhW2ldOw0KKw0KKyAgICAgICAgaWYgKGRhdGEtPnhmZXIgIT0gTlVMTCkg
 ew0KKyAgICAgICAgICAgIHVzYmRfZnJlZV94ZmVyKGRhdGEtPnhmZXIpOw0KKyAgICAgICAg
 ICAgIGRhdGEtPnhmZXIgPSBOVUxMOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGRh
 dGEtPm0gIT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fZnJlZW0oZGF0YS0+bSk7DQorICAg
 ICAgICAgICAgZGF0YS0+bSA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQor
 c3RhdGljIGludA0KK3J1bV9tZWRpYV9jaGFuZ2Uoc3RydWN0IGlmbmV0ICppZnApDQorew0K
 KyAgICBzdHJ1Y3QgcnVtX3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7DQorICAgIGludCBl
 cnJvcjsNCisNCisgICAgUlVNX0xPQ0soc2MpOw0KKw0KKyAgICBlcnJvciA9IGllZWU4MDIx
 MV9tZWRpYV9jaGFuZ2UoaWZwKTsNCisgICAgaWYgKGVycm9yICE9IEVORVRSRVNFVCl7DQor
 ICAgIAlSVU1fVU5MT0NLKHNjKTsNCisgICAgICAgIHJldHVybiBlcnJvcjsNCisgICAgfQ0K
 Kw0KKyAgICBpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVApICYmDQorICAgICAgICAoaWZw
 LT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpKQ0KKyAgICAgICAgcnVtX2luaXQo
 c2MpOw0KKw0KKyAgICBSVU1fVU5MT0NLKHNjKTsNCisNCisgICAgcmV0dXJuIDA7DQorfQ0K
 Kw0KKy8qDQorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5IChldmVy
 eSAyMDBtcykgZHVyaW5nIHNjYW5uaW5nIHRvDQorICogc3dpdGNoIGZyb20gb25lIGNoYW5u
 ZWwgdG8gYW5vdGhlci4NCisgKi8NCitzdGF0aWMgdm9pZA0KK3J1bV9uZXh0X3NjYW4odm9p
 ZCAqYXJnKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBhcmc7DQorICAgIHN0
 cnVjdCBpZWVlODAyMTFjb20gKmljID0gJnNjLT5zY19pYzsNCisNCisgICAgaWYgKGljLT5p
 Y19zdGF0ZSA9PSBJRUVFODAyMTFfU19TQ0FOKQ0KKyAgICAgICAgaWVlZTgwMjExX25leHRf
 c2NhbihpYyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3Rhc2sodm9pZCAqYXJnKQ0K
 K3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBhcmc7DQorICAgIHN0cnVjdCBpZWVl
 ODAyMTFjb20gKmljID0gJnNjLT5zY19pYzsNCisgICAgZW51bSBpZWVlODAyMTFfc3RhdGUg
 b3N0YXRlOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pOw0KKyAgICB1aW50MzJf
 dCB0bXA7DQorDQorICAgIG9zdGF0ZSA9IGljLT5pY19zdGF0ZTsNCisNCisgICAgc3dpdGNo
 IChzYy0+c2Nfc3RhdGUpIHsNCisgICAgY2FzZSBJRUVFODAyMTFfU19JTklUOg0KKyAgICAg
 ICAgaWYgKG9zdGF0ZSA9PSBJRUVFODAyMTFfU19SVU4pIHsNCisgICAgICAgICAgICAvKiBh
 Ym9ydCBUU0Ygc3luY2hyb25pemF0aW9uICovDQorICAgICAgICAgICAgdG1wID0gcnVtX3Jl
 YWQoc2MsIFJUMjU3M19UWFJYX0NTUjkpOw0KKyAgICAgICAgICAgIHJ1bV93cml0ZShzYywg
 UlQyNTczX1RYUlhfQ1NSOSwgdG1wICYgfjB4MDBmZmZmZmYpOw0KKyAgICAgICAgfQ0KKyAg
 ICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgSUVFRTgwMjExX1NfU0NBTjoNCisgICAgICAg
 IHJ1bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4pOw0KKyAgICAgICAgY2FsbG91dF9y
 ZXNldCgmc2MtPnNjYW5fY2gsIGh6IC8gNSwgcnVtX25leHRfc2Nhbiwgc2MpOw0KKyAgICAg
 ICAgYnJlYWs7DQorDQorICAgIGNhc2UgSUVFRTgwMjExX1NfQVVUSDoNCisgICAgICAgIHJ1
 bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4pOw0KKyAgICAgICAgYnJlYWs7DQorDQor
 ICAgIGNhc2UgSUVFRTgwMjExX1NfQVNTT0M6DQorICAgICAgICBydW1fc2V0X2NoYW4oc2Ms
 IGljLT5pY19jdXJjaGFuKTsNCisgICAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIElFRUU4
 MDIxMV9TX1JVTjoNCisgICAgICAgIHJ1bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4p
 Ow0KKw0KKyAgICAgICAgbmkgPSBpYy0+aWNfYnNzOw0KKw0KKyAgICAgICAgaWYgKGljLT5p
 Y19vcG1vZGUgIT0gSUVFRTgwMjExX01fTU9OSVRPUikgew0KKyAgICAgICAgICAgIHJ1bV91
 cGRhdGVfc2xvdChzYyk7DQorICAgICAgICAgICAgcnVtX2VuYWJsZV9tcnIoc2MpOw0KKyAg
 ICAgICAgICAgIHJ1bV9zZXRfdHhwcmVhbWJsZShzYyk7DQorICAgICAgICAgICAgcnVtX3Nl
 dF9iYXNpY3JhdGVzKHNjKTsNCisgICAgICAgICAgICBydW1fc2V0X2Jzc2lkKHNjLCBuaS0+
 bmlfYnNzaWQpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGljLT5pY19vcG1vZGUg
 PT0gSUVFRTgwMjExX01fSE9TVEFQIHx8DQorICAgICAgICAgICAgaWMtPmljX29wbW9kZSA9
 PSBJRUVFODAyMTFfTV9JQlNTKQ0KKyAgICAgICAgICAgIHJ1bV9wcmVwYXJlX2JlYWNvbihz
 Yyk7DQorDQorICAgICAgICBpZiAoaWMtPmljX29wbW9kZSAhPSBJRUVFODAyMTFfTV9NT05J
 VE9SKQ0KKyAgICAgICAgICAgIHJ1bV9lbmFibGVfdHNmX3N5bmMoc2MpOw0KKw0KKyAgICAg
 ICAgLyogZW5hYmxlIGF1dG9tYXRpYyByYXRlIGFkYXB0YXRpb24gaW4gU1RBIG1vZGUgKi8N
 CisgICAgICAgIGlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX1NUQSAmJg0KKyAg
 ICAgICAgICAgIGljLT5pY19maXhlZF9yYXRlID09IElFRUU4MDIxMV9GSVhFRF9SQVRFX05P
 TkUpDQorICAgICAgICAgICAgcnVtX2FtcnJfc3RhcnQoc2MsIG5pKTsNCisNCisgICAgICAg
 IGJyZWFrOw0KKyAgICB9DQorDQorICAgIHNjLT5zY19uZXdzdGF0ZShpYywgc2MtPnNjX3N0
 YXRlLCAtMSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitydW1fbmV3c3RhdGUoc3RydWN0IGll
 ZWU4MDIxMWNvbSAqaWMsIGVudW0gaWVlZTgwMjExX3N0YXRlIG5zdGF0ZSwgaW50IGFyZykN
 Cit7DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gaWMtPmljX2lmcC0+aWZfc29mdGM7
 DQorDQorICAgIHVzYl9yZW1fdGFzayhzYy0+c2NfdWRldiwgJnNjLT5zY190YXNrKTsNCisg
 ICAgY2FsbG91dF9zdG9wKCZzYy0+c2Nhbl9jaCk7DQorICAgIGNhbGxvdXRfc3RvcCgmc2Mt
 PmFtcnJfY2gpOw0KKw0KKyAgICAvKiBkbyBpdCBpbiBhIHByb2Nlc3MgY29udGV4dCAqLw0K
 KyAgICBzYy0+c2Nfc3RhdGUgPSBuc3RhdGU7DQorICAgIHVzYl9hZGRfdGFzayhzYy0+c2Nf
 dWRldiwgJnNjLT5zY190YXNrLCBVU0JfVEFTS1FfRFJJVkVSKTsNCisNCisgICAgcmV0dXJu
 IDA7DQorfQ0KKw0KKy8qIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gcmF0ZSBpcyBD
 Q0sgb3IgT0ZETSAqLw0KKyNkZWZpbmUgUlVNX1JBVEVfSVNfT0ZETShyYXRlKSAgICAoKHJh
 dGUpID49IDEyICYmIChyYXRlKSAhPSAyMikNCisNCisjZGVmaW5lIFJVTV9BQ0tfU0laRSAg
 ICAxNCAgICAvKiAxMCArIDQoRkNTKSAqLw0KKyNkZWZpbmUgUlVNX0NUU19TSVpFICAgIDE0
 ICAgIC8qIDEwICsgNChGQ1MpICovDQorDQorc3RhdGljIHZvaWQNCitydW1fdHhlb2YodXNi
 ZF94ZmVyX2hhbmRsZSB4ZmVyLCB1c2JkX3ByaXZhdGVfaGFuZGxlIHByaXYsIHVzYmRfc3Rh
 dHVzIHN0YXR1cykNCit7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YSA9IHByaXY7
 DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gZGF0YS0+c2M7DQorICAgIHN0cnVjdCBp
 Zm5ldCAqaWZwID0gc2MtPnNjX2lmcDsNCisNCisgICAgaWYgKHN0YXR1cyAhPSBVU0JEX05P
 Uk1BTF9DT01QTEVUSU9OKSB7DQorICAgICAgICBpZiAoc3RhdHVzID09IFVTQkRfTk9UX1NU
 QVJURUQgfHwgc3RhdHVzID09IFVTQkRfQ0FOQ0VMTEVEKXsNCisgICAgICAgICAgICByZXR1
 cm47DQorCQl9DQorDQorICAgIAlwcmludGYoIiVzOiBjb3VsZCBub3QgdHJhbnNtaXQgYnVm
 ZmVyOiAlc1xuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19k
 ZXYpLCB1c2JkX2VycnN0cihzdGF0dXMpKTsNCisNCisgICAgICAgIGlmIChzdGF0dXMgPT0g
 VVNCRF9TVEFMTEVEKQ0KKyAgICAgICAgICAgIHVzYmRfY2xlYXJfZW5kcG9pbnRfc3RhbGxf
 YXN5bmMoc2MtPnNjX3R4X3BpcGVoKTsNCisNCisgICAgICAgIGlmcC0+aWZfb2Vycm9ycysr
 Ow0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorDQorICAgIG1fZnJlZW0oZGF0YS0+bSk7
 DQorICAgIGRhdGEtPm0gPSBOVUxMOw0KKyAgICBpZWVlODAyMTFfZnJlZV9ub2RlKGRhdGEt
 Pm5pKTsNCisgICAgZGF0YS0+bmkgPSBOVUxMOw0KKw0KKyAgICBzYy0+dHhfcXVldWVkLS07
 DQorICAgIGlmcC0+aWZfb3BhY2tldHMrKzsNCisNCisgICAgRFBSSU5URk4oMTAsICgidHgg
 ZG9uZVxuIikpOw0KKw0KKyAgICBzYy0+c2NfdHhfdGltZXIgPSAwOw0KKyAgICBpZnAtPmlm
 X2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOw0KKyAgICBydW1fc3RhcnQoaWZwKTsN
 CisNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fcnhlb2YodXNiZF94ZmVyX2hhbmRsZSB4
 ZmVyLCB1c2JkX3ByaXZhdGVfaGFuZGxlIHByaXYsIHVzYmRfc3RhdHVzIHN0YXR1cykNCit7
 DQorICAgIHN0cnVjdCBydW1fcnhfZGF0YSAqZGF0YSA9IHByaXY7DQorICAgIHN0cnVjdCBy
 dW1fc29mdGMgKnNjID0gZGF0YS0+c2M7DQorICAgIHN0cnVjdCBpZWVlODAyMTFjb20gKmlj
 ID0gJnNjLT5zY19pYzsNCisgICAgc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOw0K
 KyAgICBzdHJ1Y3QgcnVtX3J4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBpZWVlODAyMTFf
 ZnJhbWUgKndoOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pOw0KKyAgICBzdHJ1
 Y3QgbWJ1ZiAqbW5ldywgKm07DQorICAgIGludCBsZW47DQorDQorICAgIGlmIChzdGF0dXMg
 IT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTikgew0KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBV
 U0JEX05PVF9TVEFSVEVEIHx8IHN0YXR1cyA9PSBVU0JEX0NBTkNFTExFRCl7DQorICAgICAg
 ICAgICAgcmV0dXJuOw0KKwkJfQ0KKw0KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVU0JEX1NU
 QUxMRUQpDQorICAgICAgICAgICAgdXNiZF9jbGVhcl9lbmRwb2ludF9zdGFsbF9hc3luYyhz
 Yy0+c2NfcnhfcGlwZWgpOw0KKyAgICAgICAgZ290byBza2lwOw0KKyAgICB9DQorDQorICAg
 IHVzYmRfZ2V0X3hmZXJfc3RhdHVzKHhmZXIsIE5VTEwsIE5VTEwsICZsZW4sIE5VTEwpOw0K
 Kw0KKyAgICBpZiAobGVuIDwgUlQyNTczX1JYX0RFU0NfU0laRSArIHNpemVvZiAoc3RydWN0
 IGllZWU4MDIxMV9mcmFtZV9taW4pKSB7DQorICAgICAgICBEUFJJTlRGKCgiJXM6IHhmZXIg
 dG9vIHNob3J0ICVkXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpLA0KKyAg
 ICAgICAgICAgIGxlbikpOw0KKyAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQorICAgICAg
 ICBnb3RvIHNraXA7DQorICAgIH0NCisNCisgICAgZGVzYyA9IChzdHJ1Y3QgcnVtX3J4X2Rl
 c2MgKilkYXRhLT5idWY7DQorDQorICAgIGlmIChsZTMydG9oKGRlc2MtPmZsYWdzKSAmIFJU
 MjU3M19SWF9DUkNfRVJST1IpIHsNCisgICAgICAgIC8qDQorICAgICAgICAgKiBUaGlzIHNo
 b3VsZCBub3QgaGFwcGVuIHNpbmNlIHdlIGRpZCBub3QgcmVxdWVzdCB0byByZWNlaXZlDQor
 ICAgICAgICAgKiB0aG9zZSBmcmFtZXMgd2hlbiB3ZSBmaWxsZWQgUlQyNTczX1RYUlhfQ1NS
 MC4NCisgICAgICAgICAqLw0KKyAgICAgICAgRFBSSU5URk4oNSwgKCJDUkMgZXJyb3JcbiIp
 KTsNCisgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0KKyAgICAgICAgZ290byBza2lwOw0K
 KyAgICB9DQorDQorICAgIE1HRVRIRFIobW5ldywgTV9ET05UV0FJVCwgTVRfREFUQSk7DQor
 ICAgIGlmIChtbmV3ID09IE5VTEwpIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5v
 dCBhbGxvY2F0ZSByeCBtYnVmXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVu
 aXQoc2MtPnNjX2RldikpOw0KKyAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQorICAgICAg
 ICBnb3RvIHNraXA7DQorICAgIH0NCisNCisgICAgTUNMR0VUKG1uZXcsIE1fRE9OVFdBSVQp
 Ow0KKyAgICBpZiAoIShtbmV3LT5tX2ZsYWdzICYgTV9FWFQpKSB7DQorICAgICAgICBwcmlu
 dGYoIiVzOiBjb3VsZCBub3QgYWxsb2NhdGUgcnggbWJ1ZiBjbHVzdGVyXG4iLA0KKyAgICAg
 ICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAgICAgICAgbV9m
 cmVlbShtbmV3KTsNCisgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0KKyAgICAgICAgZ290
 byBza2lwOw0KKyAgICB9DQorDQorICAgIG0gPSBkYXRhLT5tOw0KKyAgICBkYXRhLT5tID0g
 bW5ldzsNCisgICAgZGF0YS0+YnVmID0gbXRvZChkYXRhLT5tLCB1aW50OF90ICopOw0KKw0K
 KyAgICAvKiBmaW5hbGl6ZSBtYnVmICovDQorICAgIG0tPm1fcGt0aGRyLnJjdmlmID0gaWZw
 Ow0KKyAgICBtLT5tX2RhdGEgPSAoY2FkZHJfdCkoZGVzYyArIDEpOw0KKyAgICBtLT5tX3Br
 dGhkci5sZW4gPSBtLT5tX2xlbiA9IChsZTMydG9oKGRlc2MtPmZsYWdzKSA+PiAxNikgJiAw
 eGZmZjsNCisNCisgICAgaWYgKHNjLT5zY19kcnZicGYgIT0gTlVMTCkgew0KKyAgICAgICAg
 c3RydWN0IHJ1bV9yeF9yYWRpb3RhcF9oZWFkZXIgKnRhcCA9ICZzYy0+c2Nfcnh0YXA7DQor
 DQorICAgICAgICB0YXAtPndyX2ZsYWdzID0gSUVFRTgwMjExX1JBRElPVEFQX0ZfRkNTOw0K
 KyAgICAgICAgdGFwLT53cl9yYXRlID0gcnVtX3J4cmF0ZShkZXNjKTsNCisgICAgICAgIHRh
 cC0+d3JfY2hhbl9mcmVxID0gaHRvbGUxNihpYy0+aWNfY3VyY2hhbi0+aWNfZnJlcSk7DQor
 ICAgICAgICB0YXAtPndyX2NoYW5fZmxhZ3MgPSBodG9sZTE2KGljLT5pY19jdXJjaGFuLT5p
 Y19mbGFncyk7DQorICAgICAgICB0YXAtPndyX2FudGVubmEgPSBzYy0+cnhfYW50Ow0KKyAg
 ICAgICAgdGFwLT53cl9hbnRzaWduYWwgPSBkZXNjLT5yc3NpOw0KKw0KKyAgICAgICAgYnBm
 X210YXAyKHNjLT5zY19kcnZicGYsIHRhcCwgc2MtPnNjX3J4dGFwX2xlbiwgbSk7DQorICAg
 IH0NCisNCisgICAgd2ggPSBtdG9kKG0sIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7DQor
 ICAgIG5pID0gaWVlZTgwMjExX2ZpbmRfcnhub2RlKGljLCAoc3RydWN0IGllZWU4MDIxMV9m
 cmFtZV9taW4gKil3aCk7DQorDQorICAgIC8qIHNlbmQgdGhlIGZyYW1lIHRvIHRoZSA4MDIu
 MTEgbGF5ZXIgKi8NCisgICAgaWVlZTgwMjExX2lucHV0KGljLCBtLCBuaSwgZGVzYy0+cnNz
 aSwgMCk7DQorDQorICAgIC8qIG5vZGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCAqLw0KKyAgICBp
 ZWVlODAyMTFfZnJlZV9ub2RlKG5pKTsNCisNCisgICAgRFBSSU5URk4oMTUsICgicnggZG9u
 ZVxuIikpOw0KKw0KK3NraXA6ICAgIC8qIHNldHVwIGEgbmV3IHRyYW5zZmVyICovDQorICAg
 IHVzYmRfc2V0dXBfeGZlcih4ZmVyLCBzYy0+c2NfcnhfcGlwZWgsIGRhdGEsIGRhdGEtPmJ1
 ZiwgTUNMQllURVMsDQorICAgICAgICBVU0JEX1NIT1JUX1hGRVJfT0ssIFVTQkRfTk9fVElN
 RU9VVCwgcnVtX3J4ZW9mKTsNCisgICAgdXNiZF90cmFuc2Zlcih4ZmVyKTsNCit9DQorDQor
 LyoNCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSB0aGUgUnggcmFkaW90YXAg
 Y29kZS4gSXQgcmV0dXJucyB0aGUgcmF0ZSBhdA0KKyAqIHdoaWNoIGEgZ2l2ZW4gZnJhbWUg
 d2FzIHJlY2VpdmVkLg0KKyAqLw0KK3N0YXRpYyB1aW50OF90DQorcnVtX3J4cmF0ZShzdHJ1
 Y3QgcnVtX3J4X2Rlc2MgKmRlc2MpDQorew0KKyAgICBpZiAobGUzMnRvaChkZXNjLT5mbGFn
 cykgJiBSVDI1NzNfUlhfT0ZETSkgew0KKyAgICAgICAgLyogcmV2ZXJzZSBmdW5jdGlvbiBv
 ZiBydW1fcGxjcF9zaWduYWwgKi8NCisgICAgICAgIHN3aXRjaCAoZGVzYy0+cmF0ZSkgew0K
 KyAgICAgICAgY2FzZSAweGI6ICAgIHJldHVybiAxMjsNCisgICAgICAgIGNhc2UgMHhmOiAg
 ICByZXR1cm4gMTg7DQorICAgICAgICBjYXNlIDB4YTogICAgcmV0dXJuIDI0Ow0KKyAgICAg
 ICAgY2FzZSAweGU6ICAgIHJldHVybiAzNjsNCisgICAgICAgIGNhc2UgMHg5OiAgICByZXR1
 cm4gNDg7DQorICAgICAgICBjYXNlIDB4ZDogICAgcmV0dXJuIDcyOw0KKyAgICAgICAgY2Fz
 ZSAweDg6ICAgIHJldHVybiA5NjsNCisgICAgICAgIGNhc2UgMHhjOiAgICByZXR1cm4gMTA4
 Ow0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGRlc2MtPnJhdGUg
 PT0gMTApDQorICAgICAgICAgICAgcmV0dXJuIDI7DQorICAgICAgICBpZiAoZGVzYy0+cmF0
 ZSA9PSAyMCkNCisgICAgICAgICAgICByZXR1cm4gNDsNCisgICAgICAgIGlmIChkZXNjLT5y
 YXRlID09IDU1KQ0KKyAgICAgICAgICAgIHJldHVybiAxMTsNCisgICAgICAgIGlmIChkZXNj
 LT5yYXRlID09IDExMCkNCisgICAgICAgICAgICByZXR1cm4gMjI7DQorICAgIH0NCisgICAg
 cmV0dXJuIDI7ICAgIC8qIHNob3VsZCBub3QgZ2V0IHRoZXJlICovDQorfQ0KKw0KKy8qDQor
 ICogUmV0dXJuIHRoZSBleHBlY3RlZCBhY2sgcmF0ZSBmb3IgYSBmcmFtZSB0cmFuc21pdHRl
 ZCBhdCByYXRlIGByYXRlJy4NCisgKiBYWFg6IHRoaXMgc2hvdWxkIGRlcGVuZCBvbiB0aGUg
 ZGVzdGluYXRpb24gbm9kZSBiYXNpYyByYXRlIHNldC4NCisgKi8NCitzdGF0aWMgaW50DQor
 cnVtX2Fja19yYXRlKHN0cnVjdCBpZWVlODAyMTFjb20gKmljLCBpbnQgcmF0ZSkNCit7DQor
 ICAgIHN3aXRjaCAocmF0ZSkgew0KKyAgICAvKiBDQ0sgcmF0ZXMgKi8NCisgICAgY2FzZSAy
 Og0KKyAgICAgICAgcmV0dXJuIDI7DQorICAgIGNhc2UgNDoNCisgICAgY2FzZSAxMToNCisg
 ICAgY2FzZSAyMjoNCisgICAgICAgIHJldHVybiAoaWMtPmljX2N1cm1vZGUgPT0gSUVFRTgw
 MjExX01PREVfMTFCKSA/IDQgOiByYXRlOw0KKw0KKyAgICAvKiBPRkRNIHJhdGVzICovDQor
 ICAgIGNhc2UgMTI6DQorICAgIGNhc2UgMTg6DQorICAgICAgICByZXR1cm4gMTI7DQorICAg
 IGNhc2UgMjQ6DQorICAgIGNhc2UgMzY6DQorICAgICAgICByZXR1cm4gMjQ7DQorICAgIGNh
 c2UgNDg6DQorICAgIGNhc2UgNzI6DQorICAgIGNhc2UgOTY6DQorICAgIGNhc2UgMTA4Og0K
 KyAgICAgICAgcmV0dXJuIDQ4Ow0KKyAgICB9DQorDQorICAgIC8qIGRlZmF1bHQgdG8gMU1i
 cHMgKi8NCisgICAgcmV0dXJuIDI7DQorfQ0KKw0KKy8qDQorICogQ29tcHV0ZSB0aGUgZHVy
 YXRpb24gKGluIHVzKSBuZWVkZWQgdG8gdHJhbnNtaXQgYGxlbicgYnl0ZXMgYXQgcmF0ZSBg
 cmF0ZScuDQorICogVGhlIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUg
 b3BlcmF0aW5nIG1vZGUgZGVwZW5kaW5nIG9uIHRoZQ0KKyAqIGdpdmVuIHJhdGUuIGBmbGFn
 cycgaW5kaWNhdGVzIHdoZXRoZXIgc2hvcnQgcHJlYW1ibGUgaXMgaW4gdXNlIG9yIG5vdC4N
 CisgKi8NCitzdGF0aWMgdWludDE2X3QNCitydW1fdHh0aW1lKGludCBsZW4sIGludCByYXRl
 LCB1aW50MzJfdCBmbGFncykNCit7DQorICAgIHVpbnQxNl90IHR4dGltZTsNCisNCisgICAg
 aWYgKFJVTV9SQVRFX0lTX09GRE0ocmF0ZSkpIHsNCisgICAgICAgIC8qIElFRUUgU3RkIDgw
 Mi4xMWEtMTk5OSwgcHAuIDM3ICovDQorICAgICAgICB0eHRpbWUgPSAoOCArIDQgKiBsZW4g
 KyAzICsgcmF0ZSAtIDEpIC8gcmF0ZTsNCisgICAgICAgIHR4dGltZSA9IDE2ICsgNCArIDQg
 KiB0eHRpbWUgKyA2Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgLyogSUVFRSBTdGQgODAy
 LjExYi0xOTk5LCBwcC4gMjggKi8NCisgICAgICAgIHR4dGltZSA9ICgxNiAqIGxlbiArIHJh
 dGUgLSAxKSAvIHJhdGU7DQorICAgICAgICBpZiAocmF0ZSAhPSAyICYmIChmbGFncyAmIElF
 RUU4MDIxMV9GX1NIUFJFQU1CTEUpKQ0KKyAgICAgICAgICAgIHR4dGltZSArPSAgNzIgKyAy
 NDsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICB0eHRpbWUgKz0gMTQ0ICsgNDg7DQor
 ICAgIH0NCisgICAgcmV0dXJuIHR4dGltZTsNCit9DQorDQorc3RhdGljIHVpbnQ4X3QNCity
 dW1fcGxjcF9zaWduYWwoaW50IHJhdGUpDQorew0KKyAgICBzd2l0Y2ggKHJhdGUpIHsNCisg
 ICAgLyogQ0NLIHJhdGVzIChyZXR1cm5lZCB2YWx1ZXMgYXJlIGRldmljZS1kZXBlbmRlbnQp
 ICovDQorICAgIGNhc2UgMjogICAgICAgIHJldHVybiAweDA7DQorICAgIGNhc2UgNDogICAg
 ICAgIHJldHVybiAweDE7DQorICAgIGNhc2UgMTE6ICAgIHJldHVybiAweDI7DQorICAgIGNh
 c2UgMjI6ICAgIHJldHVybiAweDM7DQorDQorICAgIC8qIE9GRE0gcmF0ZXMgKGNmIElFRUUg
 U3RkIDgwMi4xMWEtMTk5OSwgcHAuIDE0IFRhYmxlIDgwKSAqLw0KKyAgICBjYXNlIDEyOiAg
 ICByZXR1cm4gMHhiOw0KKyAgICBjYXNlIDE4OiAgICByZXR1cm4gMHhmOw0KKyAgICBjYXNl
 IDI0OiAgICByZXR1cm4gMHhhOw0KKyAgICBjYXNlIDM2OiAgICByZXR1cm4gMHhlOw0KKyAg
 ICBjYXNlIDQ4OiAgICByZXR1cm4gMHg5Ow0KKyAgICBjYXNlIDcyOiAgICByZXR1cm4gMHhk
 Ow0KKyAgICBjYXNlIDk2OiAgICByZXR1cm4gMHg4Ow0KKyAgICBjYXNlIDEwODogICAgcmV0
 dXJuIDB4YzsNCisNCisgICAgLyogdW5zdXBwb3J0ZWQgcmF0ZXMgKHNob3VsZCBub3QgZ2V0
 IHRoZXJlKSAqLw0KKyAgICBkZWZhdWx0OiAgICByZXR1cm4gMHhmZjsNCisgICAgfQ0KK30N
 CisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXR1cF90eF9kZXNjKHN0cnVjdCBydW1fc29mdGMg
 KnNjLCBzdHJ1Y3QgcnVtX3R4X2Rlc2MgKmRlc2MsDQorICAgIHVpbnQzMl90IGZsYWdzLCB1
 aW50MTZfdCB4ZmxhZ3MsIGludCBsZW4sIGludCByYXRlKQ0KK3sNCisgICAgc3RydWN0IGll
 ZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50MTZfdCBwbGNwX2xlbmd0
 aDsNCisgICAgaW50IHJlbWFpbmRlcjsNCisNCisgICAgZGVzYy0+ZmxhZ3MgPSBodG9sZTMy
 KGZsYWdzKTsNCisgICAgZGVzYy0+ZmxhZ3MgfD0gaHRvbGUzMihSVDI1NzNfVFhfVkFMSUQp
 Ow0KKyAgICBkZXNjLT5mbGFncyB8PSBodG9sZTMyKGxlbiA8PCAxNik7DQorDQorICAgIGRl
 c2MtPnhmbGFncyA9IGh0b2xlMTYoeGZsYWdzKTsNCisNCisgICAgZGVzYy0+d21lID0gaHRv
 bGUxNigNCisgICAgICAgIFJUMjU3M19RSUQoMCkgfA0KKyAgICAgICAgUlQyNTczX0FJRlNO
 KDIpIHwNCisgICAgICAgIFJUMjU3M19MT0dDV01JTig0KSB8DQorICAgICAgICBSVDI1NzNf
 TE9HQ1dNQVgoMTApKTsNCisNCisgICAgLyogc2V0dXAgUExDUCBmaWVsZHMgKi8NCisgICAg
 ZGVzYy0+cGxjcF9zaWduYWwgID0gcnVtX3BsY3Bfc2lnbmFsKHJhdGUpOw0KKyAgICBkZXNj
 LT5wbGNwX3NlcnZpY2UgPSA0Ow0KKw0KKyAgICBsZW4gKz0gSUVFRTgwMjExX0NSQ19MRU47
 DQorICAgIGlmIChSVU1fUkFURV9JU19PRkRNKHJhdGUpKSB7DQorICAgICAgICBkZXNjLT5m
 bGFncyB8PSBodG9sZTMyKFJUMjU3M19UWF9PRkRNKTsNCisNCisgICAgICAgIHBsY3BfbGVu
 Z3RoID0gbGVuICYgMHhmZmY7DQorICAgICAgICBkZXNjLT5wbGNwX2xlbmd0aF9oaSA9IHBs
 Y3BfbGVuZ3RoID4+IDY7DQorICAgICAgICBkZXNjLT5wbGNwX2xlbmd0aF9sbyA9IHBsY3Bf
 bGVuZ3RoICYgMHgzZjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBsY3BfbGVuZ3RoID0g
 KDE2ICogbGVuICsgcmF0ZSAtIDEpIC8gcmF0ZTsNCisgICAgICAgIGlmIChyYXRlID09IDIy
 KSB7DQorICAgICAgICAgICAgcmVtYWluZGVyID0gKDE2ICogbGVuKSAlIDIyOw0KKyAgICAg
 ICAgICAgIGlmIChyZW1haW5kZXIgIT0gMCAmJiByZW1haW5kZXIgPCA3KQ0KKyAgICAgICAg
 ICAgICAgICBkZXNjLT5wbGNwX3NlcnZpY2UgfD0gUlQyNTczX1BMQ1BfTEVOR0VYVDsNCisg
 ICAgICAgIH0NCisgICAgICAgIGRlc2MtPnBsY3BfbGVuZ3RoX2hpID0gcGxjcF9sZW5ndGgg
 Pj4gODsNCisgICAgICAgIGRlc2MtPnBsY3BfbGVuZ3RoX2xvID0gcGxjcF9sZW5ndGggJiAw
 eGZmOw0KKw0KKyAgICAgICAgaWYgKHJhdGUgIT0gMiAmJiAoaWMtPmljX2ZsYWdzICYgSUVF
 RTgwMjExX0ZfU0hQUkVBTUJMRSkpDQorICAgICAgICAgICAgZGVzYy0+cGxjcF9zaWduYWwg
 fD0gMHgwODsNCisgICAgfQ0KK30NCisNCisjZGVmaW5lIFJVTV9UWF9USU1FT1VUICAgIDUw
 MDANCisNCitzdGF0aWMgaW50DQorcnVtX3R4X21ndChzdHJ1Y3QgcnVtX3NvZnRjICpzYywg
 c3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQ0KK3sNCisgICAg
 c3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgcnVt
 X3R4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisgICAg
 c3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7DQorICAgIHVpbnQzMl90IGZsYWdzID0gMDsN
 CisgICAgdWludDE2X3QgZHVyOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisgICAgaW50
 IHhmZXJsZW4sIHJhdGU7DQorDQorICAgIGRhdGEgPSAmc2MtPnR4X2RhdGFbMF07DQorICAg
 IGRlc2MgPSAoc3RydWN0IHJ1bV90eF9kZXNjICopZGF0YS0+YnVmOw0KKw0KKyAgICByYXRl
 ID0gSUVFRTgwMjExX0lTX0NIQU5fNUdIWihpYy0+aWNfY3VyY2hhbikgPyAxMiA6IDI7DQor
 DQorICAgIGRhdGEtPm0gPSBtMDsNCisgICAgZGF0YS0+bmkgPSBuaTsNCisNCisgICAgd2gg
 PSBtdG9kKG0wLCBzdHJ1Y3QgaWVlZTgwMjExX2ZyYW1lICopOw0KKw0KKyAgICBpZiAoIUlF
 RUU4MDIxMV9JU19NVUxUSUNBU1Qod2gtPmlfYWRkcjEpKSB7DQorICAgICAgICBmbGFncyB8
 PSBSVDI1NzNfVFhfQUNLOw0KKw0KKyAgICAgICAgZHVyID0gcnVtX3R4dGltZShSVU1fQUNL
 X1NJWkUsIHJ1bV9hY2tfcmF0ZShpYywgcmF0ZSksDQorICAgICAgICAgICAgaWMtPmljX2Zs
 YWdzKSArIHNjLT5zaWZzOw0KKyAgICAgICAgKih1aW50MTZfdCAqKXdoLT5pX2R1ciA9IGh0
 b2xlMTYoZHVyKTsNCisNCisgICAgICAgIC8qIHRlbGwgaGFyZHdhcmUgdG8gc2V0IHRpbWVz
 dGFtcCBpbiBwcm9iZSByZXNwb25zZXMgKi8NCisgICAgICAgIGlmICgod2gtPmlfZmNbMF0g
 Jg0KKyAgICAgICAgICAgIChJRUVFODAyMTFfRkMwX1RZUEVfTUFTSyB8IElFRUU4MDIxMV9G
 QzBfU1VCVFlQRV9NQVNLKSkgPT0NCisgICAgICAgICAgICAoSUVFRTgwMjExX0ZDMF9UWVBF
 X01HVCB8IElFRUU4MDIxMV9GQzBfU1VCVFlQRV9QUk9CRV9SRVNQKSkNCisgICAgICAgICAg
 ICBmbGFncyB8PSBSVDI1NzNfVFhfVElNRVNUQU1QOw0KKyAgICB9DQorDQorICAgIGlmIChi
 cGZfcGVlcnNfcHJlc2VudChzYy0+c2NfZHJ2YnBmKSkgew0KKyAgICAgICAgc3RydWN0IHJ1
 bV90eF9yYWRpb3RhcF9oZWFkZXIgKnRhcCA9ICZzYy0+c2NfdHh0YXA7DQorDQorICAgICAg
 ICB0YXAtPnd0X2ZsYWdzID0gMDsNCisgICAgICAgIHRhcC0+d3RfcmF0ZSA9IHJhdGU7DQor
 ICAgICAgICB0YXAtPnd0X2NoYW5fZnJlcSA9IGh0b2xlMTYoaWMtPmljX2N1cmNoYW4tPmlj
 X2ZyZXEpOw0KKyAgICAgICAgdGFwLT53dF9jaGFuX2ZsYWdzID0gaHRvbGUxNihpYy0+aWNf
 Y3VyY2hhbi0+aWNfZmxhZ3MpOw0KKyAgICAgICAgdGFwLT53dF9hbnRlbm5hID0gc2MtPnR4
 X2FudDsNCisNCisgICAgICAgIGJwZl9tdGFwMihzYy0+c2NfZHJ2YnBmLCB0YXAsIHNjLT5z
 Y190eHRhcF9sZW4sIG0wKTsNCisgICAgfQ0KKw0KKyAgICBtX2NvcHlkYXRhKG0wLCAwLCBt
 MC0+bV9wa3RoZHIubGVuLCBkYXRhLT5idWYgKyBSVDI1NzNfVFhfREVTQ19TSVpFKTsNCisg
 ICAgcnVtX3NldHVwX3R4X2Rlc2Moc2MsIGRlc2MsIGZsYWdzLCAwLCBtMC0+bV9wa3RoZHIu
 bGVuLCByYXRlKTsNCisNCisgICAgLyogYWxpZ24gZW5kIG9uIGEgNC1ieXRlcyBib3VuZGFy
 eSAqLw0KKyAgICB4ZmVybGVuID0gKFJUMjU3M19UWF9ERVNDX1NJWkUgKyBtMC0+bV9wa3Ro
 ZHIubGVuICsgMykgJiB+MzsNCisNCisgICAgLyoNCisgICAgICogTm8gc3BhY2UgbGVmdCBp
 biB0aGUgbGFzdCBVUkIgdG8gc3RvcmUgdGhlIGV4dHJhIDQgYnl0ZXMsIGZvcmNlDQorICAg
 ICAqIHNlbmRpbmcgb2YgYW5vdGhlciBVUkIuDQorICAgICAqLw0KKyAgICBpZiAoKHhmZXJs
 ZW4gJSA2NCkgPT0gMCkNCisgICAgICAgIHhmZXJsZW4gKz0gNDsNCisNCisgICAgRFBSSU5U
 Rk4oMTAsICgic2VuZGluZyBtc2cgZnJhbWUgbGVuPSVsZCByYXRlPSVkIHhmZXIgbGVuPSVk
 XG4iLA0KKyAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiArIFJUMjU3M19UWF9ERVNDX1NJWkUs
 IHJhdGUsIHhmZXJsZW4pKTsNCisNCisgICAgdXNiZF9zZXR1cF94ZmVyKGRhdGEtPnhmZXIs
 IHNjLT5zY190eF9waXBlaCwgZGF0YSwgZGF0YS0+YnVmLCB4ZmVybGVuLA0KKyAgICAgICAg
 VVNCRF9GT1JDRV9TSE9SVF9YRkVSIHwgVVNCRF9OT19DT1BZLCBSVU1fVFhfVElNRU9VVCwg
 cnVtX3R4ZW9mKTsNCisNCisgICAgZXJyb3IgPSB1c2JkX3RyYW5zZmVyKGRhdGEtPnhmZXIp
 Ow0KKyAgICBpZiAoZXJyb3IgIT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTiAmJiBlcnJvciAh
 PSBVU0JEX0lOX1BST0dSRVNTKSB7DQorICAgICAgICBtX2ZyZWVtKG0wKTsNCisJCWRhdGEt
 Pm0gPSBOVUxMOw0KKwkJZGF0YS0+bmkgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIGVycm9y
 Ow0KKyAgICB9DQorDQorICAgIHNjLT50eF9xdWV1ZWQrKzsNCisNCisgICAgcmV0dXJuIDA7
 DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitydW1fdHhfZGF0YShzdHJ1Y3QgcnVtX3NvZnRjICpz
 Yywgc3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQ0KK3sNCisg
 ICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3Qg
 cnVtX3R4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisg
 ICAgc3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7DQorICAgIHN0cnVjdCBpZWVlODAyMTFf
 a2V5ICprOw0KKyAgICB1aW50MzJfdCBmbGFncyA9IDA7DQorICAgIHVpbnQxNl90IGR1cjsN
 CisgICAgdXNiZF9zdGF0dXMgZXJyb3I7DQorICAgIGludCB4ZmVybGVuLCByYXRlOw0KKw0K
 KyAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7DQorDQorICAg
 IGlmIChpYy0+aWNfZml4ZWRfcmF0ZSAhPSBJRUVFODAyMTFfRklYRURfUkFURV9OT05FKQ0K
 KyAgICAgICAgcmF0ZSA9IGljLT5pY19ic3MtPm5pX3JhdGVzLnJzX3JhdGVzW2ljLT5pY19m
 aXhlZF9yYXRlXTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmF0ZSA9IG5pLT5uaV9yYXRlcy5y
 c19yYXRlc1tuaS0+bmlfdHhyYXRlXTsNCisNCisgICAgcmF0ZSAmPSBJRUVFODAyMTFfUkFU
 RV9WQUw7DQorDQorICAgIGlmICh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFfV0VQKSB7
 DQorICAgICAgICBrID0gaWVlZTgwMjExX2NyeXB0b19lbmNhcChpYywgbmksIG0wKTsNCisg
 ICAgICAgIGlmIChrID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX2ZyZWVtKG0wKTsNCisg
 ICAgICAgICAgICByZXR1cm4gRU5PQlVGUzsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8q
 IHBhY2tldCBoZWFkZXIgbWF5IGhhdmUgbW92ZWQsIHJlc2V0IG91ciBsb2NhbCBwb2ludGVy
 ICovDQorICAgICAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7
 DQorICAgIH0NCisNCisgICAgZGF0YSA9ICZzYy0+dHhfZGF0YVswXTsNCisgICAgZGVzYyA9
 IChzdHJ1Y3QgcnVtX3R4X2Rlc2MgKilkYXRhLT5idWY7DQorDQorICAgIGRhdGEtPm0gPSBt
 MDsNCisgICAgZGF0YS0+bmkgPSBuaTsNCisNCisgICAgaWYgKCFJRUVFODAyMTFfSVNfTVVM
 VElDQVNUKHdoLT5pX2FkZHIxKSkgew0KKyAgICAgICAgZmxhZ3MgfD0gUlQyNTczX1RYX0FD
 SzsNCisNCisgICAgICAgIGR1ciA9IHJ1bV90eHRpbWUoUlVNX0FDS19TSVpFLCBydW1fYWNr
 X3JhdGUoaWMsIHJhdGUpLA0KKyAgICAgICAgICAgIGljLT5pY19mbGFncykgKyBzYy0+c2lm
 czsNCisgICAgICAgICoodWludDE2X3QgKil3aC0+aV9kdXIgPSBodG9sZTE2KGR1cik7DQor
 ICAgIH0NCisNCisgICAgaWYgKGJwZl9wZWVyc19wcmVzZW50KHNjLT5zY19kcnZicGYpKSB7
 DQorICAgICAgICBzdHJ1Y3QgcnVtX3R4X3JhZGlvdGFwX2hlYWRlciAqdGFwID0gJnNjLT5z
 Y190eHRhcDsNCisNCisgICAgICAgIHRhcC0+d3RfZmxhZ3MgPSAwOw0KKyAgICAgICAgdGFw
 LT53dF9yYXRlID0gcmF0ZTsNCisgICAgICAgIHRhcC0+d3RfY2hhbl9mcmVxID0gaHRvbGUx
 NihpYy0+aWNfY3VyY2hhbi0+aWNfZnJlcSk7DQorICAgICAgICB0YXAtPnd0X2NoYW5fZmxh
 Z3MgPSBodG9sZTE2KGljLT5pY19jdXJjaGFuLT5pY19mbGFncyk7DQorICAgICAgICB0YXAt
 Pnd0X2FudGVubmEgPSBzYy0+dHhfYW50Ow0KKw0KKyAgICAgICAgYnBmX210YXAyKHNjLT5z
 Y19kcnZicGYsIHRhcCwgc2MtPnNjX3R4dGFwX2xlbiwgbTApOw0KKyAgICB9DQorDQorICAg
 IG1fY29weWRhdGEobTAsIDAsIG0wLT5tX3BrdGhkci5sZW4sIGRhdGEtPmJ1ZiArIFJUMjU3
 M19UWF9ERVNDX1NJWkUpOw0KKyAgICBydW1fc2V0dXBfdHhfZGVzYyhzYywgZGVzYywgZmxh
 Z3MsIDAsIG0wLT5tX3BrdGhkci5sZW4sIHJhdGUpOw0KKw0KKyAgICAvKiBhbGlnbiBlbmQg
 b24gYSA0LWJ5dGVzIGJvdW5kYXJ5ICovDQorICAgIHhmZXJsZW4gPSAoUlQyNTczX1RYX0RF
 U0NfU0laRSArIG0wLT5tX3BrdGhkci5sZW4gKyAzKSAmIH4zOw0KKw0KKyAgICAvKg0KKyAg
 ICAgKiBObyBzcGFjZSBsZWZ0IGluIHRoZSBsYXN0IFVSQiB0byBzdG9yZSB0aGUgZXh0cmEg
 NCBieXRlcywgZm9yY2UNCisgICAgICogc2VuZGluZyBvZiBhbm90aGVyIFVSQi4NCisgICAg
 ICovDQorICAgIGlmICgoeGZlcmxlbiAlIDY0KSA9PSAwKQ0KKyAgICAgICAgeGZlcmxlbiAr
 PSA0Ow0KKw0KKyAgICBEUFJJTlRGTigxMCwgKCJzZW5kaW5nIGRhdGEgZnJhbWUgbGVuPSVs
 ZCByYXRlPSVkIHhmZXIgbGVuPSVkXG4iLA0KKyAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiAr
 IFJUMjU3M19UWF9ERVNDX1NJWkUsIHJhdGUsIHhmZXJsZW4pKTsNCisNCisgICAgdXNiZF9z
 ZXR1cF94ZmVyKGRhdGEtPnhmZXIsIHNjLT5zY190eF9waXBlaCwgZGF0YSwgZGF0YS0+YnVm
 LCANCisJCXhmZXJsZW4sIFVTQkRfRk9SQ0VfU0hPUlRfWEZFUiB8IFVTQkRfTk9fQ09QWSwg
 UlVNX1RYX1RJTUVPVVQsIA0KKwkJcnVtX3R4ZW9mKTsNCisNCisgICAgZXJyb3IgPSB1c2Jk
 X3RyYW5zZmVyKGRhdGEtPnhmZXIpOw0KKyAgICBpZiAoZXJyb3IgIT0gVVNCRF9OT1JNQUxf
 Q09NUExFVElPTiAmJiBlcnJvciAhPSBVU0JEX0lOX1BST0dSRVNTKXsNCisgICAgICAgIHJl
 dHVybiBlcnJvcjsNCisJfQ0KKw0KKyAgICBzYy0+dHhfcXVldWVkKys7DQorCQkNCisgICAg
 cmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3N0YXJ0KHN0cnVjdCBpZm5l
 dCAqaWZwKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRj
 Ow0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHN0
 cnVjdCBtYnVmICptMDsNCisgICAgc3RydWN0IGV0aGVyX2hlYWRlciAqZWg7DQorICAgIHN0
 cnVjdCBpZWVlODAyMTFfbm9kZSAqbmk7DQorCXN0YXRpYyBpbnQgZmJ1c3kgPSAwOw0KKw0K
 KwlpZiAoZmJ1c3kpIHJldHVybjsNCisNCisJZmJ1c3kgPSAxOw0KKw0KKyAgICBmb3IgKDs7
 KSB7DQorICAgICAgICBJRl9QT0xMKCZpYy0+aWNfbWd0cSwgbTApOw0KKyAgICAgICAgaWYg
 KG0wICE9IE5VTEwpIHsNCisgICAgICAgICAgICBpZiAoc2MtPnR4X3F1ZXVlZCA+PSBSVDI1
 NzNfVFhfTElTVF9DT1VOVCkgew0KKyAgICAgICAgICAgICAgICBpZnAtPmlmX2Rydl9mbGFn
 cyB8PSBJRkZfRFJWX09BQ1RJVkU7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAg
 ICAgICAgIH0NCisgICAgICAgICAgICBJRl9ERVFVRVVFKCZpYy0+aWNfbWd0cSwgbTApOw0K
 Kw0KKyAgICAgICAgICAgIG5pID0gKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqKW0wLT5tX3Br
 dGhkci5yY3ZpZjsNCisgICAgICAgICAgICBtMC0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOw0K
 Kw0KKyAgICAgICAgICAgIGlmIChicGZfcGVlcnNfcHJlc2VudChpYy0+aWNfcmF3YnBmKSkN
 CisgICAgICAgICAgICAgICAgYnBmX210YXAoaWMtPmljX3Jhd2JwZiwgbTApOw0KKw0KKyAg
 ICAgICAgICAgIGlmIChydW1fdHhfbWd0KHNjLCBtMCwgbmkpICE9IDApDQorICAgICAgICAg
 ICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAo
 aWMtPmljX3N0YXRlICE9IElFRUU4MDIxMV9TX1JVTikNCisgICAgICAgICAgICAgICAgYnJl
 YWs7DQorICAgICAgICAgICAgSUZRX0RSVl9ERVFVRVVFKCZpZnAtPmlmX3NuZCwgbTApOw0K
 KyAgICAgICAgICAgIGlmIChtMCA9PSBOVUxMKQ0KKyAgICAgICAgICAgICAgICBicmVhazsN
 CisgICAgICAgICAgICBpZiAoc2MtPnR4X3F1ZXVlZCA+PSBSVDI1NzNfVFhfTElTVF9DT1VO
 VCkgew0KKyAgICAgICAgICAgIAlJRlFfRFJWX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBtMCk7
 DQorICAgICAgICAgICAgICAgIGlmcC0+aWZfZHJ2X2ZsYWdzIHw9IElGRl9EUlZfT0FDVElW
 RTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAg
 ICAgICAgIGlmIChtMC0+bV9sZW4gPCBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcikgJiYN
 CisgICAgICAgICAgICAgICAgIShtMCA9IG1fcHVsbHVwKG0wLCBzaXplb2Yoc3RydWN0IGV0
 aGVyX2hlYWRlcikpKSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAg
 ICAgICAgZWggPSBtdG9kKG0wLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopOw0KKyAgICAgICAg
 ICAgIG5pID0gaWVlZTgwMjExX2ZpbmRfdHhub2RlKGljLCBlaC0+ZXRoZXJfZGhvc3QpOw0K
 KyAgICAgICAgICAgIGlmIChuaSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIG1fZnJl
 ZW0obTApOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQor
 ICAgICAgICAgICAgQlBGX01UQVAoaWZwLCBtMCk7DQorDQorICAgICAgICAgICAgbTAgPSBp
 ZWVlODAyMTFfZW5jYXAoaWMsIG0wLCBuaSk7DQorICAgICAgICAgICAgaWYgKG0wID09IE5V
 TEwpIHsNCisgICAgICAgICAgICAgICAgaWVlZTgwMjExX2ZyZWVfbm9kZShuaSk7DQorICAg
 ICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAg
 ICBpZiAoYnBmX3BlZXJzX3ByZXNlbnQoaWMtPmljX3Jhd2JwZikpDQorICAgICAgICAgICAg
 ICAgIGJwZl9tdGFwKGljLT5pY19yYXdicGYsIG0wKTsNCisNCisgICAgICAgICAgICBpZiAo
 cnVtX3R4X2RhdGEoc2MsIG0wLCBuaSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZWVl
 ODAyMTFfZnJlZV9ub2RlKG5pKTsNCisgICAgICAgICAgICAgICAgaWZwLT5pZl9vZXJyb3Jz
 Kys7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg
 IH0NCisNCisgICAgICAgIHNjLT5zY190eF90aW1lciA9IDU7DQorICAgICAgICBpZnAtPmlm
 X3RpbWVyID0gMTsNCisgICAgfQ0KKw0KKwlmYnVzeSA9IDA7DQorDQorfQ0KKw0KK3N0YXRp
 YyB2b2lkDQorcnVtX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqaWZwKQ0KK3sNCisgICAgc3Ry
 dWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KKyAgICBzdHJ1Y3QgaWVlZTgw
 MjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorDQorICAgIFJVTV9MT0NLKHNjKTsNCisNCisg
 ICAgaWZwLT5pZl90aW1lciA9IDA7DQorDQorICAgIGlmIChzYy0+c2NfdHhfdGltZXIgPiAw
 KSB7DQorICAgICAgICBpZiAoLS1zYy0+c2NfdHhfdGltZXIgPT0gMCkgew0KKyAgICAgICAg
 ICAgIHByaW50ZigiJXM6IGRldmljZSB0aW1lb3V0XG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0
 KHNjLT5zY19kZXYpKTsNCisgICAgICAgICAgICAvKnJ1bV9pbml0KGlmcCk7IFhYWCBuZWVk
 cyBhIHByb2Nlc3MgY29udGV4dCEgKi8NCisgICAgICAgICAgICBpZnAtPmlmX29lcnJvcnMr
 KzsNCisgICAgCSAgICBSVU1fVU5MT0NLKHNjKTsNCisgICAgICAgICAgICByZXR1cm47DQor
 ICAgICAgICB9DQorICAgICAgICBpZnAtPmlmX3RpbWVyID0gMTsNCisgICAgfQ0KKw0KKyAg
 ICBpZWVlODAyMTFfd2F0Y2hkb2coaWMpOw0KKw0KKyAgICBSVU1fVU5MT0NLKHNjKTsNCit9
 DQorDQorc3RhdGljIGludA0KK3J1bV9pb2N0bChzdHJ1Y3QgaWZuZXQgKmlmcCwgdV9sb25n
 IGNtZCwgY2FkZHJfdCBkYXRhKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBp
 ZnAtPmlmX3NvZnRjOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf
 aWM7DQorICAgIGludCBlcnJvciA9IDA7DQorDQorICAgIHN3aXRjaCAoY21kKSB7DQorICAg
 IGNhc2UgU0lPQ1NJRkZMQUdTOg0KKyAgICAgICAgaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZf
 VVApIHsNCisgICAgICAgICAgICBpZiAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JV
 Tk5JTkcpew0KKyAgICAJCQlSVU1fTE9DSyhzYyk7DQorICAgICAgICAgICAgICAgIHJ1bV91
 cGRhdGVfcHJvbWlzYyhzYyk7DQorICAgIAkJCVJVTV9VTkxPQ0soc2MpOw0KKyAgICAgICAg
 ICAgIH0gZWxzZSB7DQorICAgIAkJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgICAgICAgICAg
 cnVtX2luaXQoc2MpOw0KKyAgICAJCQlSVU1fVU5MT0NLKHNjKTsNCisJCQl9DQorICAgICAg
 ICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9E
 UlZfUlVOTklORyl7DQorICAgIAkJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgICAgICAgICAg
 cnVtX3N0b3AoaWZwKTsNCisgICAgCQkJUlVNX1VOTE9DSyhzYyk7DQorCQkJfQ0KKyAgICAg
 ICAgfQ0KKyAgICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgICBlcnJv
 ciA9IGllZWU4MDIxMV9pb2N0bChpYywgY21kLCBkYXRhKTsNCisgICAgfQ0KKw0KKyAgICBp
 ZiAoZXJyb3IgPT0gRU5FVFJFU0VUKSB7DQorCQlpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZf
 VVApICYmDQorICAgICAgICAgICAgCShpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVO
 TklORykgJiYNCisJCQkJKGljLT5pY19yb2FtaW5nICE9IElFRUU4MDIxMV9ST0FNSU5HX01B
 TlVBTCkpew0KKyAgICAJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgIAlydW1faW5pdChzYyk7
 DQorICAgIAkJUlVNX1VOTE9DSyhzYyk7DQorCQl9DQorICAgICAgICBlcnJvciA9IDA7DQor
 ICAgIH0NCisNCisgICAgcmV0dXJuIGVycm9yOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1
 bV9lZXByb21fcmVhZChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDE2X3QgYWRkciwgdm9p
 ZCAqYnVmLCBpbnQgbGVuKQ0KK3sNCisgICAgdXNiX2RldmljZV9yZXF1ZXN0X3QgcmVxOw0K
 KyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisgICAgcmVxLmJtUmVxdWVzdFR5cGUgPSBV
 VF9SRUFEX1ZFTkRPUl9ERVZJQ0U7DQorICAgIHJlcS5iUmVxdWVzdCA9IFJUMjU3M19SRUFE
 X0VFUFJPTTsNCisgICAgVVNFVFcocmVxLndWYWx1ZSwgMCk7DQorICAgIFVTRVRXKHJlcS53
 SW5kZXgsIGFkZHIpOw0KKyAgICBVU0VUVyhyZXEud0xlbmd0aCwgbGVuKTsNCisNCisgICAg
 ZXJyb3IgPSB1c2JkX2RvX3JlcXVlc3Qoc2MtPnNjX3VkZXYsICZyZXEsIGJ1Zik7DQorICAg
 IGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgcmVh
 ZCBFRVBST006ICVzXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2Mt
 PnNjX2RldiksIHVzYmRfZXJyc3RyKGVycm9yKSk7DQorICAgIH0NCit9DQorDQorc3RhdGlj
 IHVpbnQzMl90DQorcnVtX3JlYWQoc3RydWN0IHJ1bV9zb2Z0YyAqc2MsIHVpbnQxNl90IHJl
 ZykNCit7DQorICAgIHVpbnQzMl90IHZhbDsNCisNCisgICAgcnVtX3JlYWRfbXVsdGkoc2Ms
 IHJlZywgJnZhbCwgc2l6ZW9mIHZhbCk7DQorDQorICAgIHJldHVybiBsZTMydG9oKHZhbCk7
 DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3JlYWRfbXVsdGkoc3RydWN0IHJ1bV9zb2Z0
 YyAqc2MsIHVpbnQxNl90IHJlZywgdm9pZCAqYnVmLCBpbnQgbGVuKQ0KK3sNCisgICAgdXNi
 X2RldmljZV9yZXF1ZXN0X3QgcmVxOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisg
 ICAgcmVxLmJtUmVxdWVzdFR5cGUgPSBVVF9SRUFEX1ZFTkRPUl9ERVZJQ0U7DQorICAgIHJl
 cS5iUmVxdWVzdCA9IFJUMjU3M19SRUFEX01VTFRJX01BQzsNCisgICAgVVNFVFcocmVxLndW
 YWx1ZSwgMCk7DQorICAgIFVTRVRXKHJlcS53SW5kZXgsIHJlZyk7DQorICAgIFVTRVRXKHJl
 cS53TGVuZ3RoLCBsZW4pOw0KKw0KKyAgICBlcnJvciA9IHVzYmRfZG9fcmVxdWVzdChzYy0+
 c2NfdWRldiwgJnJlcSwgYnVmKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisgICAgICAg
 IHByaW50ZigiJXM6IGNvdWxkIG5vdCBtdWx0aSByZWFkIE1BQyByZWdpc3RlcjogJXNcbiIs
 DQorICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSwgdXNiZF9l
 cnJzdHIoZXJyb3IpKTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV93cml0
 ZShzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDE2X3QgcmVnLCB1aW50MzJfdCB2YWwpDQor
 ew0KKyAgICB1aW50MzJfdCB0bXAgPSBodG9sZTMyKHZhbCk7DQorDQorICAgIHJ1bV93cml0
 ZV9tdWx0aShzYywgcmVnLCAmdG1wLCBzaXplb2YgdG1wKTsNCit9DQorDQorc3RhdGljIHZv
 aWQNCitydW1fd3JpdGVfbXVsdGkoc3RydWN0IHJ1bV9zb2Z0YyAqc2MsIHVpbnQxNl90IHJl
 Zywgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQ0KK3sNCisgICAgdXNiX2RldmljZV9yZXF1ZXN0
 X3QgcmVxOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisgICAgcmVxLmJtUmVxdWVz
 dFR5cGUgPSBVVF9XUklURV9WRU5ET1JfREVWSUNFOw0KKyAgICByZXEuYlJlcXVlc3QgPSBS
 VDI1NzNfV1JJVEVfTVVMVElfTUFDOw0KKyAgICBVU0VUVyhyZXEud1ZhbHVlLCAwKTsNCisg
 ICAgVVNFVFcocmVxLndJbmRleCwgcmVnKTsNCisgICAgVVNFVFcocmVxLndMZW5ndGgsIGxl
 bik7DQorDQorICAgIGVycm9yID0gdXNiZF9kb19yZXF1ZXN0KHNjLT5zY191ZGV2LCAmcmVx
 LCBidWYpOw0KKyAgICBpZiAoZXJyb3IgIT0gMCkgew0KKyAgICAgICAgcHJpbnRmKCIlczog
 Y291bGQgbm90IG11bHRpIHdyaXRlIE1BQyByZWdpc3RlcjogJXNcbiIsDQorICAgICAgICAg
 ICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSwgdXNiZF9lcnJzdHIoZXJyb3Ip
 KTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9iYnBfd3JpdGUoc3RydWN0
 IHJ1bV9zb2Z0YyAqc2MsIHVpbnQ4X3QgcmVnLCB1aW50OF90IHZhbCkNCit7DQorICAgIHVp
 bnQzMl90IHRtcDsNCisgICAgaW50IG50cmllczsNCisNCisgICAgZm9yIChudHJpZXMgPSAw
 OyBudHJpZXMgPCA1OyBudHJpZXMrKykgew0KKyAgICAgICAgaWYgKCEocnVtX3JlYWQoc2Ms
 IFJUMjU3M19QSFlfQ1NSMykgJiBSVDI1NzNfQkJQX0JVU1kpKQ0KKyAgICAgICAgICAgIGJy
 ZWFrOw0KKyAgICB9DQorICAgIGlmIChudHJpZXMgPT0gNSkgew0KKyAgICAgICAgcHJpbnRm
 KCIlczogY291bGQgbm90IHdyaXRlIHRvIEJCUFxuIiwgZGV2aWNlX2dldF9uYW1ldW5pdChz
 Yy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgdG1wID0g
 UlQyNTczX0JCUF9CVVNZIHwgKHJlZyAmIDB4N2YpIDw8IDggfCB2YWw7DQorICAgIHJ1bV93
 cml0ZShzYywgUlQyNTczX1BIWV9DU1IzLCB0bXApOw0KK30NCisNCitzdGF0aWMgdWludDhf
 dA0KK3J1bV9iYnBfcmVhZChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDhfdCByZWcpDQor
 ew0KKyAgICB1aW50MzJfdCB2YWw7DQorICAgIGludCBudHJpZXM7DQorDQorICAgIGZvciAo
 bnRyaWVzID0gMDsgbnRyaWVzIDwgNTsgbnRyaWVzKyspIHsNCisgICAgICAgIGlmICghKHJ1
 bV9yZWFkKHNjLCBSVDI1NzNfUEhZX0NTUjMpICYgUlQyNTczX0JCUF9CVVNZKSkNCisgICAg
 ICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDUpIHsNCisgICAg
 ICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCByZWFkIEJCUFxuIiwgZGV2aWNlX2dldF9uYW1l
 dW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAg
 ICB2YWwgPSBSVDI1NzNfQkJQX0JVU1kgfCBSVDI1NzNfQkJQX1JFQUQgfCByZWcgPDwgODsN
 CisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfUEhZX0NTUjMsIHZhbCk7DQorDQorICAgIGZv
 ciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwOyBudHJpZXMrKykgew0KKyAgICAgICAgdmFs
 ID0gcnVtX3JlYWQoc2MsIFJUMjU3M19QSFlfQ1NSMyk7DQorICAgICAgICBpZiAoISh2YWwg
 JiBSVDI1NzNfQkJQX0JVU1kpKQ0KKyAgICAgICAgICAgIHJldHVybiB2YWwgJiAweGZmOw0K
 KyAgICAgICAgREVMQVkoMSk7DQorICAgIH0NCisNCisgICAgcHJpbnRmKCIlczogY291bGQg
 bm90IHJlYWQgQkJQXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisg
 ICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3JmX3dyaXRlKHN0cnVj
 dCBydW1fc29mdGMgKnNjLCB1aW50OF90IHJlZywgdWludDMyX3QgdmFsKQ0KK3sNCisgICAg
 dWludDMyX3QgdG1wOw0KKyAgICBpbnQgbnRyaWVzOw0KKw0KKyAgICBmb3IgKG50cmllcyA9
 IDA7IG50cmllcyA8IDU7IG50cmllcysrKSB7DQorICAgICAgICBpZiAoIShydW1fcmVhZChz
 YywgUlQyNTczX1BIWV9DU1I0KSAmIFJUMjU3M19SRl9CVVNZKSkNCisgICAgICAgICAgICBi
 cmVhazsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDUpIHsNCisgICAgICAgIHByaW50
 ZigiJXM6IGNvdWxkIG5vdCB3cml0ZSB0byBSRlxuIiwgZGV2aWNlX2dldF9uYW1ldW5pdChz
 Yy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgdG1wID0g
 UlQyNTczX1JGX0JVU1kgfCBSVDI1NzNfUkZfMjBCSVQgfCAodmFsICYgMHhmZmZmZikgPDwg
 MiB8DQorICAgICAgICAocmVnICYgMyk7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX1BI
 WV9DU1I0LCB0bXApOw0KKw0KKyAgICAvKiByZW1lbWJlciBsYXN0IHdyaXR0ZW4gdmFsdWUg
 aW4gc2MgKi8NCisgICAgc2MtPnJmX3JlZ3NbcmVnXSA9IHZhbDsNCisNCisgICAgRFBSSU5U
 Rk4oMTUsICgiUkYgUlsldV0gPC0gMHglMDV4XG4iLCByZWcgJiAzLCB2YWwgJiAweGZmZmZm
 KSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3NlbGVjdF9hbnRlbm5hKHN0cnVjdCBy
 dW1fc29mdGMgKnNjKQ0KK3sNCisgICAgdWludDhfdCBiYnA0LCBiYnA3NzsNCisgICAgdWlu
 dDMyX3QgdG1wOw0KKw0KKyAgICBiYnA0ICA9IHJ1bV9iYnBfcmVhZChzYywgNCk7DQorICAg
 IGJicDc3ID0gcnVtX2JicF9yZWFkKHNjLCA3Nyk7DQorDQorICAgIC8qIFRCRCAqLw0KKw0K
 KyAgICAvKiBtYWtlIHN1cmUgUnggaXMgZGlzYWJsZWQgYmVmb3JlIHN3aXRjaGluZyBhbnRl
 bm5hICovDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1IwKTsNCisg
 ICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXAgfCBSVDI1NzNfRElTQUJM
 RV9SWCk7DQorDQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsICA0LCBiYnA0KTsNCisgICAgcnVt
 X2JicF93cml0ZShzYywgNzcsIGJicDc3KTsNCisNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1
 NzNfVFhSWF9DU1IwLCB0bXApOw0KK30NCisNCisvKg0KKyAqIEVuYWJsZSBtdWx0aS1yYXRl
 IHJldHJpZXMgZm9yIGZyYW1lcyBzZW50IGF0IE9GRE0gcmF0ZXMuDQorICogSW4gODAyLjEx
 Yi9nIG1vZGUsIGFsbG93IGZhbGxiYWNrIHRvIENDSyByYXRlcy4NCisgKi8NCitzdGF0aWMg
 dm9pZA0KK3J1bV9lbmFibGVfbXJyKHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisgICAg
 c3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50MzJfdCB0
 bXA7DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1I0KTsNCisN
 CisgICAgdG1wICY9IH5SVDI1NzNfTVJSX0NDS19GQUxMQkFDSzsNCisgICAgaWYgKCFJRUVF
 ODAyMTFfSVNfQ0hBTl81R0haKGljLT5pY19jdXJjaGFuKSkNCisgICAgICAgIHRtcCB8PSBS
 VDI1NzNfTVJSX0NDS19GQUxMQkFDSzsNCisgICAgdG1wIHw9IFJUMjU3M19NUlJfRU5BQkxF
 RDsNCisNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I0LCB0bXApOw0KK30N
 CisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXRfdHhwcmVhbWJsZShzdHJ1Y3QgcnVtX3NvZnRj
 ICpzYykNCit7DQorICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gcnVtX3JlYWQo
 c2MsIFJUMjU3M19UWFJYX0NTUjQpOw0KKw0KKyAgICB0bXAgJj0gflJUMjU3M19TSE9SVF9Q
 UkVBTUJMRTsNCisgICAgaWYgKHNjLT5zY19pYy5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NI
 UFJFQU1CTEUpDQorICAgICAgICB0bXAgfD0gUlQyNTczX1NIT1JUX1BSRUFNQkxFOw0KKw0K
 KyAgICBydW1fd3JpdGUoc2MsIFJUMjU3M19UWFJYX0NTUjQsIHRtcCk7DQorfQ0KKw0KK3N0
 YXRpYyB2b2lkDQorcnVtX3NldF9iYXNpY3JhdGVzKHN0cnVjdCBydW1fc29mdGMgKnNjKQ0K
 K3sNCisgICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKw0KKyAg
 ICAvKiB1cGRhdGUgYmFzaWMgcmF0ZSBzZXQgKi8NCisgICAgaWYgKGljLT5pY19jdXJtb2Rl
 ID09IElFRUU4MDIxMV9NT0RFXzExQikgew0KKyAgICAgICAgLyogMTFiIGJhc2ljIHJhdGVz
 OiAxLCAyTWJwcyAqLw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I1
 LCAweDMpOw0KKyAgICB9IGVsc2UgaWYgKElFRUU4MDIxMV9JU19DSEFOXzVHSFooaWMtPmlj
 X2Jzcy0+bmlfY2hhbikpIHsNCisgICAgICAgIC8qIDExYSBiYXNpYyByYXRlczogNiwgMTIs
 IDI0TWJwcyAqLw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I1LCAw
 eDE1MCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICAvKiAxMWcgYmFzaWMgcmF0ZXM6IDEs
 IDIsIDUuNSwgMTEsIDYsIDEyLCAyNE1icHMgKi8NCisgICAgICAgIHJ1bV93cml0ZShzYywg
 UlQyNTczX1RYUlhfQ1NSNSwgMHgxNWYpOw0KKyAgICB9DQorfQ0KKw0KKy8qDQorICogUmVw
 cm9ncmFtIE1BQy9CQlAgdG8gc3dpdGNoIHRvIGEgbmV3IGJhbmQuICBWYWx1ZXMgdGFrZW4g
 ZnJvbSB0aGUgcmVmZXJlbmNlDQorICogZHJpdmVyLg0KKyAqLw0KK3N0YXRpYyB2b2lkDQor
 cnVtX3NlbGVjdF9iYW5kKHN0cnVjdCBydW1fc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjEx
 X2NoYW5uZWwgKmMpDQorew0KKyAgICB1aW50OF90IGJicDE3LCBiYnAzNSwgYmJwOTYsIGJi
 cDk3LCBiYnA5OCwgYmJwMTA0Ow0KKyAgICB1aW50MzJfdCB0bXA7DQorDQorICAgIC8qIHVw
 ZGF0ZSBhbGwgQkJQIHJlZ2lzdGVycyB0aGF0IGRlcGVuZCBvbiB0aGUgYmFuZCAqLw0KKyAg
 ICBiYnAxNyA9IDB4MjA7IGJicDk2ID0gMHg0ODsgYmJwMTA0ID0gMHgyYzsNCisgICAgYmJw
 MzUgPSAweDUwOyBiYnA5NyA9IDB4NDg7IGJicDk4ICA9IDB4NDg7DQorICAgIGlmIChJRUVF
 ODAyMTFfSVNfQ0hBTl81R0haKGMpKSB7DQorICAgICAgICBiYnAxNyArPSAweDA4OyBiYnA5
 NiArPSAweDEwOyBiYnAxMDQgKz0gMHgwYzsNCisgICAgICAgIGJicDM1ICs9IDB4MTA7IGJi
 cDk3ICs9IDB4MTA7IGJicDk4ICArPSAweDEwOw0KKyAgICB9DQorICAgIGlmICgoSUVFRTgw
 MjExX0lTX0NIQU5fMkdIWihjKSAmJiBzYy0+ZXh0XzJnaHpfbG5hKSB8fA0KKyAgICAgICAg
 KElFRUU4MDIxMV9JU19DSEFOXzVHSFooYykgJiYgc2MtPmV4dF81Z2h6X2xuYSkpIHsNCisg
 ICAgICAgIGJicDE3ICs9IDB4MTA7IGJicDk2ICs9IDB4MTA7IGJicDEwNCArPSAweDEwOw0K
 KyAgICB9DQorDQorICAgIHNjLT5iYnAxNyA9IGJicDE3Ow0KKyAgICBydW1fYmJwX3dyaXRl
 KHNjLCAgMTcsIGJicDE3KTsNCisgICAgcnVtX2JicF93cml0ZShzYywgIDk2LCBiYnA5Nik7
 DQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDEwNCwgYmJwMTA0KTsNCisNCisgICAgaWYgKChJ
 RUVFODAyMTFfSVNfQ0hBTl8yR0haKGMpICYmIHNjLT5leHRfMmdoel9sbmEpIHx8DQorICAg
 ICAgICAoSUVFRTgwMjExX0lTX0NIQU5fNUdIWihjKSAmJiBzYy0+ZXh0XzVnaHpfbG5hKSkg
 ew0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywgNzUsIDB4ODApOw0KKyAgICAgICAgcnVt
 X2JicF93cml0ZShzYywgODYsIDB4ODApOw0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywg
 ODgsIDB4ODApOw0KKyAgICB9DQorDQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDM1LCBiYnAz
 NSk7DQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDk3LCBiYnA5Nyk7DQorICAgIHJ1bV9iYnBf
 d3JpdGUoc2MsIDk4LCBiYnA5OCk7DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1
 NzNfUEhZX0NTUjApOw0KKyAgICB0bXAgJj0gfihSVDI1NzNfUEFfUEVfMkdIWiB8IFJUMjU3
 M19QQV9QRV81R0haKTsNCisgICAgaWYgKElFRUU4MDIxMV9JU19DSEFOXzJHSFooYykpDQor
 ICAgICAgICB0bXAgfD0gUlQyNTczX1BBX1BFXzJHSFo7DQorICAgIGVsc2UNCisgICAgICAg
 IHRtcCB8PSBSVDI1NzNfUEFfUEVfNUdIWjsNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNf
 UEhZX0NTUjAsIHRtcCk7DQorDQorICAgIC8qIDgwMi4xMWEgdXNlcyBhIDE2IG1pY3Jvc2Vj
 b25kcyBzaG9ydCBpbnRlcmZyYW1lIHNwYWNlICovDQorICAgIHNjLT5zaWZzID0gSUVFRTgw
 MjExX0lTX0NIQU5fNUdIWihjKSA/IDE2IDogMTA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQor
 cnVtX3NldF9jaGFuKHN0cnVjdCBydW1fc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2No
 YW5uZWwgKmMpDQorew0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf
 aWM7DQorICAgIGNvbnN0IHN0cnVjdCByZnByb2cgKnJmcHJvZzsNCisgICAgdWludDhfdCBi
 YnAzLCBiYnA5NCA9IFJUMjU3M19CQlBSOTRfREVGQVVMVDsNCisgICAgaW50OF90IHBvd2Vy
 Ow0KKyAgICB1X2ludCBpLCBjaGFuOw0KKw0KKyAgICBjaGFuID0gaWVlZTgwMjExX2NoYW4y
 aWVlZShpYywgYyk7DQorICAgIGlmIChjaGFuID09IDAgfHwgY2hhbiA9PSBJRUVFODAyMTFf
 Q0hBTl9BTlkpDQorICAgICAgICByZXR1cm47DQorDQorICAgIC8qIHNlbGVjdCB0aGUgYXBw
 cm9wcmlhdGUgUkYgc2V0dGluZ3MgYmFzZWQgb24gd2hhdCBFRVBST00gc2F5cyAqLw0KKyAg
 ICByZnByb2cgPSAoc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIyNSB8fA0KKyAgICAgICAg
 ICBzYy0+cmZfcmV2ID09IFJUMjU3M19SRl8yNTI3KSA/IHJ1bV9yZjUyMjUgOiBydW1fcmY1
 MjI2Ow0KKw0KKyAgICAvKiBmaW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhpcyBjaGFubmVsICh3
 ZSBrbm93IGl0IGV4aXN0cykgKi8NCisgICAgZm9yIChpID0gMDsgcmZwcm9nW2ldLmNoYW4g
 IT0gY2hhbjsgaSsrKTsNCisNCisgICAgcG93ZXIgPSBzYy0+dHhwb3dbaV07DQorICAgIGlm
 IChwb3dlciA8IDApIHsNCisgICAgICAgIGJicDk0ICs9IHBvd2VyOw0KKyAgICAgICAgcG93
 ZXIgPSAwOw0KKyAgICB9IGVsc2UgaWYgKHBvd2VyID4gMzEpIHsNCisgICAgICAgIGJicDk0
 ICs9IHBvd2VyIC0gMzE7DQorICAgICAgICBwb3dlciA9IDMxOw0KKyAgICB9DQorDQorICAg
 IC8qDQorICAgICAqIElmIHdlIGFyZSBzd2l0Y2hpbmcgZnJvbSB0aGUgMkdIeiBiYW5kIHRv
 IHRoZSA1R0h6IGJhbmQgb3INCisgICAgICogdmljZS12ZXJzYSwgQkJQIHJlZ2lzdGVycyBu
 ZWVkIHRvIGJlIHJlcHJvZ3JhbW1lZC4NCisgICAgICovDQorICAgIGlmIChjLT5pY19mbGFn
 cyAhPSBpYy0+aWNfY3VyY2hhbi0+aWNfZmxhZ3MpIHsNCisgICAgICAgIHJ1bV9zZWxlY3Rf
 YmFuZChzYywgYyk7DQorICAgICAgICBydW1fc2VsZWN0X2FudGVubmEoc2MpOw0KKyAgICB9
 DQorICAgIGljLT5pY19jdXJjaGFuID0gYzsNCisNCisgICAgcnVtX3JmX3dyaXRlKHNjLCBS
 VDI1NzNfUkYxLCByZnByb2dbaV0ucjEpOw0KKyAgICBydW1fcmZfd3JpdGUoc2MsIFJUMjU3
 M19SRjIsIHJmcHJvZ1tpXS5yMik7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JG
 MywgcmZwcm9nW2ldLnIzIHwgcG93ZXIgPDwgNyk7DQorICAgIHJ1bV9yZl93cml0ZShzYywg
 UlQyNTczX1JGNCwgcmZwcm9nW2ldLnI0IHwgc2MtPnJmZnJlcSA8PCAxMCk7DQorDQorICAg
 IHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGMSwgcmZwcm9nW2ldLnIxKTsNCisgICAgcnVt
 X3JmX3dyaXRlKHNjLCBSVDI1NzNfUkYyLCByZnByb2dbaV0ucjIpOw0KKyAgICBydW1fcmZf
 d3JpdGUoc2MsIFJUMjU3M19SRjMsIHJmcHJvZ1tpXS5yMyB8IHBvd2VyIDw8IDcgfCAxKTsN
 CisgICAgcnVtX3JmX3dyaXRlKHNjLCBSVDI1NzNfUkY0LCByZnByb2dbaV0ucjQgfCBzYy0+
 cmZmcmVxIDw8IDEwKTsNCisNCisgICAgcnVtX3JmX3dyaXRlKHNjLCBSVDI1NzNfUkYxLCBy
 ZnByb2dbaV0ucjEpOw0KKyAgICBydW1fcmZfd3JpdGUoc2MsIFJUMjU3M19SRjIsIHJmcHJv
 Z1tpXS5yMik7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGMywgcmZwcm9nW2ld
 LnIzIHwgcG93ZXIgPDwgNyk7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGNCwg
 cmZwcm9nW2ldLnI0IHwgc2MtPnJmZnJlcSA8PCAxMCk7DQorDQorICAgIERFTEFZKDEwKTsN
 CisNCisgICAgLyogZW5hYmxlIHNtYXJ0IG1vZGUgZm9yIE1JTU8tY2FwYWJsZSBSRnMgKi8N
 CisgICAgYmJwMyA9IHJ1bV9iYnBfcmVhZChzYywgMyk7DQorDQorICAgIGJicDMgJj0gflJU
 MjU3M19TTUFSVF9NT0RFOw0KKyAgICBpZiAoc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIy
 NSB8fCBzYy0+cmZfcmV2ID09IFJUMjU3M19SRl8yNTI3KQ0KKyAgICAgICAgYmJwMyB8PSBS
 VDI1NzNfU01BUlRfTU9ERTsNCisNCisgICAgcnVtX2JicF93cml0ZShzYywgMywgYmJwMyk7
 DQorDQorICAgIGlmIChiYnA5NCAhPSBSVDI1NzNfQkJQUjk0X0RFRkFVTFQpDQorICAgICAg
 ICBydW1fYmJwX3dyaXRlKHNjLCA5NCwgYmJwOTQpOw0KK30NCisNCisvKg0KKyAqIEVuYWJs
 ZSBUU0Ygc3luY2hyb25pemF0aW9uIGFuZCB0ZWxsIGgvdyB0byBzdGFydCBzZW5kaW5nIGJl
 YWNvbnMgZm9yIElCU1MNCisgKiBhbmQgSG9zdEFQIG9wZXJhdGluZyBtb2Rlcy4NCisgKi8N
 CitzdGF0aWMgdm9pZA0KK3J1bV9lbmFibGVfdHNmX3N5bmMoc3RydWN0IHJ1bV9zb2Z0YyAq
 c2MpDQorew0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQor
 ICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgaWYgKGljLT5pY19vcG1vZGUgIT0gSUVFRTgw
 MjExX01fU1RBKSB7DQorICAgICAgICAvKg0KKyAgICAgICAgICogQ2hhbmdlIGRlZmF1bHQg
 MTZtcyBUQlRUIGFkanVzdG1lbnQgdG8gOG1zLg0KKyAgICAgICAgICogTXVzdCBiZSBkb25l
 IGJlZm9yZSBlbmFibGluZyBiZWFjb24gZ2VuZXJhdGlvbi4NCisgICAgICAgICAqLw0KKyAg
 ICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IxMCwgMSA8PCAxMiB8IDgpOw0K
 KyAgICB9DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1I5KSAm
 IDB4ZmYwMDAwMDA7DQorDQorICAgIC8qIHNldCBiZWFjb24gaW50ZXJ2YWwgKGluIDEvMTZt
 cyB1bml0KSAqLw0KKyAgICB0bXAgfD0gaWMtPmljX2Jzcy0+bmlfaW50dmFsICogMTY7DQor
 DQorICAgIHRtcCB8PSBSVDI1NzNfVFNGX1RJQ0tJTkcgfCBSVDI1NzNfRU5BQkxFX1RCVFQ7
 DQorICAgIGlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX1NUQSkNCisgICAgICAg
 IHRtcCB8PSBSVDI1NzNfVFNGX01PREUoMSk7DQorICAgIGVsc2UNCisgICAgICAgIHRtcCB8
 PSBSVDI1NzNfVFNGX01PREUoMikgfCBSVDI1NzNfR0VORVJBVEVfQkVBQ09OOw0KKw0KKyAg
 ICBydW1fd3JpdGUoc2MsIFJUMjU3M19UWFJYX0NTUjksIHRtcCk7DQorfQ0KKw0KK3N0YXRp
 YyB2b2lkDQorcnVtX3VwZGF0ZV9zbG90KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisg
 ICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50OF90
 IHNsb3R0aW1lOw0KKyAgICB1aW50MzJfdCB0bXA7DQorDQorICAgIHNsb3R0aW1lID0gKGlj
 LT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NIU0xPVCkgPyA5IDogMjA7DQorDQorICAgIHRt
 cCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfTUFDX0NTUjkpOw0KKyAgICB0bXAgPSAodG1wICYg
 fjB4ZmYpIHwgc2xvdHRpbWU7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX01BQ19DU1I5
 LCB0bXApOw0KKw0KKyAgICBEUFJJTlRGKCgic2V0dGluZyBzbG90IHRpbWUgdG8gJXV1c1xu
 Iiwgc2xvdHRpbWUpKTsNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fc2V0X2Jzc2lkKHN0
 cnVjdCBydW1fc29mdGMgKnNjLCBjb25zdCB1aW50OF90ICpic3NpZCkNCit7DQorICAgIHVp
 bnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gYnNzaWRbMF0gfCBic3NpZFsxXSA8PCA4IHwg
 YnNzaWRbMl0gPDwgMTYgfCBic3NpZFszXSA8PCAyNDsNCisgICAgcnVtX3dyaXRlKHNjLCBS
 VDI1NzNfTUFDX0NTUjQsIHRtcCk7DQorDQorICAgIHRtcCA9IGJzc2lkWzRdIHwgYnNzaWRb
 NV0gPDwgOCB8IFJUMjU3M19PTkVfQlNTSUQgPDwgMTY7DQorICAgIHJ1bV93cml0ZShzYywg
 UlQyNTczX01BQ19DU1I1LCB0bXApOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXRf
 bWFjYWRkcihzdHJ1Y3QgcnVtX3NvZnRjICpzYywgY29uc3QgdWludDhfdCAqYWRkcikNCit7
 DQorICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gYWRkclswXSB8IGFkZHJbMV0g
 PDwgOCB8IGFkZHJbMl0gPDwgMTYgfCBhZGRyWzNdIDw8IDI0Ow0KKyAgICBydW1fd3JpdGUo
 c2MsIFJUMjU3M19NQUNfQ1NSMiwgdG1wKTsNCisNCisgICAgdG1wID0gYWRkcls0XSB8IGFk
 ZHJbNV0gPDwgOCB8IDB4ZmYgPDwgMTY7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX01B
 Q19DU1IzLCB0bXApOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV91cGRhdGVfcHJvbWlz
 YyhzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIHN0cnVjdCBpZm5ldCAqaWZwID0g
 c2MtPnNjX2ljLmljX2lmcDsNCisgICAgdWludDMyX3QgdG1wOw0KKw0KKyAgICB0bXAgPSBy
 dW1fcmVhZChzYywgUlQyNTczX1RYUlhfQ1NSMCk7DQorDQorICAgIHRtcCAmPSB+UlQyNTcz
 X0RST1BfTk9UX1RPX01FOw0KKyAgICBpZiAoIShpZnAtPmlmX2ZsYWdzICYgSUZGX1BST01J
 U0MpKQ0KKyAgICAgICAgdG1wIHw9IFJUMjU3M19EUk9QX05PVF9UT19NRTsNCisNCisgICAg
 cnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXApOw0KKw0KKyAgICBEUFJJTlRG
 KCgiJXMgcHJvbWlzY3VvdXMgbW9kZVxuIiwgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlT
 QykgPw0KKyAgICAgICAgImVudGVyaW5nIiA6ICJsZWF2aW5nIikpOw0KK30NCisNCitzdGF0
 aWMgY29uc3QgY2hhciAqDQorcnVtX2dldF9yZihpbnQgcmV2KQ0KK3sNCisgICAgc3dpdGNo
 IChyZXYpIHsNCisgICAgY2FzZSBSVDI1NzNfUkZfMjUyNzogICAgcmV0dXJuICJSVDI1Mjcg
 KE1JTU8gWFIpIjsNCisgICAgY2FzZSBSVDI1NzNfUkZfMjUyODogICAgcmV0dXJuICJSVDI1
 MjgiOw0KKyAgICBjYXNlIFJUMjU3M19SRl81MjI1OiAgICByZXR1cm4gIlJUNTIyNSAoTUlN
 TyBYUikiOw0KKyAgICBjYXNlIFJUMjU3M19SRl81MjI2OiAgICByZXR1cm4gIlJUNTIyNiI7
 DQorICAgIGRlZmF1bHQ6ICAgICAgICByZXR1cm4gInVua25vd24iOw0KKyAgICB9DQorfQ0K
 Kw0KK3N0YXRpYyB2b2lkDQorcnVtX3JlYWRfZWVwcm9tKHN0cnVjdCBydW1fc29mdGMgKnNj
 KQ0KK3sNCisgICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAg
 ICB1aW50MTZfdCB2YWw7DQorI2lmZGVmIFJVTV9ERUJVRw0KKyAgICBpbnQgaTsNCisjZW5k
 aWYNCisNCisgICAgLyogcmVhZCBNQUMvQkJQIHR5cGUgKi8NCisgICAgcnVtX2VlcHJvbV9y
 ZWFkKHNjLCBSVDI1NzNfRUVQUk9NX01BQ0JCUCwgJnZhbCwgMik7DQorICAgIHNjLT5tYWNi
 YnBfcmV2ID0gbGUxNnRvaCh2YWwpOw0KKw0KKyAgICAvKiByZWFkIE1BQyBhZGRyZXNzICov
 DQorICAgIHJ1bV9lZXByb21fcmVhZChzYywgUlQyNTczX0VFUFJPTV9BRERSRVNTLCBpYy0+
 aWNfbXlhZGRyLCA2KTsNCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBSVDI1NzNfRUVQ
 Uk9NX0FOVEVOTkEsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZhbCk7DQorICAg
 IHNjLT5yZl9yZXYgPSAgICh2YWwgPj4gMTEpICYgMHgxZjsNCisgICAgc2MtPmh3X3JhZGlv
 ID0gKHZhbCA+PiAxMCkgJiAweDE7DQorICAgIHNjLT5yeF9hbnQgPSAgICh2YWwgPj4gNCkg
 ICYgMHgzOw0KKyAgICBzYy0+dHhfYW50ID0gICAodmFsID4+IDIpICAmIDB4MzsNCisgICAg
 c2MtPm5iX2FudCA9ICAgdmFsICYgMHgzOw0KKw0KKyAgICBEUFJJTlRGKCgiUkYgcmV2aXNp
 b249JWRcbiIsIHNjLT5yZl9yZXYpKTsNCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBS
 VDI1NzNfRUVQUk9NX0NPTkZJRzIsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZh
 bCk7DQorICAgIHNjLT5leHRfNWdoel9sbmEgPSAodmFsID4+IDYpICYgMHgxOw0KKyAgICBz
 Yy0+ZXh0XzJnaHpfbG5hID0gKHZhbCA+PiA0KSAmIDB4MTsNCisNCisgICAgRFBSSU5URigo
 IkV4dGVybmFsIDJHSHogTE5BPSVkXG5FeHRlcm5hbCA1R0h6IExOQT0lZFxuIiwNCisgICAg
 ICAgIHNjLT5leHRfMmdoel9sbmEsIHNjLT5leHRfNWdoel9sbmEpKTsNCisNCisgICAgcnVt
 X2VlcHJvbV9yZWFkKHNjLCBSVDI1NzNfRUVQUk9NX1JTU0lfMkdIWl9PRkZTRVQsICZ2YWws
 IDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZhbCk7DQorICAgIGlmICgodmFsICYgMHhmZikg
 IT0gMHhmZikNCisgICAgICAgIHNjLT5yc3NpXzJnaHpfY29yciA9IChpbnQ4X3QpKHZhbCAm
 IDB4ZmYpOyAgICAvKiBzaWduZWQgKi8NCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBS
 VDI1NzNfRUVQUk9NX1JTU0lfNUdIWl9PRkZTRVQsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBs
 ZTE2dG9oKHZhbCk7DQorICAgIGlmICgodmFsICYgMHhmZikgIT0gMHhmZikNCisgICAgICAg
 IHNjLT5yc3NpXzVnaHpfY29yciA9IChpbnQ4X3QpKHZhbCAmIDB4ZmYpOyAgICAvKiBzaWdu
 ZWQgKi8NCisNCisgICAgRFBSSU5URigoIlJTU0kgMkdIeiBjb3JyPSVkXG5SU1NJIDVHSHog
 Y29ycj0lZFxuIiwNCisgICAgICAgIHNjLT5yc3NpXzJnaHpfY29yciwgc2MtPnJzc2lfNWdo
 el9jb3JyKSk7DQorDQorICAgIHJ1bV9lZXByb21fcmVhZChzYywgUlQyNTczX0VFUFJPTV9G
 UkVRX09GRlNFVCwgJnZhbCwgMik7DQorICAgIHZhbCA9IGxlMTZ0b2godmFsKTsNCisgICAg
 aWYgKCh2YWwgJiAweGZmKSAhPSAweGZmKQ0KKyAgICAgICAgc2MtPnJmZnJlcSA9IHZhbCAm
 IDB4ZmY7DQorDQorICAgIERQUklOVEYoKCJSRiBmcmVxPSVkXG4iLCBzYy0+cmZmcmVxKSk7
 DQorDQorICAgIC8qIHJlYWQgVHggcG93ZXIgZm9yIGFsbCBhL2IvZyBjaGFubmVscyAqLw0K
 KyAgICBydW1fZWVwcm9tX3JlYWQoc2MsIFJUMjU3M19FRVBST01fVFhQT1dFUiwgc2MtPnR4
 cG93LCAxNCk7DQorICAgIC8qIFhYWCBkZWZhdWx0IFR4IHBvd2VyIGZvciA4MDIuMTFhIGNo
 YW5uZWxzICovDQorICAgIG1lbXNldChzYy0+dHhwb3cgKyAxNCwgMjQsIHNpemVvZiAoc2Mt
 PnR4cG93KSAtIDE0KTsNCisjaWZkZWYgUlVNX0RFQlVHDQorICAgIGZvciAoaSA9IDA7IGkg
 PCAxNDsgaSsrKQ0KKyAgICAgICAgRFBSSU5URigoIkNoYW5uZWw9JWQgVHggcG93ZXI9JWRc
 biIsIGkgKyAxLCAgc2MtPnR4cG93W2ldKSk7DQorI2VuZGlmDQorDQorICAgIC8qIHJlYWQg
 ZGVmYXVsdCB2YWx1ZXMgZm9yIEJCUCByZWdpc3RlcnMgKi8NCisgICAgcnVtX2VlcHJvbV9y
 ZWFkKHNjLCBSVDI1NzNfRUVQUk9NX0JCUF9CQVNFLCBzYy0+YmJwX3Byb20sIDIgKiAxNik7
 DQorI2lmZGVmIFJVTV9ERUJVRw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykgew0K
 KyAgICAgICAgaWYgKHNjLT5iYnBfcHJvbVtpXS5yZWcgPT0gMCB8fCBzYy0+YmJwX3Byb21b
 aV0ucmVnID09IDB4ZmYpDQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICBEUFJJ
 TlRGKCgiQkJQIFIlZD0lMDJ4XG4iLCBzYy0+YmJwX3Byb21baV0ucmVnLA0KKyAgICAgICAg
 ICAgIHNjLT5iYnBfcHJvbVtpXS52YWwpKTsNCisgICAgfQ0KKyNlbmRpZg0KK30NCisNCitz
 dGF0aWMgaW50DQorcnVtX2JicF9pbml0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisj
 ZGVmaW5lIE4oYSkgICAgKHNpemVvZiAoYSkgLyBzaXplb2YgKChhKVswXSkpDQorICAgIGlu
 dCBpLCBudHJpZXM7DQorICAgIHVpbnQ4X3QgdmFsOw0KKw0KKyAgICAvKiB3YWl0IGZvciBC
 QlAgdG8gYmUgcmVhZHkgKi8NCisgICAgZm9yIChudHJpZXMgPSAwOyBudHJpZXMgPCAxMDA7
 IG50cmllcysrKSB7DQorICAgICAgICB2YWwgPSBydW1fYmJwX3JlYWQoc2MsIDApOw0KKyAg
 ICAgICAgaWYgKHZhbCAhPSAwICYmIHZhbCAhPSAweGZmKQ0KKyAgICAgICAgICAgIGJyZWFr
 Ow0KKyAgICAgICAgREVMQVkoMTAwMCk7DQorICAgIH0NCisgICAgaWYgKG50cmllcyA9PSAx
 MDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IHRpbWVvdXQgd2FpdGluZyBmb3IgQkJQXG4i
 LA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAg
 ICAgICAgcmV0dXJuIEVJTzsNCisgICAgfQ0KKw0KKyAgICAvKiBpbml0aWFsaXplIEJCUCBy
 ZWdpc3RlcnMgdG8gZGVmYXVsdCB2YWx1ZXMgKi8NCisgICAgZm9yIChpID0gMDsgaSA8IE4o
 cnVtX2RlZl9iYnApOyBpKyspDQorICAgICAgICBydW1fYmJwX3dyaXRlKHNjLCBydW1fZGVm
 X2JicFtpXS5yZWcsIHJ1bV9kZWZfYmJwW2ldLnZhbCk7DQorDQorICAgIC8qIHdyaXRlIHZl
 bmRvci1zcGVjaWZpYyBCQlAgdmFsdWVzIChmcm9tIEVFUFJPTSkgKi8NCisgICAgZm9yIChp
 ID0gMDsgaSA8IDE2OyBpKyspIHsNCisgICAgICAgIGlmIChzYy0+YmJwX3Byb21baV0ucmVn
 ID09IDAgfHwgc2MtPmJicF9wcm9tW2ldLnJlZyA9PSAweGZmKQ0KKyAgICAgICAgICAgIGNv
 bnRpbnVlOw0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywgc2MtPmJicF9wcm9tW2ldLnJl
 Zywgc2MtPmJicF9wcm9tW2ldLnZhbCk7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQor
 I3VuZGVmIE4NCit9DQorDQorc3RhdGljIHZvaWQNCitydW1faW5pdCh2b2lkICpwcml2KQ0K
 K3sNCisjZGVmaW5lIE4oYSkgICAgKHNpemVvZiAoYSkgLyBzaXplb2YgKChhKVswXSkpDQor
 ICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gcHJpdjsNCisgICAgc3RydWN0IGllZWU4MDIx
 MWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IGljLT5p
 Y19pZnA7DQorICAgIHN0cnVjdCBydW1fcnhfZGF0YSAqZGF0YTsNCisgICAgdWludDMyX3Qg
 dG1wOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvciA9IDA7DQorICAgIGludCBpLCBudHJpZXM7
 DQorDQorLy8gICAgaWYgKChzYy0+c2NfZmxhZ3MgJiBSVDI1NzNfRldMT0FERUQpID09IDAp
 IHsNCisvLyAgICAgICAgcnVtX2F0dGFjaGhvb2soc2MpOw0KKy8vICAgIH0NCisNCisgICAg
 cnVtX3N0b3AoaWZwKTsNCisNCisgICAgLyogaW5pdGlhbGl6ZSBNQUMgcmVnaXN0ZXJzIHRv
 IGRlZmF1bHQgdmFsdWVzICovDQorICAgIGZvciAoaSA9IDA7IGkgPCBOKHJ1bV9kZWZfbWFj
 KTsgaSsrKQ0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBydW1fZGVmX21hY1tpXS5yZWcsIHJ1
 bV9kZWZfbWFjW2ldLnZhbCk7DQorDQorICAgIC8qIHNldCBob3N0IHJlYWR5ICovDQorICAg
 IHJ1bV93cml0ZShzYywgUlQyNTczX01BQ19DU1IxLCAzKTsNCisgICAgcnVtX3dyaXRlKHNj
 LCBSVDI1NzNfTUFDX0NTUjEsIDApOw0KKw0KKyAgICAvKiB3YWl0IGZvciBCQlAvUkYgdG8g
 d2FrZXVwICovDQorICAgIGZvciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwMDsgbnRyaWVz
 KyspIHsNCisgICAgICAgIGlmIChydW1fcmVhZChzYywgUlQyNTczX01BQ19DU1IxMikgJiA4
 KQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNf
 TUFDX0NTUjEyLCA0KTsgICAgLyogZm9yY2Ugd2FrZXVwICovDQorICAgICAgICBERUxBWSgx
 MDAwKTsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDEwMDApIHsNCisgICAgICAgIHBy
 aW50ZigiJXM6IHRpbWVvdXQgd2FpdGluZyBmb3IgQkJQL1JGIHRvIHdha2V1cFxuIiwNCisg
 ICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAg
 IGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAgICBpZiAoKGVycm9yID0gcnVtX2JicF9pbml0
 KHNjKSkgIT0gMCkNCisgICAgICAgIGdvdG8gZmFpbDsNCisNCisgICAgLyogc2VsZWN0IGRl
 ZmF1bHQgY2hhbm5lbCAqLw0KKyAgICBydW1fc2VsZWN0X2JhbmQoc2MsIGljLT5pY19jdXJj
 aGFuKTsNCisgICAgcnVtX3NlbGVjdF9hbnRlbm5hKHNjKTsNCisgICAgcnVtX3NldF9jaGFu
 KHNjLCBpYy0+aWNfY3VyY2hhbik7DQorDQorICAgIC8qIGNsZWFyIFNUQSByZWdpc3RlcnMg
 Ki8NCisgICAgcnVtX3JlYWRfbXVsdGkoc2MsIFJUMjU3M19TVEFfQ1NSMCwgc2MtPnN0YSwg
 c2l6ZW9mIHNjLT5zdGEpOw0KKw0KKyAgICBJRUVFODAyMTFfQUREUl9DT1BZKGljLT5pY19t
 eWFkZHIsIElGX0xMQUREUihpZnApKTsNCisgICAgcnVtX3NldF9tYWNhZGRyKHNjLCBpYy0+
 aWNfbXlhZGRyKTsNCisNCisgICAgLyogaW5pdGlhbGl6ZSBBU0lDICovDQorICAgIHJ1bV93
 cml0ZShzYywgUlQyNTczX01BQ19DU1IxLCA0KTsNCisNCisgICAgLyoNCisgICAgICogQWxs
 b2NhdGUgeGZlciBmb3IgQU1SUiBzdGF0aXN0aWNzIHJlcXVlc3RzLg0KKyAgICAgKi8NCisg
 ICAgc2MtPmFtcnJfeGZlciA9IHVzYmRfYWxsb2NfeGZlcihzYy0+c2NfdWRldik7DQorICAg
 IGlmIChzYy0+YW1ycl94ZmVyID09IE5VTEwpIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNv
 dWxkIG5vdCBhbGxvY2F0ZSBBTVJSIHhmZXJcbiIsDQorICAgICAgICAgICAgZGV2aWNlX2dl
 dF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBnb3RvIGZhaWw7DQorICAgIH0N
 CisNCisgICAgLyoNCisgICAgICogT3BlbiBUeCBhbmQgUnggVVNCIGJ1bGsgcGlwZXMuDQor
 ICAgICAqLw0KKyAgICBlcnJvciA9IHVzYmRfb3Blbl9waXBlKHNjLT5zY19pZmFjZSwgc2Mt
 PnNjX3R4X25vLCBVU0JEX0VYQ0xVU0lWRV9VU0UsDQorICAgICAgICAmc2MtPnNjX3R4X3Bp
 cGVoKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNv
 dWxkIG5vdCBvcGVuIFR4IHBpcGU6ICVzXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRf
 bmFtZXVuaXQoc2MtPnNjX2RldiksIHVzYmRfZXJyc3RyKGVycm9yKSk7DQorICAgICAgICBn
 b3RvIGZhaWw7DQorICAgIH0NCisNCisgICAgZXJyb3IgPSB1c2JkX29wZW5fcGlwZShzYy0+
 c2NfaWZhY2UsIHNjLT5zY19yeF9ubywgVVNCRF9FWENMVVNJVkVfVVNFLA0KKyAgICAgICAg
 JnNjLT5zY19yeF9waXBlaCk7DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBw
 cmludGYoIiVzOiBjb3VsZCBub3Qgb3BlbiBSeCBwaXBlOiAlc1xuIiwNCisgICAgICAgICAg
 ICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpLCB1c2JkX2VycnN0cihlcnJvcikp
 Ow0KKyAgICAgICAgZ290byBmYWlsOw0KKyAgICB9DQorDQorICAgIC8qDQorICAgICAqIEFs
 bG9jYXRlIFR4IGFuZCBSeCB4ZmVyIHF1ZXVlcy4NCisgICAgICovDQorICAgIGVycm9yID0g
 cnVtX2FsbG9jX3R4X2xpc3Qoc2MpOw0KKyAgICBpZiAoZXJyb3IgIT0gMCkgew0KKyAgICAg
 ICAgcHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIFR4IGxpc3RcbiIsDQorICAgICAg
 ICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBnb3Rv
 IGZhaWw7DQorICAgIH0NCisNCisgICAgZXJyb3IgPSBydW1fYWxsb2NfcnhfbGlzdChzYyk7
 DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBu
 b3QgYWxsb2NhdGUgUnggbGlzdFxuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1
 bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAg
 ICAvKg0KKyAgICAgKiBTdGFydCB1cCB0aGUgcmVjZWl2ZSBwaXBlLg0KKyAgICAgKi8NCisg
 ICAgZm9yIChpID0gMDsgaSA8IFJUMjU3M19SWF9MSVNUX0NPVU5UOyBpKyspIHsNCisgICAg
 ICAgIGRhdGEgPSAmc2MtPnJ4X2RhdGFbaV07DQorDQorICAgICAgICB1c2JkX3NldHVwX3hm
 ZXIoZGF0YS0+eGZlciwgc2MtPnNjX3J4X3BpcGVoLCBkYXRhLCBkYXRhLT5idWYsDQorICAg
 ICAgICAgICAgTUNMQllURVMsIFVTQkRfU0hPUlRfWEZFUl9PSywgVVNCRF9OT19USU1FT1VU
 LCBydW1fcnhlb2YpOw0KKyAgICAgICAgdXNiZF90cmFuc2ZlcihkYXRhLT54ZmVyKTsNCisg
 ICAgfQ0KKw0KKyAgICAvKiB1cGRhdGUgUnggZmlsdGVyICovDQorICAgIHRtcCA9IHJ1bV9y
 ZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1IwKSAmIDB4ZmZmZjsNCisNCisgICAgdG1wIHw9IFJU
 MjU3M19EUk9QX1BIWV9FUlJPUiB8IFJUMjU3M19EUk9QX0NSQ19FUlJPUjsNCisgICAgaWYg
 KGljLT5pY19vcG1vZGUgIT0gSUVFRTgwMjExX01fTU9OSVRPUikgew0KKyAgICAgICAgdG1w
 IHw9IFJUMjU3M19EUk9QX0NUTCB8IFJUMjU3M19EUk9QX1ZFUl9FUlJPUiB8DQorICAgICAg
 ICAgICAgICAgUlQyNTczX0RST1BfQUNLQ1RTOw0KKyAgICAgICAgaWYgKGljLT5pY19vcG1v
 ZGUgIT0gSUVFRTgwMjExX01fSE9TVEFQKQ0KKyAgICAgICAgICAgIHRtcCB8PSBSVDI1NzNf
 RFJPUF9UT0RTOw0KKyAgICAgICAgaWYgKCEoaWZwLT5pZl9mbGFncyAmIElGRl9QUk9NSVND
 KSkNCisgICAgICAgICAgICB0bXAgfD0gUlQyNTczX0RST1BfTk9UX1RPX01FOw0KKyAgICB9
 DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX1RYUlhfQ1NSMCwgdG1wKTsNCisNCisgICAg
 aWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9EUlZfT0FDVElWRTsNCisgICAgaWZwLT5pZl9k
 cnZfZmxhZ3MgfD0gSUZGX0RSVl9SVU5OSU5HOw0KKw0KKyAgICBpZiAoaWMtPmljX29wbW9k
 ZSA9PSBJRUVFODAyMTFfTV9NT05JVE9SKQ0KKyAgICAgICAgaWVlZTgwMjExX25ld19zdGF0
 ZShpYywgSUVFRTgwMjExX1NfUlVOLCAtMSk7DQorICAgIGVsc2UNCisgICAgICAgIGllZWU4
 MDIxMV9uZXdfc3RhdGUoaWMsIElFRUU4MDIxMV9TX1NDQU4sIC0xKTsNCisNCisgICAgcmV0
 dXJuOw0KKw0KK2ZhaWw6ICAgIHJ1bV9zdG9wKGlmcCk7DQorICAgIHJldHVybjsNCisjdW5k
 ZWYgTg0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9zdG9wKHN0cnVjdCBpZm5ldCAqaWZw
 KQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KKyAg
 ICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHVpbnQzMl90
 IHRtcDsNCisNCisgICAgaWVlZTgwMjExX25ld19zdGF0ZShpYywgSUVFRTgwMjExX1NfSU5J
 VCwgLTEpOyAgICAvKiBmcmVlIGFsbCBub2RlcyAqLw0KKw0KKyAgICBzYy0+c2NfdHhfdGlt
 ZXIgPSAwOw0KKyAgICBpZnAtPmlmX3RpbWVyID0gMDsNCisgICAgaWZwLT5pZl9kcnZfZmxh
 Z3MgJj0gfihJRkZfRFJWX1JVTk5JTkcgfCBJRkZfRFJWX09BQ1RJVkUpOw0KKw0KKyAgICAv
 KiBkaXNhYmxlIFJ4ICovDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9D
 U1IwKTsNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXAgfCBSVDI1
 NzNfRElTQUJMRV9SWCk7DQorDQorICAgIC8qIHJlc2V0IEFTSUMgKi8NCisgICAgcnVtX3dy
 aXRlKHNjLCBSVDI1NzNfTUFDX0NTUjEsIDMpOw0KKyAgICBydW1fd3JpdGUoc2MsIFJUMjU3
 M19NQUNfQ1NSMSwgMCk7DQorDQorICAgIGlmIChzYy0+c2NfcnhfcGlwZWggIT0gTlVMTCkg
 ew0KKyAgICAgICAgdXNiZF9hYm9ydF9waXBlKHNjLT5zY19yeF9waXBlaCk7DQorICAgICAg
 ICB1c2JkX2Nsb3NlX3BpcGUoc2MtPnNjX3J4X3BpcGVoKTsNCisgICAgICAgIHNjLT5zY19y
 eF9waXBlaCA9IE5VTEw7DQorICAgIH0NCisNCisgICAgaWYgKHNjLT5zY190eF9waXBlaCAh
 PSBOVUxMKSB7DQorICAgICAgICB1c2JkX2Fib3J0X3BpcGUoc2MtPnNjX3R4X3BpcGVoKTsN
 CisgICAgICAgIHVzYmRfY2xvc2VfcGlwZShzYy0+c2NfdHhfcGlwZWgpOw0KKyAgICAgICAg
 c2MtPnNjX3R4X3BpcGVoID0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBydW1fZnJlZV9yeF9s
 aXN0KHNjKTsNCisgICAgcnVtX2ZyZWVfdHhfbGlzdChzYyk7DQorfQ0KKw0KK3N0YXRpYyBp
 bnQNCitydW1fcHJlcGFyZV9iZWFjb24oc3RydWN0IHJ1bV9zb2Z0YyAqc2MpDQorew0KKyAg
 ICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHN0cnVjdCBy
 dW1fdHhfZGVzYyBkZXNjOw0KKyAgICBzdHJ1Y3QgbWJ1ZiAqbTA7DQorICAgIGludCByYXRl
 Ow0KKw0KKyAgICBtMCA9IGllZWU4MDIxMV9iZWFjb25fYWxsb2MoaWMsIGljLT5pY19ic3Ms
 ICZzYy0+c2NfYm8pOw0KKyAgICBpZiAobTAgPT0gTlVMTCkgew0KKyAgICAgICAgcHJpbnRm
 KCIlczogY291bGQgbm90IGFsbG9jYXRlIGJlYWNvbiBmcmFtZVxuIiwNCisgICAgICAgICAg
 ICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIHJldHVybiBF
 Tk9CVUZTOw0KKyAgICB9DQorDQorICAgIC8qIHNlbmQgYmVhY29ucyBhdCB0aGUgbG93ZXN0
 IGF2YWlsYWJsZSByYXRlICovDQorICAgIHJhdGUgPSBJRUVFODAyMTFfSVNfQ0hBTl81R0ha
 KGljLT5pY19jdXJjaGFuKSA/IDEyIDogMjsNCisNCisgICAgcnVtX3NldHVwX3R4X2Rlc2Mo
 c2MsICZkZXNjLCBSVDI1NzNfVFhfVElNRVNUQU1QLCBSVDI1NzNfVFhfSFdTRVEsDQorICAg
 ICAgICBtMC0+bV9wa3RoZHIubGVuLCByYXRlKTsNCisNCisgICAgLyogY29weSB0aGUgZmly
 c3QgMjQgYnl0ZXMgb2YgVHggZGVzY3JpcHRvciBpbnRvIE5JQyBtZW1vcnkgKi8NCisgICAg
 cnVtX3dyaXRlX211bHRpKHNjLCBSVDI1NzNfSFdfQkVBQ09OX0JBU0UwLCAodWludDhfdCAq
 KSZkZXNjLCAyNCk7DQorDQorICAgIC8qIGNvcHkgYmVhY29uIGhlYWRlciBhbmQgcGF5bG9h
 ZCBpbnRvIE5JQyBtZW1vcnkgKi8NCisgICAgcnVtX3dyaXRlX211bHRpKHNjLCBSVDI1NzNf
 SFdfQkVBQ09OX0JBU0UwICsgMjQsIG10b2QobTAsIHVpbnQ4X3QgKiksDQorICAgICAgICBt
 MC0+bV9wa3RoZHIubGVuKTsNCisNCisgICAgbV9mcmVlbShtMCk7DQorDQorICAgIHJldHVy
 biAwOw0KK30NCisNCisjZGVmaW5lIFJVTV9BTVJSX01JTl9TVUNDRVNTX1RIUkVTSE9MRCAg
 MQ0KKyNkZWZpbmUgUlVNX0FNUlJfTUFYX1NVQ0NFU1NfVEhSRVNIT0xEIDEwDQorDQorc3Rh
 dGljIHZvaWQNCitydW1fYW1ycl9zdGFydChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgc3RydWN0
 IGllZWU4MDIxMV9ub2RlICpuaSkNCit7DQorICAgIHN0cnVjdCBpZWVlODAyMTFfYW1yciAq
 YW1yciA9ICZzYy0+YW1ycjsNCisgICAgc3RydWN0IGllZWU4MDIxMV9hbXJyX25vZGUgKmFt
 biA9ICZzYy0+YW1uOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf
 aWM7DQorICAgIGludCBpOw0KKw0KKyAgICAvKiBjbGVhciBzdGF0aXN0aWMgcmVnaXN0ZXJz
 IChTVEFfQ1NSMCB0byBTVEFfQ1NSNSkgKi8NCisgICAgcnVtX3JlYWRfbXVsdGkoc2MsIFJU
 MjU3M19TVEFfQ1NSMCwgc2MtPnN0YSwgc2l6ZW9mIHNjLT5zdGEpOw0KKw0KKyAgICBpZWVl
 ODAyMTFfYW1ycl9pbml0KGFtcnIsIGljLCANCisJCQkJCQlJRUVFODAyMTFfQU1SUl9NSU5f
 U1VDQ0VTU19USFJFU0hPTEQsIA0KKwkJCQkJCUlFRUU4MDIxMV9BTVJSX01BWF9TVUNDRVNT
 X1RIUkVTSE9MRCk7DQorICAgIGllZWU4MDIxMV9hbXJyX25vZGVfaW5pdChhbXJyLCBhbW4p
 Ow0KKw0KKyAgICAvKiBzZXQgcmF0ZSB0byBzb21lIHJlYXNvbmFibGUgaW5pdGlhbCB2YWx1
 ZSAqLw0KKyAgICBmb3IgKGkgPSBuaS0+bmlfcmF0ZXMucnNfbnJhdGVzIC0gMTsNCisgICAg
 ICAgICBpID4gMCAmJiAobmktPm5pX3JhdGVzLnJzX3JhdGVzW2ldICYgSUVFRTgwMjExX1JB
 VEVfVkFMKSA+IDcyOw0KKyAgICAgICAgIGktLSk7DQorICAgIG5pLT5uaV90eHJhdGUgPSBp
 Ow0KKw0KKyAgICBjYWxsb3V0X3Jlc2V0KCZzYy0+YW1ycl9jaCwgaHosIHJ1bV9hbXJyX3Rp
 bWVvdXQsIHNjKTsNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fYW1ycl90aW1lb3V0KHZv
 aWQgKmFyZykNCit7DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gYXJnOw0KKyAgICB1
 c2JfZGV2aWNlX3JlcXVlc3RfdCByZXE7DQorDQorICAgIC8qDQorICAgICAqIEFzeW5jaHJv
 bm91c2x5IHJlYWQgc3RhdGlzdGljIHJlZ2lzdGVycyAoY2xlYXJlZCBieSByZWFkKS4NCisg
 ICAgICovDQorICAgIHJlcS5ibVJlcXVlc3RUeXBlID0gVVRfUkVBRF9WRU5ET1JfREVWSUNF
 Ow0KKyAgICByZXEuYlJlcXVlc3QgPSBSVDI1NzNfUkVBRF9NVUxUSV9NQUM7DQorICAgIFVT
 RVRXKHJlcS53VmFsdWUsIDApOw0KKyAgICBVU0VUVyhyZXEud0luZGV4LCBSVDI1NzNfU1RB
 X0NTUjApOw0KKyAgICBVU0VUVyhyZXEud0xlbmd0aCwgc2l6ZW9mIHNjLT5zdGEpOw0KKw0K
 KyAgICB1c2JkX3NldHVwX2RlZmF1bHRfeGZlcihzYy0+YW1ycl94ZmVyLCBzYy0+c2NfdWRl
 diwgc2MsDQorICAgICAgICBVU0JEX0RFRkFVTFRfVElNRU9VVCwgJnJlcSwgc2MtPnN0YSwg
 c2l6ZW9mIHNjLT5zdGEsIDAsDQorICAgICAgICBydW1fYW1ycl91cGRhdGUpOw0KKyAgICAo
 dm9pZCl1c2JkX3RyYW5zZmVyKHNjLT5hbXJyX3hmZXIpOw0KK30NCisNCitzdGF0aWMgdm9p
 ZA0KK3J1bV9hbXJyX3VwZGF0ZSh1c2JkX3hmZXJfaGFuZGxlIHhmZXIsIHVzYmRfcHJpdmF0
 ZV9oYW5kbGUgcHJpdiwNCisgICAgdXNiZF9zdGF0dXMgc3RhdHVzKQ0KK3sNCisgICAgICAg
 IHN0cnVjdCBydW1fc29mdGMgKnNjID0gKHN0cnVjdCBydW1fc29mdGMgKilwcml2Ow0KKyAg
 ICAgICAgc3RydWN0IGllZWU4MDIxMV9hbXJyICphbXJyID0gJnNjLT5hbXJyOw0KKyAgICAg
 ICAgc3RydWN0IGllZWU4MDIxMV9hbXJyX25vZGUgKmFtbiA9ICZzYy0+YW1uOw0KKyAgICAg
 ICAgc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOw0KKw0KKyAgICAgICAgaWYgKHN0
 YXR1cyAhPSBVU0JEX05PUk1BTF9DT01QTEVUSU9OKSB7DQorICAgICAgICAgICAgICAgIGRl
 dmljZV9wcmludGYoc2MtPnNjX2RldiwgImNvdWxkIG5vdCByZXRyaWV2ZSBUeCBzdGF0aXN0
 aWNzIC0gIg0KKyAgICAgICAgICAgICAgICAgICAgImNhbmNlbGxpbmcgYXV0b21hdGljIHJh
 dGUgY29udHJvbFxuIik7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0N
 CisNCisgICAgICAgIC8qIGNvdW50IFRYIHJldHJ5LWZhaWwgYXMgVHggZXJyb3JzICovDQor
 ICAgICAgICBpZnAtPmlmX29lcnJvcnMgKz0gbGUzMnRvaChzYy0+c3RhWzVdKSA+PiAxNjsN
 CisNCisgICAgICAgIGllZWU4MDIxMV9hbXJyX2Nob29zZShhbXJyLCBzYy0+c2NfaWMuaWNf
 YnNzLCBhbW4pOw0KKw0KKyAgICAgICAgY2FsbG91dF9yZXNldCgmc2MtPmFtcnJfY2gsIGh6
 LCBydW1fYW1ycl90aW1lb3V0LCBzYyk7DQorfQ0KKw0KK0RSSVZFUl9NT0RVTEUocnVtLCB1
 aHViLCBydW1fZHJpdmVyLCBydW1fZGV2Y2xhc3MsIHVzYmRfZHJpdmVyX2xvYWQsIDApOw0K
 Kw0KSW5kZXg6IHN5cy9kZXYvdXNiL2lmX3J1bXJlZy5oDQo9PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
 ZmlsZTogc3lzL2Rldi91c2IvaWZfcnVtcmVnLmgNCmRpZmYgLU4gc3lzL2Rldi91c2IvaWZf
 cnVtcmVnLmgNCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysr
 IHN5cy9kZXYvdXNiL2lmX3J1bXJlZy5oCTIyIEFwciAyMDA3IDA4OjAxOjU0IC0wMDAwDQpA
 QCAtMCwwICsxLDM5MCBAQA0KKy8qCSRPcGVuQlNEOiBpZl9ydW1yZWcuaCx2IDEuMTIgMjAw
 Ni8wOC8wOSAwODoyMTowOCBkYW1pZW4gRXhwICQJKi8NCisNCisvKi0NCisgKiBDb3B5cmln
 aHQgKGMpIDIwMDUsIDIwMDYgRGFtaWVuIEJlcmdhbWluaSA8ZGFtaWVuLmJlcmdhbWluaUBm
 cmVlLmZyPg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiBOaWFsbCBPJ0hpZ2dpbnMgPG5pYWxs
 b0BvcGVuYnNkLm9yZz4NCisgKg0KKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp
 ZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KKyAqIHB1cnBvc2Ug
 d2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0
 aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
 aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBS
 T1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVT
 DQorICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJ
 RUQgV0FSUkFOVElFUyBPRg0KKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4g
 Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SDQorICogQU5ZIFNQRUNJ
 QUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkg
 REFNQUdFUw0KKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERB
 VEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KKyAqIEFDVElPTiBPRiBDT05UUkFDVCwg
 TkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GDQor
 ICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJ
 UyBTT0ZUV0FSRS4NCisgKi8NCisNCisjZGVmaW5lIFJUMjU3M19UWF9ERVNDX1NJWkUJKHNp
 emVvZiAoc3RydWN0IHJ1bV90eF9kZXNjKSkNCisjZGVmaW5lIFJUMjU3M19SWF9ERVNDX1NJ
 WkUJKHNpemVvZiAoc3RydWN0IHJ1bV9yeF9kZXNjKSkNCisNCisjZGVmaW5lIFJUMjU3M19D
 T05GSUdfTk8JMQ0KKyNkZWZpbmUgUlQyNTczX0lGQUNFX0lOREVYCTANCisNCisjZGVmaW5l
 IFJUMjU3M19NQ1VfQ05UTAkJMHgwMQ0KKyNkZWZpbmUgUlQyNTczX1dSSVRFX01BQwkweDAy
 DQorI2RlZmluZSBSVDI1NzNfUkVBRF9NQUMJCTB4MDMNCisjZGVmaW5lIFJUMjU3M19XUklU
 RV9NVUxUSV9NQUMJMHgwNg0KKyNkZWZpbmUgUlQyNTczX1JFQURfTVVMVElfTUFDCTB4MDcN
 CisjZGVmaW5lIFJUMjU3M19SRUFEX0VFUFJPTQkweDA5DQorI2RlZmluZSBSVDI1NzNfV1JJ
 VEVfTEVECTB4MGENCisNCisvKg0KKyAqIENvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlcnMu
 DQorICovDQorI2RlZmluZSBSVDI1NzNfQUlGU05fQ1NSCTB4MDQwMA0KKyNkZWZpbmUgUlQy
 NTczX0NXTUlOX0NTUgkweDA0MDQNCisjZGVmaW5lIFJUMjU3M19DV01BWF9DU1IJMHgwNDA4
 DQorI2RlZmluZSBSVDI1NzNfTUNVX0NPREVfQkFTRQkweDA4MDANCisjZGVmaW5lIFJUMjU3
 M19IV19CRUFDT05fQkFTRTAJMHgyNDAwDQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjAJCTB4
 MzAwMA0KKyNkZWZpbmUgUlQyNTczX01BQ19DU1IxCQkweDMwMDQNCisjZGVmaW5lIFJUMjU3
 M19NQUNfQ1NSMgkJMHgzMDA4DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjMJCTB4MzAwYw0K
 KyNkZWZpbmUgUlQyNTczX01BQ19DU1I0CQkweDMwMTANCisjZGVmaW5lIFJUMjU3M19NQUNf
 Q1NSNQkJMHgzMDE0DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjYJCTB4MzAxOA0KKyNkZWZp
 bmUgUlQyNTczX01BQ19DU1I3CQkweDMwMWMNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSOAkJ
 MHgzMDIwDQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjkJCTB4MzAyNA0KKyNkZWZpbmUgUlQy
 NTczX01BQ19DU1IxMAkweDMwMjgNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSMTEJMHgzMDJj
 DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjEyCTB4MzAzMA0KKyNkZWZpbmUgUlQyNTczX01B
 Q19DU1IxMwkweDMwMzQNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSMTQJMHgzMDM4DQorI2Rl
 ZmluZSBSVDI1NzNfTUFDX0NTUjE1CTB4MzAzYw0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NS
 MAkweDMwNDANCisjZGVmaW5lIFJUMjU3M19UWFJYX0NTUjEJMHgzMDQ0DQorI2RlZmluZSBS
 VDI1NzNfVFhSWF9DU1IyCTB4MzA0OA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMwkweDMw
 NGMNCisjZGVmaW5lIFJUMjU3M19UWFJYX0NTUjQJMHgzMDUwDQorI2RlZmluZSBSVDI1NzNf
 VFhSWF9DU1I1CTB4MzA1NA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSNgkweDMwNTgNCisj
 ZGVmaW5lIFJUMjU3M19UWFJYX0NTUjcJMHgzMDVjDQorI2RlZmluZSBSVDI1NzNfVFhSWF9D
 U1I4CTB4MzA2MA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSOQkweDMwNjQNCisjZGVmaW5l
 IFJUMjU3M19UWFJYX0NTUjEwCTB4MzA2OA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMTEJ
 MHgzMDZjDQorI2RlZmluZSBSVDI1NzNfVFhSWF9DU1IxMgkweDMwNzANCisjZGVmaW5lIFJU
 MjU3M19UWFJYX0NTUjEzCTB4MzA3NA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMTQJMHgz
 MDc4DQorI2RlZmluZSBSVDI1NzNfVFhSWF9DU1IxNQkweDMwN2MNCisjZGVmaW5lIFJUMjU3
 M19QSFlfQ1NSMAkJMHgzMDgwDQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjEJCTB4MzA4NA0K
 KyNkZWZpbmUgUlQyNTczX1BIWV9DU1IyCQkweDMwODgNCisjZGVmaW5lIFJUMjU3M19QSFlf
 Q1NSMwkJMHgzMDhjDQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjQJCTB4MzA5MA0KKyNkZWZp
 bmUgUlQyNTczX1BIWV9DU1I1CQkweDMwOTQNCisjZGVmaW5lIFJUMjU3M19QSFlfQ1NSNgkJ
 MHgzMDk4DQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjcJCTB4MzA5Yw0KKyNkZWZpbmUgUlQy
 NTczX1NFQ19DU1IwCQkweDMwYTANCisjZGVmaW5lIFJUMjU3M19TRUNfQ1NSMQkJMHgzMGE0
 DQorI2RlZmluZSBSVDI1NzNfU0VDX0NTUjIJCTB4MzBhOA0KKyNkZWZpbmUgUlQyNTczX1NF
 Q19DU1IzCQkweDMwYWMNCisjZGVmaW5lIFJUMjU3M19TRUNfQ1NSNAkJMHgzMGIwDQorI2Rl
 ZmluZSBSVDI1NzNfU0VDX0NTUjUJCTB4MzBiNA0KKyNkZWZpbmUgUlQyNTczX1NUQV9DU1Iw
 CQkweDMwYzANCisjZGVmaW5lIFJUMjU3M19TVEFfQ1NSMQkJMHgzMGM0DQorI2RlZmluZSBS
 VDI1NzNfU1RBX0NTUjIJCTB4MzBjOA0KKyNkZWZpbmUgUlQyNTczX1NUQV9DU1IzCQkweDMw
 Y2MNCisjZGVmaW5lIFJUMjU3M19TVEFfQ1NSNAkJMHgzMGQwDQorI2RlZmluZSBSVDI1NzNf
 U1RBX0NTUjUJCTB4MzBkNA0KKw0KKw0KKy8qIHBvc3NpYmxlIGZsYWdzIGZvciByZWdpc3Rl
 ciBSVDI1NzNfTUFDX0NTUjEgKi8NCisjZGVmaW5lIFJUMjU3M19SRVNFVF9BU0lDCSgxIDw8
 IDApDQorI2RlZmluZSBSVDI1NzNfUkVTRVRfQkJQCSgxIDw8IDEpDQorI2RlZmluZSBSVDI1
 NzNfSE9TVF9SRUFEWQkoMSA8PCAyKQ0KKw0KKy8qIHBvc3NpYmxlIGZsYWdzIGZvciByZWdp
 c3RlciBNQUNfQ1NSNSAqLw0KKyNkZWZpbmUgUlQyNTczX09ORV9CU1NJRAkzDQorDQorLyog
 cG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSMCAqLw0KKy8qIFR4IGZpbHRl
 ciBmbGFncyBhcmUgaW4gdGhlIGxvdyAxNiBiaXRzICovDQorI2RlZmluZSBSVDI1NzNfQVVU
 T19UWF9TRVEJCSgxIDw8IDE1KQ0KKy8qIFJ4IGZpbHRlciBmbGFncyBhcmUgaW4gdGhlIGhp
 Z2ggMTYgYml0cyAqLw0KKyNkZWZpbmUgUlQyNTczX0RJU0FCTEVfUlgJCSgxIDw8IDE2KQ0K
 KyNkZWZpbmUgUlQyNTczX0RST1BfQ1JDX0VSUk9SCQkoMSA8PCAxNykNCisjZGVmaW5lIFJU
 MjU3M19EUk9QX1BIWV9FUlJPUgkJKDEgPDwgMTgpDQorI2RlZmluZSBSVDI1NzNfRFJPUF9D
 VEwJCQkoMSA8PCAxOSkNCisjZGVmaW5lIFJUMjU3M19EUk9QX05PVF9UT19NRQkJKDEgPDwg
 MjApDQorI2RlZmluZSBSVDI1NzNfRFJPUF9UT0RTCQkoMSA8PCAyMSkNCisjZGVmaW5lIFJU
 MjU3M19EUk9QX1ZFUl9FUlJPUgkJKDEgPDwgMjIpDQorI2RlZmluZSBSVDI1NzNfRFJPUF9N
 VUxUSUNBU1QJCSgxIDw8IDIzKQ0KKyNkZWZpbmUgUlQyNTczX0RST1BfQlJPQURDQVNUCQko
 MSA8PCAyNCkNCisjZGVmaW5lIFJUMjU3M19EUk9QX0FDS0NUUwkJKDEgPDwgMjUpDQorDQor
 LyogcG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSNCAqLw0KKyNkZWZpbmUg
 UlQyNTczX1NIT1JUX1BSRUFNQkxFCSgxIDw8IDE4KQ0KKyNkZWZpbmUgUlQyNTczX01SUl9F
 TkFCTEVECSgxIDw8IDE5KQ0KKyNkZWZpbmUgUlQyNTczX01SUl9DQ0tfRkFMTEJBQ0sJKDEg
 PDwgMjIpDQorDQorLyogcG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSOSAq
 Lw0KKyNkZWZpbmUgUlQyNTczX1RTRl9USUNLSU5HCSgxIDw8IDE2KQ0KKyNkZWZpbmUgUlQy
 NTczX1RTRl9NT0RFKHgpCSgoKHgpICYgMHgzKSA8PCAxNykNCisvKiBUQlRUIHN0YW5kcyBm
 b3IgVGFyZ2V0IEJlYWNvbiBUcmFuc21pc3Npb24gVGltZSAqLw0KKyNkZWZpbmUgUlQyNTcz
 X0VOQUJMRV9UQlRUCSgxIDw8IDE5KQ0KKyNkZWZpbmUgUlQyNTczX0dFTkVSQVRFX0JFQUNP
 TgkoMSA8PCAyMCkNCisNCisvKiBwb3NzaWJsZSBmbGFncyBmb3IgcmVnaXN0ZXIgUEhZX0NT
 UjAgKi8NCisjZGVmaW5lIFJUMjU3M19QQV9QRV8yR0haCSgxIDw8IDE2KQ0KKyNkZWZpbmUg
 UlQyNTczX1BBX1BFXzVHSFoJKDEgPDwgMTcpDQorDQorLyogcG9zc2libGUgZmxhZ3MgZm9y
 IHJlZ2lzdGVyIFBIWV9DU1IzICovDQorI2RlZmluZSBSVDI1NzNfQkJQX1JFQUQJKDEgPDwg
 MTUpDQorI2RlZmluZSBSVDI1NzNfQkJQX0JVU1kJKDEgPDwgMTYpDQorLyogcG9zc2libGUg
 ZmxhZ3MgZm9yIHJlZ2lzdGVyIFBIWV9DU1I0ICovDQorI2RlZmluZSBSVDI1NzNfUkZfMjBC
 SVQJKDIwIDw8IDI0KQ0KKyNkZWZpbmUgUlQyNTczX1JGX0JVU1kJKDEgPDwgMzEpDQorDQor
 LyogTEVEIHZhbHVlcyAqLw0KKyNkZWZpbmUgUlQyNTczX0xFRF9SQURJTwkoMSA8PCA4KQ0K
 KyNkZWZpbmUgUlQyNTczX0xFRF9HCQkoMSA8PCA5KQ0KKyNkZWZpbmUgUlQyNTczX0xFRF9B
 CQkoMSA8PCAxMCkNCisjZGVmaW5lIFJUMjU3M19MRURfT04JCTB4MWUxZQ0KKyNkZWZpbmUg
 UlQyNTczX0xFRF9PRkYJCTB4MA0KKw0KKyNkZWZpbmUgUlQyNTczX01DVV9SVU4JKDEgPDwg
 MykNCisNCisjZGVmaW5lIFJUMjU3M19TTUFSVF9NT0RFCSgxIDw8IDApDQorDQorI2RlZmlu
 ZSBSVDI1NzNfQkJQUjk0X0RFRkFVTFQJNg0KKw0KKyNkZWZpbmUgUlQyNTczX0JCUF9XUklU
 RQkoMSA8PCAxNSkNCisNCisvKiBkdWFsLWJhbmQgUkYgKi8NCisjZGVmaW5lIFJUMjU3M19S
 Rl81MjI2CTENCisjZGVmaW5lIFJUMjU3M19SRl81MjI1CTMNCisvKiBzaW5nbGUtYmFuZCBS
 RiAqLw0KKyNkZWZpbmUgUlQyNTczX1JGXzI1MjgJMg0KKyNkZWZpbmUgUlQyNTczX1JGXzI1
 MjcJNA0KKw0KKyNkZWZpbmUgUlQyNTczX0JCUF9WRVJTSU9OCTANCisNCitzdHJ1Y3QgcnVt
 X3R4X2Rlc2Mgew0KKwl1aW50MzJfdAlmbGFnczsNCisjZGVmaW5lIFJUMjU3M19UWF9CVVJT
 VAkJCSgxIDw8IDApDQorI2RlZmluZSBSVDI1NzNfVFhfVkFMSUQJCQkoMSA8PCAxKQ0KKyNk
 ZWZpbmUgUlQyNTczX1RYX01PUkVfRlJBRwkJKDEgPDwgMikNCisjZGVmaW5lIFJUMjU3M19U
 WF9BQ0sJCQkoMSA8PCAzKQ0KKyNkZWZpbmUgUlQyNTczX1RYX1RJTUVTVEFNUAkJKDEgPDwg
 NCkNCisjZGVmaW5lIFJUMjU3M19UWF9PRkRNCQkJKDEgPDwgNSkNCisjZGVmaW5lIFJUMjU3
 M19UWF9JRlNfU0lGUwkJKDEgPDwgNikNCisjZGVmaW5lIFJUMjU3M19UWF9MT05HX1JFVFJZ
 CQkoMSA8PCA3KQ0KKw0KKwl1aW50MTZfdAl3bWU7DQorI2RlZmluZSBSVDI1NzNfUUlEKHYp
 CQkodikNCisjZGVmaW5lIFJUMjU3M19BSUZTTih2KQkJKCh2KSA8PCA0KQ0KKyNkZWZpbmUg
 UlQyNTczX0xPR0NXTUlOKHYpCSgodikgPDwgOCkNCisjZGVmaW5lIFJUMjU3M19MT0dDV01B
 WCh2KQkoKHYpIDw8IDEyKQ0KKw0KKwl1aW50MTZfdAl4ZmxhZ3M7DQorI2RlZmluZSBSVDI1
 NzNfVFhfSFdTRVEJCSgxIDw8IDEyKQ0KKw0KKwl1aW50OF90CQlwbGNwX3NpZ25hbDsNCisJ
 dWludDhfdAkJcGxjcF9zZXJ2aWNlOw0KKyNkZWZpbmUgUlQyNTczX1BMQ1BfTEVOR0VYVAkw
 eDgwDQorDQorCXVpbnQ4X3QJCXBsY3BfbGVuZ3RoX2xvOw0KKwl1aW50OF90CQlwbGNwX2xl
 bmd0aF9oaTsNCisNCisJdWludDMyX3QJaXY7DQorCXVpbnQzMl90CWVpdjsNCisNCisJdWlu
 dDhfdAkJb2Zmc2V0Ow0KKwl1aW50OF90CQlxaWQ7DQorCXVpbnQ4X3QJCXR4cG93ZXI7DQor
 I2RlZmluZSBSVDI1NzNfREVGQVVMVF9UWFBPV0VSCTANCisNCisJdWludDhfdAkJcmVzZXJ2
 ZWQ7DQorfSBfX3BhY2tlZDsNCisNCitzdHJ1Y3QgcnVtX3J4X2Rlc2Mgew0KKwl1aW50MzJf
 dAlmbGFnczsNCisjZGVmaW5lIFJUMjU3M19SWF9CVVNZCQkoMSA8PCAwKQ0KKyNkZWZpbmUg
 UlQyNTczX1JYX0RST1AJCSgxIDw8IDEpDQorI2RlZmluZSBSVDI1NzNfUlhfQ1JDX0VSUk9S
 CSgxIDw8IDYpDQorI2RlZmluZSBSVDI1NzNfUlhfT0ZETQkJKDEgPDwgNykNCisNCisJdWlu
 dDhfdAkJcmF0ZTsNCisJdWludDhfdAkJcnNzaTsNCisJdWludDhfdAkJcmVzZXJ2ZWQxOw0K
 Kwl1aW50OF90CQlvZmZzZXQ7DQorCXVpbnQzMl90CWl2Ow0KKwl1aW50MzJfdAllaXY7DQor
 CXVpbnQzMl90CXJlc2VydmVkMlsyXTsNCit9IF9fcGFja2VkOw0KKw0KKyNkZWZpbmUgUlQy
 NTczX1JGMQkwDQorI2RlZmluZSBSVDI1NzNfUkYyCTINCisjZGVmaW5lIFJUMjU3M19SRjMJ
 MQ0KKyNkZWZpbmUgUlQyNTczX1JGNAkzDQorDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX01B
 Q0JCUAkJMHgwMDAwDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX0FERFJFU1MJCTB4MDAwNA0K
 KyNkZWZpbmUgUlQyNTczX0VFUFJPTV9BTlRFTk5BCQkweDAwMjANCisjZGVmaW5lIFJUMjU3
 M19FRVBST01fQ09ORklHMgkJMHgwMDIyDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX0JCUF9C
 QVNFCQkweDAwMjYNCisjZGVmaW5lIFJUMjU3M19FRVBST01fVFhQT1dFUgkJMHgwMDQ2DQor
 I2RlZmluZSBSVDI1NzNfRUVQUk9NX0ZSRVFfT0ZGU0VUCTB4MDA1ZQ0KKyNkZWZpbmUgUlQy
 NTczX0VFUFJPTV9SU1NJXzJHSFpfT0ZGU0VUCTB4MDA5YQ0KKyNkZWZpbmUgUlQyNTczX0VF
 UFJPTV9SU1NJXzVHSFpfT0ZGU0VUCTB4MDA5Yw0KKw0KKy8qDQorICogRGVmYXVsdCB2YWx1
 ZXMgZm9yIE1BQyByZWdpc3RlcnM7IHZhbHVlcyB0YWtlbiBmcm9tIHRoZSByZWZlcmVuY2Ug
 ZHJpdmVyLg0KKyAqLw0KKyNkZWZpbmUgUlQyNTczX0RFRl9NQUMJCQkJXA0KKwl7IFJUMjU3
 M19UWFJYX0NTUjAsICAweDAyNWZiMDMyIH0sCVwNCisJeyBSVDI1NzNfVFhSWF9DU1IxLCAg
 MHg5ZWFhOWVhZiB9LAlcDQorCXsgUlQyNTczX1RYUlhfQ1NSMiwgIDB4OGE4YjhjOGQgfSwJ
 XA0KKwl7IFJUMjU3M19UWFJYX0NTUjMsICAweDAwODU4Njg3IH0sCVwNCisJeyBSVDI1NzNf
 VFhSWF9DU1I3LCAgMHgyZTMxMzUzYiB9LAlcDQorCXsgUlQyNTczX1RYUlhfQ1NSOCwgIDB4
 MmEyYTJhMmMgfSwJXA0KKwl7IFJUMjU3M19UWFJYX0NTUjE1LCAweDAwMDAwMDBmIH0sCVwN
 CisJeyBSVDI1NzNfTUFDX0NTUjYsICAgMHgwMDAwMGZmZiB9LAlcDQorCXsgUlQyNTczX01B
 Q19DU1I4LCAgIDB4MDE2YzAzMGEgfSwJXA0KKwl7IFJUMjU3M19NQUNfQ1NSMTAsICAweDAw
 MDAwNzE4IH0sCVwNCisJeyBSVDI1NzNfTUFDX0NTUjEyLCAgMHgwMDAwMDAwNCB9LAlcDQor
 CXsgUlQyNTczX01BQ19DU1IxMywgIDB4MDAwMDdmMDAgfSwJXA0KKwl7IFJUMjU3M19TRUNf
 Q1NSMCwgICAweDAwMDAwMDAwIH0sCVwNCisJeyBSVDI1NzNfU0VDX0NTUjEsICAgMHgwMDAw
 MDAwMCB9LAlcDQorCXsgUlQyNTczX1NFQ19DU1I1LCAgIDB4MDAwMDAwMDAgfSwJXA0KKwl7
 IFJUMjU3M19QSFlfQ1NSMSwgICAweDAwMDAyM2IwIH0sCVwNCisJeyBSVDI1NzNfUEhZX0NT
 UjUsICAgMHgwMDA0MGEwNiB9LAlcDQorCXsgUlQyNTczX1BIWV9DU1I2LCAgIDB4MDAwODA2
 MDYgfSwJXA0KKwl7IFJUMjU3M19QSFlfQ1NSNywgICAweDAwMDAwNDA4IH0sCVwNCisJeyBS
 VDI1NzNfQUlGU05fQ1NSLCAgMHgwMDAwMjI3MyB9LAlcDQorCXsgUlQyNTczX0NXTUlOX0NT
 UiwgIDB4MDAwMDIzNDQgfSwJXA0KKwl7IFJUMjU3M19DV01BWF9DU1IsICAweDAwMDAzNGFh
 IH0NCisNCisvKg0KKyAqIERlZmF1bHQgdmFsdWVzIGZvciBCQlAgcmVnaXN0ZXJzOyB2YWx1
 ZXMgdGFrZW4gZnJvbSB0aGUgcmVmZXJlbmNlIGRyaXZlci4NCisgKi8NCisjZGVmaW5lIFJU
 MjU3M19ERUZfQkJQCVwNCisJeyAgIDMsIDB4ODAgfSwJXA0KKwl7ICAxNSwgMHgzMCB9LAlc
 DQorCXsgIDE3LCAweDIwIH0sCVwNCisJeyAgMjEsIDB4YzggfSwJXA0KKwl7ICAyMiwgMHgz
 OCB9LAlcDQorCXsgIDIzLCAweDA2IH0sCVwNCisJeyAgMjQsIDB4ZmUgfSwJXA0KKwl7ICAy
 NSwgMHgwYSB9LAlcDQorCXsgIDI2LCAweDBkIH0sCVwNCisJeyAgMzIsIDB4MGIgfSwJXA0K
 Kwl7ICAzNCwgMHgxMiB9LAlcDQorCXsgIDM3LCAweDA3IH0sCVwNCisJeyAgMzksIDB4Zjgg
 fSwJXA0KKwl7ICA0MSwgMHg2MCB9LAlcDQorCXsgIDUzLCAweDEwIH0sCVwNCisJeyAgNTQs
 IDB4MTggfSwJXA0KKwl7ICA2MCwgMHgxMCB9LAlcDQorCXsgIDYxLCAweDA0IH0sCVwNCisJ
 eyAgNjIsIDB4MDQgfSwJXA0KKwl7ICA3NSwgMHhmZSB9LAlcDQorCXsgIDg2LCAweGZlIH0s
 CVwNCisJeyAgODgsIDB4ZmUgfSwJXA0KKwl7ICA5MCwgMHgwZiB9LAlcDQorCXsgIDk5LCAw
 eDAwIH0sCVwNCisJeyAxMDIsIDB4MTYgfSwJXA0KKwl7IDEwNywgMHgwNCB9DQorDQorLyoN
 CisgKiBEZWZhdWx0IHNldHRpbmdzIGZvciBSRiByZWdpc3RlcnM7IHZhbHVlcyB0YWtlbiBm
 cm9tIHRoZSByZWZlcmVuY2UgZHJpdmVyLg0KKyAqLw0KKyNkZWZpbmUgUlQyNTczX1JGNTIy
 NgkJCQkJXA0KKwl7ICAgMSwgMHgwMGIwMywgMHgwMDFlMSwgMHgxYTAxNCwgMHgzMDI4MiB9
 LAlcDQorCXsgICAyLCAweDAwYjAzLCAweDAwMWUxLCAweDFhMDE0LCAweDMwMjg3IH0sCVwN
 CisJeyAgIDMsIDB4MDBiMDMsIDB4MDAxZTIsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7
 ICAgNCwgMHgwMGIwMywgMHgwMDFlMiwgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgICA1
 LCAweDAwYjAzLCAweDAwMWUzLCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAgIDYsIDB4
 MDBiMDMsIDB4MDAxZTMsIDB4MWEwMTQsIDB4MzAyODcgfSwJXA0KKwl7ICAgNywgMHgwMGIw
 MywgMHgwMDFlNCwgMHgxYTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgICA4LCAweDAwYjAzLCAw
 eDAwMWU0LCAweDFhMDE0LCAweDMwMjg3IH0sCVwNCisJeyAgIDksIDB4MDBiMDMsIDB4MDAx
 ZTUsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7ICAxMCwgMHgwMGIwMywgMHgwMDFlNSwg
 MHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgIDExLCAweDAwYjAzLCAweDAwMWU2LCAweDFh
 MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMTIsIDB4MDBiMDMsIDB4MDAxZTYsIDB4MWEwMTQs
 IDB4MzAyODcgfSwJXA0KKwl7ICAxMywgMHgwMGIwMywgMHgwMDFlNywgMHgxYTAxNCwgMHgz
 MDI4MiB9LAlcDQorCXsgIDE0LCAweDAwYjAzLCAweDAwMWU4LCAweDFhMDE0LCAweDMwMjg0
 IH0sCVwNCisJCQkJCQkJXA0KKwl7ICAzNCwgMHgwMGIwMywgMHgyMDI2NiwgMHgzNjAxNCwg
 MHgzMDI4MiB9LAlcDQorCXsgIDM4LCAweDAwYjAzLCAweDIwMjY3LCAweDM2MDE0LCAweDMw
 Mjg0IH0sCVwNCisJeyAgNDIsIDB4MDBiMDMsIDB4MjAyNjgsIDB4MzYwMTQsIDB4MzAyODYg
 fSwJXA0KKwl7ICA0NiwgMHgwMGIwMywgMHgyMDI2OSwgMHgzNjAxNCwgMHgzMDI4OCB9LAlc
 DQorCQkJCQkJCVwNCisJeyAgMzYsIDB4MDBiMDMsIDB4MDAyNjYsIDB4MjYwMTQsIDB4MzAy
 ODggfSwJXA0KKwl7ICA0MCwgMHgwMGIwMywgMHgwMDI2OCwgMHgyNjAxNCwgMHgzMDI4MCB9
 LAlcDQorCXsgIDQ0LCAweDAwYjAzLCAweDAwMjY5LCAweDI2MDE0LCAweDMwMjgyIH0sCVwN
 CisJeyAgNDgsIDB4MDBiMDMsIDB4MDAyNmEsIDB4MjYwMTQsIDB4MzAyODQgfSwJXA0KKwl7
 ICA1MiwgMHgwMGIwMywgMHgwMDI2YiwgMHgyNjAxNCwgMHgzMDI4NiB9LAlcDQorCXsgIDU2
 LCAweDAwYjAzLCAweDAwMjZjLCAweDI2MDE0LCAweDMwMjg4IH0sCVwNCisJeyAgNjAsIDB4
 MDBiMDMsIDB4MDAyNmUsIDB4MjYwMTQsIDB4MzAyODAgfSwJXA0KKwl7ICA2NCwgMHgwMGIw
 MywgMHgwMDI2ZiwgMHgyNjAxNCwgMHgzMDI4MiB9LAlcDQorCQkJCQkJCVwNCisJeyAxMDAs
 IDB4MDBiMDMsIDB4MDAyOGEsIDB4MmUwMTQsIDB4MzAyODAgfSwJXA0KKwl7IDEwNCwgMHgw
 MGIwMywgMHgwMDI4YiwgMHgyZTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgMTA4LCAweDAwYjAz
 LCAweDAwMjhjLCAweDJlMDE0LCAweDMwMjg0IH0sCVwNCisJeyAxMTIsIDB4MDBiMDMsIDB4
 MDAyOGQsIDB4MmUwMTQsIDB4MzAyODYgfSwJXA0KKwl7IDExNiwgMHgwMGIwMywgMHgwMDI4
 ZSwgMHgyZTAxNCwgMHgzMDI4OCB9LAlcDQorCXsgMTIwLCAweDAwYjAzLCAweDAwMmEwLCAw
 eDJlMDE0LCAweDMwMjgwIH0sCVwNCisJeyAxMjQsIDB4MDBiMDMsIDB4MDAyYTEsIDB4MmUw
 MTQsIDB4MzAyODIgfSwJXA0KKwl7IDEyOCwgMHgwMGIwMywgMHgwMDJhMiwgMHgyZTAxNCwg
 MHgzMDI4NCB9LAlcDQorCXsgMTMyLCAweDAwYjAzLCAweDAwMmEzLCAweDJlMDE0LCAweDMw
 Mjg2IH0sCVwNCisJeyAxMzYsIDB4MDBiMDMsIDB4MDAyYTQsIDB4MmUwMTQsIDB4MzAyODgg
 fSwJXA0KKwl7IDE0MCwgMHgwMGIwMywgMHgwMDJhNiwgMHgyZTAxNCwgMHgzMDI4MCB9LAlc
 DQorCQkJCQkJCVwNCisJeyAxNDksIDB4MDBiMDMsIDB4MDAyYTgsIDB4MmUwMTQsIDB4MzAy
 ODcgfSwJXA0KKwl7IDE1MywgMHgwMGIwMywgMHgwMDJhOSwgMHgyZTAxNCwgMHgzMDI4OSB9
 LAlcDQorCXsgMTU3LCAweDAwYjAzLCAweDAwMmFiLCAweDJlMDE0LCAweDMwMjgxIH0sCVwN
 CisJeyAxNjEsIDB4MDBiMDMsIDB4MDAyYWMsIDB4MmUwMTQsIDB4MzAyODMgfSwJXA0KKwl7
 IDE2NSwgMHgwMGIwMywgMHgwMDJhZCwgMHgyZTAxNCwgMHgzMDI4NSB9DQorDQorI2RlZmlu
 ZSBSVDI1NzNfUkY1MjI1CQkJCQlcDQorCXsgICAxLCAweDAwYjMzLCAweDAxMWUxLCAweDFh
 MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgIDIsIDB4MDBiMzMsIDB4MDExZTEsIDB4MWEwMTQs
 IDB4MzAyODcgfSwJXA0KKwl7ICAgMywgMHgwMGIzMywgMHgwMTFlMiwgMHgxYTAxNCwgMHgz
 MDI4MiB9LAlcDQorCXsgICA0LCAweDAwYjMzLCAweDAxMWUyLCAweDFhMDE0LCAweDMwMjg3
 IH0sCVwNCisJeyAgIDUsIDB4MDBiMzMsIDB4MDExZTMsIDB4MWEwMTQsIDB4MzAyODIgfSwJ
 XA0KKwl7ICAgNiwgMHgwMGIzMywgMHgwMTFlMywgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQor
 CXsgICA3LCAweDAwYjMzLCAweDAxMWU0LCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAg
 IDgsIDB4MDBiMzMsIDB4MDExZTQsIDB4MWEwMTQsIDB4MzAyODcgfSwJXA0KKwl7ICAgOSwg
 MHgwMGIzMywgMHgwMTFlNSwgMHgxYTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgIDEwLCAweDAw
 YjMzLCAweDAxMWU1LCAweDFhMDE0LCAweDMwMjg3IH0sCVwNCisJeyAgMTEsIDB4MDBiMzMs
 IDB4MDExZTYsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7ICAxMiwgMHgwMGIzMywgMHgw
 MTFlNiwgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgIDEzLCAweDAwYjMzLCAweDAxMWU3
 LCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMTQsIDB4MDBiMzMsIDB4MDExZTgsIDB4
 MWEwMTQsIDB4MzAyODQgfSwJXA0KKwkJCQkJCQlcDQorCXsgIDM0LCAweDAwYjMzLCAweDAx
 MjY2LCAweDI2MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMzgsIDB4MDBiMzMsIDB4MDEyNjcs
 IDB4MjYwMTQsIDB4MzAyODQgfSwJXA0KKwl7ICA0MiwgMHgwMGIzMywgMHgwMTI2OCwgMHgy
 NjAxNCwgMHgzMDI4NiB9LAlcDQorCXsgIDQ2LCAweDAwYjMzLCAweDAxMjY5LCAweDI2MDE0
 LCAweDMwMjg4IH0sCVwNCisJCQkJCQkJXA0KKwl7ICAzNiwgMHgwMGIzMywgMHgwMTI2Niwg
 MHgyNjAxNCwgMHgzMDI4OCB9LAlcDQorCXsgIDQwLCAweDAwYjMzLCAweDAxMjY4LCAweDI2
 MDE0LCAweDMwMjgwIH0sCVwNCisJeyAgNDQsIDB4MDBiMzMsIDB4MDEyNjksIDB4MjYwMTQs
 IDB4MzAyODIgfSwJXA0KKwl7ICA0OCwgMHgwMGIzMywgMHgwMTI2YSwgMHgyNjAxNCwgMHgz
 MDI4NCB9LAlcDQorCXsgIDUyLCAweDAwYjMzLCAweDAxMjZiLCAweDI2MDE0LCAweDMwMjg2
 IH0sCVwNCisJeyAgNTYsIDB4MDBiMzMsIDB4MDEyNmMsIDB4MjYwMTQsIDB4MzAyODggfSwJ
 XA0KKwl7ICA2MCwgMHgwMGIzMywgMHgwMTI2ZSwgMHgyNjAxNCwgMHgzMDI4MCB9LAlcDQor
 CXsgIDY0LCAweDAwYjMzLCAweDAxMjZmLCAweDI2MDE0LCAweDMwMjgyIH0sCVwNCisJCQkJ
 CQkJXA0KKwl7IDEwMCwgMHgwMGIzMywgMHgwMTI4YSwgMHgyZTAxNCwgMHgzMDI4MCB9LAlc
 DQorCXsgMTA0LCAweDAwYjMzLCAweDAxMjhiLCAweDJlMDE0LCAweDMwMjgyIH0sCVwNCisJ
 eyAxMDgsIDB4MDBiMzMsIDB4MDEyOGMsIDB4MmUwMTQsIDB4MzAyODQgfSwJXA0KKwl7IDEx
 MiwgMHgwMGIzMywgMHgwMTI4ZCwgMHgyZTAxNCwgMHgzMDI4NiB9LAlcDQorCXsgMTE2LCAw
 eDAwYjMzLCAweDAxMjhlLCAweDJlMDE0LCAweDMwMjg4IH0sCVwNCisJeyAxMjAsIDB4MDBi
 MzMsIDB4MDEyYTAsIDB4MmUwMTQsIDB4MzAyODAgfSwJXA0KKwl7IDEyNCwgMHgwMGIzMywg
 MHgwMTJhMSwgMHgyZTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgMTI4LCAweDAwYjMzLCAweDAx
 MmEyLCAweDJlMDE0LCAweDMwMjg0IH0sCVwNCisJeyAxMzIsIDB4MDBiMzMsIDB4MDEyYTMs
 IDB4MmUwMTQsIDB4MzAyODYgfSwJXA0KKwl7IDEzNiwgMHgwMGIzMywgMHgwMTJhNCwgMHgy
 ZTAxNCwgMHgzMDI4OCB9LAlcDQorCXsgMTQwLCAweDAwYjMzLCAweDAxMmE2LCAweDJlMDE0
 LCAweDMwMjgwIH0sCVwNCisJCQkJCQkJXA0KKwl7IDE0OSwgMHgwMGIzMywgMHgwMTJhOCwg
 MHgyZTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgMTUzLCAweDAwYjMzLCAweDAxMmE5LCAweDJl
 MDE0LCAweDMwMjg5IH0sCVwNCisJeyAxNTcsIDB4MDBiMzMsIDB4MDEyYWIsIDB4MmUwMTQs
 IDB4MzAyODEgfSwJXA0KKwl7IDE2MSwgMHgwMGIzMywgMHgwMTJhYywgMHgyZTAxNCwgMHgz
 MDI4MyB9LAlcDQorCXsgMTY1LCAweDAwYjMzLCAweDAxMmFkLCAweDJlMDE0LCAweDMwMjg1
 IH0NCkluZGV4OiBzeXMvZGV2L3VzYi9pZl9ydW12YXIuaA0KPT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT
 IGZpbGU6IHN5cy9kZXYvdXNiL2lmX3J1bXZhci5oDQpkaWZmIC1OIHN5cy9kZXYvdXNiL2lm
 X3J1bXZhci5oDQotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisr
 KyBzeXMvZGV2L3VzYi9pZl9ydW12YXIuaAkyMiBBcHIgMjAwNyAwODowMTo1NCAtMDAwMA0K
 QEAgLTAsMCArMSwxNjMgQEANCisvKgkkT3BlbkJTRDogaWZfcnVtdmFyLmgsdiAxLjYgMjAw
 Ni8wOC8xOCAxNToxMToxMiBkYW1pZW4gRXhwICQJKi8NCisNCisvKi0NCisgKiBDb3B5cmln
 aHQgKGMpIDIwMDUsIDIwMDYgRGFtaWVuIEJlcmdhbWluaSA8ZGFtaWVuLmJlcmdhbWluaUBm
 cmVlLmZyPg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiBOaWFsbCBPJ0hpZ2dpbnMgPG5pYWxs
 b0BvcGVuYnNkLm9yZz4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgVmFsZXJ5IFYu
 Q2hpa2Fsb3YgPHZhbGVyYUBjaGlrYWxvdi5kcC51YT4NCisgKg0KKyAqIFBlcm1pc3Npb24g
 dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9y
 IGFueQ0KKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRl
 ZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
 aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLg0KKyAqDQorICog
 VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xB
 SU1TIEFMTCBXQVJSQU5USUVTDQorICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJ
 TkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRg0KKyAqIE1FUkNIQU5UQUJJTElU
 WSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUg
 Rk9SDQorICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJ
 QUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUw0KKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZS
 T00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KKyAqIEFD
 VElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04s
 IEFSSVNJTkcgT1VUIE9GDQorICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1Ig
 UEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCisgKi8NCisNCisjZGVmaW5lIFJUMjU3
 M19SWF9MSVNUX0NPVU5UCTENCisjZGVmaW5lIFJUMjU3M19UWF9MSVNUX0NPVU5UCTENCisN
 CitzdHJ1Y3QgcnVtX3J4X3JhZGlvdGFwX2hlYWRlciB7DQorCXN0cnVjdCBpZWVlODAyMTFf
 cmFkaW90YXBfaGVhZGVyIHdyX2loZHI7DQorCXVpbnQ4X3QJCXdyX2ZsYWdzOw0KKwl1aW50
 OF90CQl3cl9yYXRlOw0KKwl1aW50MTZfdAl3cl9jaGFuX2ZyZXE7DQorCXVpbnQxNl90CXdy
 X2NoYW5fZmxhZ3M7DQorCXVpbnQ4X3QJCXdyX2FudGVubmE7DQorCXVpbnQ4X3QJCXdyX2Fu
 dHNpZ25hbDsNCit9IF9fcGFja2VkOw0KKw0KKyNkZWZpbmUgUlQyNTczX1JYX1JBRElPVEFQ
 X1BSRVNFTlQJCQkJCVwNCisJKCgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9GTEFHUykgfAkJ
 CQlcDQorCSAoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfUkFURSkgfAkJCQlcDQorCSAoMSA8
 PCBJRUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCkgfAkJCQlcDQorCSAoMSA8PCBJRUVFODAy
 MTFfUkFESU9UQVBfQU5URU5OQSkgfAkJCQlcDQorCSAoMSA8PCBJRUVFODAyMTFfUkFESU9U
 QVBfREJfQU5UU0lHTkFMKSkNCisNCitzdHJ1Y3QgcnVtX3R4X3JhZGlvdGFwX2hlYWRlciB7
 DQorCXN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyIHd0X2loZHI7DQorCXVpbnQ4
 X3QJCXd0X2ZsYWdzOw0KKwl1aW50OF90CQl3dF9yYXRlOw0KKwl1aW50MTZfdAl3dF9jaGFu
 X2ZyZXE7DQorCXVpbnQxNl90CXd0X2NoYW5fZmxhZ3M7DQorCXVpbnQ4X3QJCXd0X2FudGVu
 bmE7DQorfSBfX3BhY2tlZDsNCisNCisjZGVmaW5lIFJUMjU3M19UWF9SQURJT1RBUF9QUkVT
 RU5UCQkJCQkJXA0KKwkoKDEgPDwgSUVFRTgwMjExX1JBRElPVEFQX0ZMQUdTKSB8CQkJCVwN
 CisJICgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9SQVRFKSB8CQkJCVwNCisJICgxIDw8IElF
 RUU4MDIxMV9SQURJT1RBUF9DSEFOTkVMKSB8CQkJCVwNCisJICgxIDw8IElFRUU4MDIxMV9S
 QURJT1RBUF9BTlRFTk5BKSkNCisNCitzdHJ1Y3QgcnVtX3NvZnRjOw0KKw0KK3N0cnVjdCBy
 dW1fdHhfZGF0YSB7DQorCXN0cnVjdCBydW1fc29mdGMJKnNjOw0KKwl1c2JkX3hmZXJfaGFu
 ZGxlCXhmZXI7DQorCXVpbnQ4X3QJCQkqYnVmOw0KKwlzdHJ1Y3QgbWJ1ZgkJKm07DQorCXN0
 cnVjdCBpZWVlODAyMTFfbm9kZQkqbmk7DQorfTsNCisNCitzdHJ1Y3QgcnVtX3J4X2RhdGEg
 ew0KKwlzdHJ1Y3QgcnVtX3NvZnRjCSpzYzsNCisJdXNiZF94ZmVyX2hhbmRsZQl4ZmVyOw0K
 Kwl1aW50OF90CQkJKmJ1ZjsNCisJc3RydWN0IG1idWYJCSptOw0KK307DQorDQorc3RydWN0
 IHJ1bV9zb2Z0YyB7DQorCWRldmljZV90CQkJICAgIHNjX2RldjsNCisJc3RydWN0IGlmbmV0
 ICAgICAgICAgICAqc2NfaWZwOw0KKwlzdHJ1Y3QgaWVlZTgwMjExY29tCQlzY19pYzsNCisJ
 aW50CQkJCSgqc2NfbmV3c3RhdGUpKHN0cnVjdCBpZWVlODAyMTFjb20gKiwNCisJCQkJCSAg
 ICBlbnVtIGllZWU4MDIxMV9zdGF0ZSwgaW50KTsNCisNCisJdXNiZF9kZXZpY2VfaGFuZGxl
 CQlzY191ZGV2Ow0KKwl1c2JkX2ludGVyZmFjZV9oYW5kbGUJCXNjX2lmYWNlOw0KKwlpbnQJ
 CQkJc2NfZmxhZ3M7DQorI2RlZmluZQlSVDI1NzNfRldMT0FERUQJKDEgPDwgMCkNCisNCisJ
 c3RydWN0IGllZWU4MDIxMV9jaGFubmVsCSpzY19jdXJjaGFuOw0KKw0KKwlpbnQJCQkJc2Nf
 cnhfbm87DQorCWludAkJCQlzY190eF9ubzsNCisNCisJdWludDE2X3QJCQltYWNiYnBfcmV2
 Ow0KKwl1aW50OF90CQkJCXJmX3JldjsNCisJdWludDhfdAkJCQlyZmZyZXE7DQorDQorCXVz
 YmRfeGZlcl9oYW5kbGUJCWFtcnJfeGZlcjsNCisNCisJdXNiZF9waXBlX2hhbmRsZQkJc2Nf
 cnhfcGlwZWg7DQorCXVzYmRfcGlwZV9oYW5kbGUJCXNjX3R4X3BpcGVoOw0KKw0KKwllbnVt
 IGllZWU4MDIxMV9zdGF0ZQkJc2Nfc3RhdGU7DQorCXN0cnVjdCB1c2JfdGFzawkJCXNjX3Rh
 c2s7DQorDQorCXN0cnVjdCBpZWVlODAyMTFfYW1yciAgICAgICAgCWFtcnI7DQorCXN0cnVj
 dCBpZWVlODAyMTFfYW1ycl9ub2RlICAgICAJYW1uOw0KKw0KKwlzdHJ1Y3QgcnVtX3J4X2Rh
 dGEJCXJ4X2RhdGFbUlQyNTczX1JYX0xJU1RfQ09VTlRdOw0KKwlzdHJ1Y3QgcnVtX3R4X2Rh
 dGEJCXR4X2RhdGFbUlQyNTczX1RYX0xJU1RfQ09VTlRdOw0KKwlpbnQJCQkJdHhfcXVldWVk
 Ow0KKw0KKwlzdHJ1Y3QgaWVlZTgwMjExX2JlYWNvbl9vZmZzZXRzCXNjX2JvOw0KKw0KKwlz
 dHJ1Y3QJbXR4CQkJc2NfbXR4Ow0KKw0KKwlzdHJ1Y3QgY2FsbG91dAkJCXNjYW5fY2g7DQor
 CXN0cnVjdCBjYWxsb3V0CQkJYW1ycl9jaDsNCisNCisJaW50CQkJCXNjX3R4X3RpbWVyOw0K
 Kw0KKwl1aW50MzJfdAkJCXN0YVs2XTsNCisJdWludDMyX3QJCQlyZl9yZWdzWzRdOw0KKwl1
 aW50OF90CQkJCXR4cG93WzQ0XTsNCisNCisJc3RydWN0IHsNCisJCXVpbnQ4X3QJdmFsOw0K
 KwkJdWludDhfdAlyZWc7DQorCX0gX19wYWNrZWQJCQliYnBfcHJvbVsxNl07DQorDQorCWlu
 dAkJCQlod19yYWRpbzsNCisJaW50CQkJCXJ4X2FudDsNCisJaW50CQkJCXR4X2FudDsNCisJ
 aW50CQkJCW5iX2FudDsNCisJaW50CQkJCWV4dF8yZ2h6X2xuYTsNCisJaW50CQkJCWV4dF81
 Z2h6X2xuYTsNCisJaW50CQkJCXJzc2lfMmdoel9jb3JyOw0KKwlpbnQJCQkJcnNzaV81Z2h6
 X2NvcnI7DQorCWludAkJCQlzaWZzOw0KKwl1aW50OF90CQkJCWJicDE3Ow0KKw0KKwlzdHJ1
 Y3QgYnBmX2lmICAgICAgKnNjX2RydmJwZjsNCisNCisJdW5pb24gew0KKwkJc3RydWN0IHJ1
 bV9yeF9yYWRpb3RhcF9oZWFkZXIgdGg7DQorCQl1aW50OF90CXBhZFs2NF07DQorCX0JCQkJ
 c2Nfcnh0YXB1Ow0KKyNkZWZpbmUgc2Nfcnh0YXAJc2Nfcnh0YXB1LnRoDQorCWludAkJCQlz
 Y19yeHRhcF9sZW47DQorDQorCXVuaW9uIHsNCisJCXN0cnVjdCBydW1fdHhfcmFkaW90YXBf
 aGVhZGVyIHRoOw0KKwkJdWludDhfdAlwYWRbNjRdOw0KKwl9CQkJCXNjX3R4dGFwdTsNCisj
 ZGVmaW5lIHNjX3R4dGFwCXNjX3R4dGFwdS50aA0KKwlpbnQJCQkJc2NfdHh0YXBfbGVuOw0K
 K307DQorDQorI2lmIDANCisjZGVmaW5lIFJVTV9MT0NLKHNjKSAgICBtdHhfbG9jaygmKHNj
 KS0+c2NfbXR4KQ0KKyNkZWZpbmUgUlVNX1VOTE9DSyhzYykgIG10eF91bmxvY2soJihzYykt
 PnNjX210eCkNCisjZWxzZQ0KKyNkZWZpbmUgUlVNX0xPQ0soc2MpICAgIGRvIHsgKChzYykg
 PSAoc2MpKTsgbXR4X2xvY2soJkdpYW50KTsgfSB3aGlsZSAoMCkNCisjZGVmaW5lIFJVTV9V
 TkxPQ0soc2MpICBtdHhfdW5sb2NrKCZHaWFudCkNCisjZW5kaWYNCisNCisNCkluZGV4OiBz
 eXMvZGV2L3VzYi91c2JkZXZzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2
 cy9zcmMvc3lzL2Rldi91c2IvdXNiZGV2cyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjkx
 DQpkaWZmIC11IC1yMS4yOTEgdXNiZGV2cw0KLS0tIHN5cy9kZXYvdXNiL3VzYmRldnMJMTMg
 QXByIDIwMDcgMTg6MTU6MDcgLTAwMDAJMS4yOTENCisrKyBzeXMvZGV2L3VzYi91c2JkZXZz
 CTIyIEFwciAyMDA3IDA4OjAxOjU1IC0wMDAwDQpAQCAtMzU1LDYgKzM1NSw3IEBADQogdmVu
 ZG9yIERJR0lUQUxTVFJFQU0JMHgwNzRlCURpZ2l0YWwgU3RyZWFtDQogdmVuZG9yIEFVUkVB
 TAkJMHgwNzU1CUF1cmVhbA0KIHZlbmRvciBNSURJTUFOCQkweDA3NjMJTWlkaW1hbg0KK3Zl
 bmRvciBTVVJFQ09NCQkweDA3NjkJU3VyZWNvbSBUZWNobm9sb2d5DQogdmVuZG9yIExJTktT
 WVMyCQkweDA3N2IJTGlua3N5cw0KIHZlbmRvciBHUklGRklOCQkweDA3N2QJR3JpZmZpbg0K
 IHZlbmRvciBTQU5ESVNLCQkweDA3ODEJU2FuRGlzaw0KQEAgLTM4NCw2ICszODUsNyBAQA0K
 IHZlbmRvciBBVkVSTUVESUEJMHgwN2NhCUFWZXJNZWRpYQ0KIHZlbmRvciBTSUlHCQkweDA3
 Y2MJU0lJRw0KIHZlbmRvciBDQVNJTwkJMHgwN2NmCUNBU0lPDQordmVuZG9yIERMSU5LMgkJ
 MHgwN2QxCUQtTGluaw0KIHZlbmRvciBBUFRJTwkJMHgwN2QyCUFwdGlvDQogdmVuZG9yIEFS
 QVNBTgkJMHgwN2RhCUFyYXNhbg0KIHZlbmRvciBBTExJRURDQUJMRQkweDA3ZTYJQWxsaWVk
 IENhYmxlDQpAQCAtNDg3LDYgKzQ4OSw3IEBADQogdmVuZG9yIEFDREMJCTB4MGQ3ZQlBQ0RD
 DQogdmVuZG9yIEFCQwkJMHgwZDhjCUFCQw0KIHZlbmRvciBDT05DRVBUUk9OSUMJMHgwZDhl
 CUNvbmNlcHRyb25pYw0KK3ZlbmRvciBTSVRFQ09NRVUgICAgMHgwZGY2ICBTaXRlY29tIEV1
 cm9wZQ0KIHZlbmRvciBNU0kJCTB4MGRiMAlNaWNybyBTdGFyIEludGVybmF0aW9uYWwNCiB2
 ZW5kb3IgSEFXS0lORwkJMHgwZTY2CUhhd2tpbmcNCiB2ZW5kb3IgR01BVEUJCTB4MGU3ZQlH
 Lk1hdGUsIEluYw0KQEAgLTUxNywxMCArNTIwLDEyIEBADQogdmVuZG9yIEhVQVdFSQkJMHgx
 MmQxCUh1YXdlaSBUZWNobm9sb2dpZXMNCiB2ZW5kb3IgQUlOQ09NTQkJMHgxMmZkCUFpbmNv
 bW0NCiB2ZW5kb3IgTU9CSUxJVFkJCTB4MTM0MglNb2JpbGl0eQ0KK3ZlbmRvciBESUNLU01J
 VEgJMHgxMzcxCURpY2sgU21pdGggRWxlY3Ryb25pY3MNCiB2ZW5kb3IgTElOS1NZUzQJCTB4
 MTNiMQlMaW5rc3lzDQogdmVuZG9yIFNIQVJLCQkweDEzZDIJU2hhcmsNCiB2ZW5kb3IgTk9W
 QVRFTAkJMHgxNDEwCU5vdmF0ZWwgV2lyZWxlc3MNCiB2ZW5kb3IgUkFESU9TSEFDSwkweDE0
 NTMJUmFkaW8gU2hhY2sNCit2ZW5kb3IgSFVBV0VJM0NPTQkweDE0NzIJSHVhd2VpIDNDb20N
 CiB2ZW5kb3IgU0lMSUNPTQkJMHgxNDg1CVNpbGljb20NCiB2ZW5kb3IgUkFMSU5LCQkweDE0
 OGYJUmFsaW5rIFRlY2hub2xvZ3kNCiB2ZW5kb3IgSU1BR0lOQVRJT04JMHgxNDlhCUltYWdp
 bmF0aW9uIFRlY2hub2xvZ2llcw0KQEAgLTUzMSwxNCArNTM2LDE3IEBADQogdmVuZG9yIFNP
 SE9XQVJFCQkweDE1ZTgJU09IT3dhcmUNCiB2ZW5kb3IgVU1BWAkJMHgxNjA2CVVNQVgNCiB2
 ZW5kb3IgSU5TSURFT1VUCTB4MTYwOAlJbnNpZGUgT3V0IE5ldHdvcmtzDQordmVuZG9yIEdP
 T0RXQVkgICAgICAweDE2MzEgIEdvb2QgV2F5IFRlY2hub2xvZ3kNCiB2ZW5kb3IgRU5UUkVH
 QQkJMHgxNjQ1CUVudHJlZ2ENCiB2ZW5kb3IgQUNUSU9OVEVDCTB4MTY2OAlBY3Rpb250ZWMN
 CiB2ZW5kb3IgQVRIRVJPUwkJMHgxNjhjCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMNCiB2ZW5k
 b3IgR0lHQVNFVAkJMHgxNjkwCUdpZ2FzZXQNCiB2ZW5kb3IgR0xPQkFMU1VOCTB4MTZhYglH
 bG9iYWwgU3VuIFRlY2hub2xvZ3kNCiB2ZW5kb3IgQ01PVEVDSAkJMHgxNmQ4CUNNT1RFQ0gg
 Q08uLCBMVEQuDQordmVuZG9yIFFDT00gICAgICAgICAweDE4ZTggIFFjb20NCiB2ZW5kb3Ig
 TElOS1NZUzMJCTB4MTkxNQlMaW5rc3lzDQogdmVuZG9yIERMSU5LCQkweDIwMDEJRC1MaW5r
 DQordmVuZG9yIFBMQU5FWDIgICAgICAweDIwMTkgIFBsYW5leCBDb21tdW5pY2F0aW9ucw0K
 IHZlbmRvciBFUklDU1NPTgkJMHgyMjgyCUVyaWNzc29uDQogdmVuZG9yIE1PVE9ST0xBMgkw
 eDIyYjgJTW90b3JvbGENCiB2ZW5kb3IgVFJJUFBMSVRFCTB4MjQ3OAlUcmlwcC1MaXRlDQpA
 QCAtNTU5LDcgKzU2Nyw3IEBADQogdmVuZG9yIE9OU1BFQzIJCTB4NTVhYQlPblNwZWMNCiB2
 ZW5kb3IgWklOV0VMTAkJMHg1YTU3CVppbndlbGwNCiB2ZW5kb3IgU0lURUNPTQkJMHg2MTg5
 CVNpdGVjb20NCi12ZW5kb3IgQVJLTUlDUk8JCTB4NjU0NwlBcmttaWNybyBUZWNobm9sb2dp
 ZXMNCit2ZW5kb3IgQVJLTUlDUk8gICAgIDB4NjU0NyAgQXJrbWljcm8gVGVjaG5vbG9naWVz
 DQogdmVuZG9yIElOVEVMCQkweDgwODYJSW50ZWwNCiB2ZW5kb3IgSFAyCQkweGYwMDMJSGV3
 bGV0dCBQYWNrYXJkDQogDQpAQCAtNTk0LDYgKzYwMiw3IEBADQogcHJvZHVjdCBBQk9DT00g
 WFg4CQkweDQxMDIJWFg4DQogcHJvZHVjdCBBQk9DT00gWFg5CQkweDQxMDQJWFg5DQogcHJv
 ZHVjdCBBQk9DT00gWFgxMAkJMHhhYmMxCVhYMTANCitwcm9kdWN0IEFCT0NPTSBSVDI1NzMJ
 MHhiMjFkCVJUMjU3Mw0KIA0KIC8qIEFjY3RvbiBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgQUND
 VE9OIFVTQjMyMF9FQwkweDEwNDYJVVNCMzIwLUVDIEV0aGVybmV0DQpAQCAtNjkyLDcgKzcw
 MSw3IEBADQogcHJvZHVjdCBBUFBMRSBJUE9ETkFOTwkJMHgxMjBhCWlQb2QgTmFubw0KIA0K
 IC8qIEFya21pY3JvIFRlY2hub2xvZ2llcyAqLw0KLXByb2R1Y3QgQVJLTUlDUk8gQVJLMzEx
 NgkweDAyMzIJQVJLMzExNiBTZXJpYWwNCitwcm9kdWN0IEFSS01JQ1JPIEFSSzMxMTYgICAg
 ICAweDAyMzIgIEFSSzMxMTYgU2VyaWFsDQogDQogLyogQXNhaGkgT3B0aWNhbCBwcm9kdWN0
 cyAqLw0KIHByb2R1Y3QgQVNBSElPUFRJQ0FMIE9QVElPMjMwCTB4MDAwNAlEaWdpdGFsIGNh
 bWVyYQ0KQEAgLTcwMyw2ICs3MTIsNyBAQA0KIA0KIC8qIEFTVVMgcHJvZHVjdHMgKi8NCiBw
 cm9kdWN0IEFTVVMgV0wxNjdHCQkweDE3MDcJV0wtMTY3ZyB3aXJlbGVzcyBhZGFwdGVyDQor
 cHJvZHVjdCBBU1VTIFJUMjU3MwkJMHgxNzIzCVJUMjU3Mw0KIA0KIC8qIEFUZW4gcHJvZHVj
 dHMgKi8NCiBwcm9kdWN0IEFURU4gVUMxMjg0CQkweDIwMDEJUGFyYWxsZWwgcHJpbnRlcg0K
 QEAgLTc0MCw5ICs3NTAsMTIgQEANCiBwcm9kdWN0IEJFTEtJTiBGNVUxMDkJCTB4MDEwOQlG
 NVUxMDkgU2VyaWFsDQogcHJvZHVjdCBCRUxLSU4gRjVVMjA4CQkweDAyMDgJRjVVMjA4IFZp
 ZGVvQnVzIElJDQogcHJvZHVjdCBCRUxLSU4gRjVVNDA5CQkweDA0MDkJRjVVNDA5IFNlcmlh
 bA0KLXByb2R1Y3QgQkVMS0lOIEY2QzU1MEFWUgkweDA1NTEJRjZDNTUwLUFWUiBVUFMNCitw
 cm9kdWN0IEJFTEtJTiBGNkM1NTBBVlIgICAgMHgwNTUxICBGNkM1NTAtQVZSIFVQUw0KIHBy
 b2R1Y3QgQkVMS0lOIEY1VTEyMAkJMHgxMjAzCUY1VTEyMC1QQyBIdWINCiBwcm9kdWN0IEJF
 TEtJTiBGNUQ3MDUwCQkweDcwNTAJRjVENzA1MCB3aXJlbGVzcyBhZGFwdGVyDQorcHJvZHVj
 dCBCRUxLSU4gRjVENzA1MEEJCTB4NzA1YQlGNUQ3MDVBIDU0ZyBVU0IgTmV0d29yayBBZGFw
 dGVyDQorcHJvZHVjdCBCRUxLSU4gRjVEOTA1MFYzCTB4OTA1YglGNUQ5MDUwIHZlciAzDQor
 DQogDQogLyogQmlsbGlvbnRvbiBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgQklMTElPTlRPTiBV
 U0IxMDAJMHgwOTg2CVVTQjEwME4gMTAvMTAwIEZhc3RFdGhlcm5ldA0KQEAgLTg0NSw3ICs4
 NTgsNyBAQA0KIC8qIEN5cHJlc3MgU2VtaWNvbmR1Y3RvciBwcm9kdWN0cyAqLw0KIHByb2R1
 Y3QgQ1lQUkVTUyBNT1VTRQkJMHgwMDAxCW1vdXNlDQogcHJvZHVjdCBDWVBSRVNTIFRIRVJN
 TwkJMHgwMDAyCXRoZXJtb21ldGVyDQotcHJvZHVjdCBDWVBSRVNTIFdJU1BZCQkweDBiYWQJ
 TWV0YUdlZWsgV2ktU3B5DQorcHJvZHVjdCBDWVBSRVNTIFdJU1BZICAgICAgICAgMHgwYmFk
 ICBNZXRhR2VlayBXaS1TcHkNCiBwcm9kdWN0IENZUFJFU1MgRk1SQURJTwkJMHgxMDAyCUZN
 IFJhZGlvDQogcHJvZHVjdCBDWVBSRVNTIFNMSU1fSFVCCTB4NjU2MAlTbGltIEh1Yg0KIA0K
 QEAgLTg2Niw2ICs4NzksMTAgQEANCiAvKiBEaWFtb25kIHByb2R1Y3RzICovDQogcHJvZHVj
 dCBESUFNT05EIFJJTzUwMFVTQgkweDAwMDEJUmlvIDUwMCBVU0INCiANCisvKiBEaWNrIFNt
 aXRoIEVsZWN0cm9uaWNzIChyZWFsbHkgQy1OZXQpIHByb2R1Y3RzICovDQorcHJvZHVjdCBE
 SUNLU01JVEggUlQyNTczCTB4OTAyMglSVDI1NzMNCitwcm9kdWN0IERJQ0tTTUlUSCBDV0Q4
 NTRGCTB4OTAzMglDLU5ldCBDV0QtODU0IHJldiBGDQorDQogLyogRGlnaSBJbnRlcm5hdGlv
 bmFsIHByb2R1Y3RzICovDQogcHJvZHVjdCBESUdJIEFDQ0VMRVBPUlQyCTB4MDAwMglBY2Nl
 bGVQb3J0IFVTQiAyDQogcHJvZHVjdCBESUdJIEFDQ0VMRVBPUlQ0CTB4MDAwNAlBY2NlbGVQ
 b3J0IFVTQiA0DQpAQCAtODkxLDYgKzkwOCw4IEBADQogcHJvZHVjdCBETElOSyBEU0I2NTBU
 WDMJCTB4NDAwYgkxMC8xMDAgZXRoZXJuZXQNCiBwcm9kdWN0IERMSU5LIERTQjY1MFRYMgkJ
 MHg0MTAyCTEwLzEwMCBldGhlcm5ldA0KIHByb2R1Y3QgRExJTksgRFNCNjUwCQkweGFiYzEJ
 MTAvMTAwIGV0aGVybmV0DQorcHJvZHVjdCBETElOSzIgRFdMRzEyMkMxCTB4M2MwMwlEV0wt
 RzEyMiByZXYgQzENCitwcm9kdWN0IERMSU5LMiBXVUExMzQwCQkweDNjMDQJV1VBLTEzNDAN
 CiANCiAvKiBFSVpPIHByb2R1Y3RzICovDQogcHJvZHVjdCBFSVpPIEhVQgkJMHgwMDAwCWh1
 Yg0KQEAgLTk0OCwxMSArOTY3LDExIEBADQogcHJvZHVjdCBFUFNPTiAxNjcwCQkweDAxMWYJ
 UGVyZmVjdGlvbiAxNjcwIHNjYW5uZXINCiBwcm9kdWN0IEVQU09OIDEyNzAJCTB4MDEyMAlQ
 ZXJmZWN0aW9uIDEyNzAgc2Nhbm5lcg0KIHByb2R1Y3QgRVBTT04gMjQ4MAkJMHgwMTIxICBQ
 ZXJmZWN0aW9uIDI0ODAgc2Nhbm5lcg0KLXByb2R1Y3QgRVBTT04gMzU5MAkJMHgwMTIyCVBl
 cmZlY3Rpb24gMzU5MCBzY2FubmVyDQotcHJvZHVjdCBFUFNPTiA0OTkwCQkweDAxMmEJUGVy
 ZmVjdGlvbiA0OTkwIFBob3RvIHNjYW5uZXINCitwcm9kdWN0IEVQU09OIDM1OTAgICAgICAg
 ICAgICAweDAxMjIgIFBlcmZlY3Rpb24gMzU5MCBzY2FubmVyDQorcHJvZHVjdCBFUFNPTiA0
 OTkwICAgICAgICAgICAgMHgwMTJhICBQZXJmZWN0aW9uIDQ5OTAgUGhvdG8gc2Nhbm5lcg0K
 IHByb2R1Y3QgRVBTT04gMzUwMAkJMHgwODBlCUNYLTM1MDAvMzYwMC8zNjUwIE1GUA0KIHBy
 b2R1Y3QgRVBTT04gUlg0MjUJCTB4MDgwZglTdHlsdXMgUGhvdG8gUlg0MjUgc2Nhbm5lcg0K
 LXByb2R1Y3QgRVBTT04gNDIwMAkJMHgwODIwICBDWDQyMDAgTVAgc2Nhbm5lcg0KK3Byb2R1
 Y3QgRVBTT04gNDIwMCAgICAgICAgICAgIDB4MDgyMCAgQ1g0MjAwIE1QIHNjYW5uZXINCiAN
 CiAvKiBlLVRFSyBMYWJzIHByb2R1Y3RzICovDQogcHJvZHVjdCBFVEVLIDFDT00JCTB4ODAw
 NwlTZXJpYWwNCkBAIC0xMDAwLDYgKzEwMTksNyBAQA0KIHByb2R1Y3QgR0lHQUJZVEUgR05C
 UjQwMlcJMHg4MDAyCUdOLUJSNDAyVw0KIHByb2R1Y3QgR0lHQUJZVEUgR05XTEJNMTAxCTB4
 ODAwMwlHTi1XTEJNMTAxDQogcHJvZHVjdCBHSUdBQllURSBHTldCS0cJCTB4ODAwNwlHTi1X
 QktHDQorcHJvZHVjdCBHSUdBQllURSBHTldCMDFHUyAgIDB4ODAwOCAgR04tV0IwMUdTDQog
 DQogLyogR2lnYXNldCBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgR0lHQVNFVCBXTEFOCQkweDA3
 MDEJV0xBTg0KQEAgLTEwOTMsNiArMTExMywxMiBAQA0KIC8qIEhVQVdFSSBwcm9kdWN0cyAq
 Lw0KIHByb2R1Y3QgSFVBV0VJIE1PQklMRQkJMHgxMDAxCUh1YXdlaSBNb2JpbGUNCiANCisv
 KiBIVUFXRUkgcHJvZHVjdHMgKi8NCitwcm9kdWN0IEhVQVdFSTNDT00gUlQyNTczCTB4MDAw
 OQlSVDI1NzMNCisNCisvKiBHb29kIFdheSBUZWNobm9sb2d5IHByb2R1Y3RzICovDQorcHJv
 ZHVjdCBHT09EV0FZIFJUMjU3MyAgICAgIDB4YzAxOSAgUlQyNTczDQorDQogLyogSUJNIENv
 cnBvcmF0aW9uICovDQogcHJvZHVjdCBJQk0gVVNCQ0RST01EUklWRQkweDQ0MjcJVVNCIENE
 LVJPTSBEcml2ZQ0KIA0KQEAgLTEyMzYsNiArMTI2Miw3IEBADQogcHJvZHVjdCBMSU5LU1lT
 NCBXVVNCNTRHCTB4MDAwZAlXVVNCNTRHIHdpcmVsZXNzIGFkYXB0ZXINCiBwcm9kdWN0IExJ
 TktTWVM0IFdVU0I1NEdQCTB4MDAxMQlXVVNCNTRHUCB3aXJlbGVzcyBhZGFwdGVyDQogcHJv
 ZHVjdCBMSU5LU1lTNCBIVTIwMFRTCTB4MDAxYQlIVTIwMFRTIHdpcmVsZXNzIGFkYXB0ZXIN
 Citwcm9kdWN0IExJTktTWVM0IFdVU0I1NEdDCTB4MDAyMAlXVVNCNTRHQw0KIA0KIC8qIExv
 Z2l0ZWNoIHByb2R1Y3RzICovDQogcHJvZHVjdCBMT0dJVEVDSCBNMjQ1MgkJMHgwMjAzCU0y
 NDUyIGtleWJvYXJkDQpAQCAtMTI1MSwxMSArMTI3OCwxMSBAQA0KIHByb2R1Y3QgTE9HSVRF
 Q0ggV01NT1VTRQkweGMwMDQJV2luZ01hbiBHYW1pbmcgTW91c2UNCiBwcm9kdWN0IExPR0lU
 RUNIIEJENTgJCTB4YzAwYwlCRDU4IG1vdXNlDQogcHJvZHVjdCBMT0dJVEVDSCBVTjU4QQkJ
 MHhjMDMwCWlGZWVsIE1vdXNlDQotcHJvZHVjdCBMT0dJVEVDSCBVTjUzQgkJMHhjMDMyCWlG
 ZWVsIE1vdXNlTWFuDQorcHJvZHVjdCBMT0dJVEVDSCBVTjUzQiAgICAgIDB4YzAzMiAgaUZl
 ZWwgTW91c2VNYW4NCiBwcm9kdWN0IExPR0lURUNIIFdNUEFECQkweGMyMDgJV2luZ01hbiBH
 YW1lUGFkIEV4dHJlbWUNCiBwcm9kdWN0IExPR0lURUNIIFdNUlBBRAkJMHhjMjBhCVdpbmdN
 YW4gUnVtYmxlUGFkDQogcHJvZHVjdCBMT0dJVEVDSCBXTUpPWQkJMHhjMjgxCVdpbmdNYW4g
 Rm9yY2Ugam95c3RpY2sNCi1wcm9kdWN0IExPR0lURUNIIEJCMTMJCTB4YzQwMQlVU0ItUFMv
 MiBUcmFja2JhbGwNCitwcm9kdWN0IExPR0lURUNIIEJCMTMgICAgICAgMHhjNDAxICBVU0It
 UFMvMiBUcmFja2JhbGwNCiBwcm9kdWN0IExPR0lURUNIIFJLNTMJCTB4YzUwMQlDb3JkbGVz
 cyBtb3VzZQ0KIHByb2R1Y3QgTE9HSVRFQ0ggUkI2CQkweGM1MDMJQ29yZGxlc3Mga2V5Ym9h
 cmQNCiBwcm9kdWN0IExPR0lURUNIIE1YNzAwCQkweGM1MDYJQ29yZGxlc3Mgb3B0aWNhbCBt
 b3VzZQ0KQEAgLTEzMTEsNiArMTMzOCw5IEBADQogcHJvZHVjdCBNU0kgUlQyNTcwCQkweDY4
 NjEJUlQyNTcwDQogcHJvZHVjdCBNU0kgUlQyNTcwXzIJCTB4Njg2NQlSVDI1NzANCiBwcm9k
 dWN0IE1TSSBSVDI1NzBfMwkJMHg2ODY5CVJUMjU3MA0KK3Byb2R1Y3QgTVNJIFJUMjU3MwkJ
 MHg2ODc3CVJUMjU3Mw0KK3Byb2R1Y3QgTVNJIFJUMjU3M18yCQkweGE4NjEJUlQyNTczDQor
 cHJvZHVjdCBNU0kgUlQyNTczXzMJCTB4YTg3NAlSVDI1NzMNCiANCiAvKiBNaWNyb3NvZnQg
 cHJvZHVjdHMgKi8NCiBwcm9kdWN0IE1JQ1JPU09GVCBTSURFUFJFQwkweDAwMDgJU2lkZVdp
 bmRlciBQcmVjaXNpb24gUHJvDQpAQCAtMTM5Nyw3ICsxNDI3LDcgQEANCiANCiAvKiBOZXRn
 ZWFyIHByb2R1Y3RzICovDQogcHJvZHVjdCBORVRHRUFSIEVBMTAxCQkweDEwMDEJRXRoZXJu
 ZXQNCi1wcm9kdWN0IE5FVEdFQVIgRkExMDEJCTB4MTAyMAlFdGhlcm5ldCAxMC8xMDAsIFVT
 QjEuMQ0KK3Byb2R1Y3QgTkVUR0VBUiBGQTEwMSAgICAgICAgIDB4MTAyMCAgRXRoZXJuZXQg
 MTAvMTAwLCBVU0IxLjENCiBwcm9kdWN0IE5FVEdFQVIgRkExMjAJCTB4MTA0MAlVU0IgMi4w
 IEV0aGVybmV0DQogcHJvZHVjdCBORVRHRUFSMyBXRzExMVQJCTB4NDI1MAlXRzExMVQNCiBw
 cm9kdWN0IE5FVEdFQVIzIFdHMTExVF9ORgkweDQyNTEJV0cxMTFUIChubyBmaXJtd2FyZSkN
 CkBAIC0xNDExLDcgKzE0NDEsNyBAQA0KIHByb2R1Y3QgTklLT04gTFM0MAkJMHg0MDAwCUNv
 b2xTY2FuIExTNDAgRUQNCiANCiAvKiBOb3ZhVGVjaCBQcm9kdWN0cyAqLw0KLXByb2R1Y3Qg
 Tk9WQVRFQ0ggTlY5MDIJCTB4OTAyMCAgTm92YVRlY2ggTlYtOTAyVw0KK3Byb2R1Y3QgTk9W
 QVRFQ0ggTlY5MDIgICAgICAgICAgICAgICAgMHg5MDIwICBOb3ZhVGVjaCBOVi05MDJXDQog
 DQogLyogTm92YXRlbCBXaXJlbGVzcyBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgTk9WQVRFTCBV
 NzQwCQkweDE0MDAJTWVybGluIFU3NDANCkBAIC0xNDQxLDcgKzE0NzEsNyBAQA0KIHByb2R1
 Y3QgUEFMTSBaSVJFCQkweDAwNzAJUGFsbSBaaXJlDQogDQogLyogUGFuYXNvbmljIHByb2R1
 Y3RzICovDQotcHJvZHVjdCBQQU5BU09OSUMgS1hMODQwQU4JMHgwZDAxCUNELVIgRHJpdmUg
 S1hMLTg0MEFODQorcHJvZHVjdCBQQU5BU09OSUMgS1hMODQwQU4gICAgMHgwZDAxICBDRC1S
 IERyaXZlIEtYTC04NDBBTg0KIHByb2R1Y3QgUEFOQVNPTklDIEtYTFJXMzJBTgkweDBkMDkJ
 Q0QtUiBEcml2ZSBLWEwtUlczMkFODQogcHJvZHVjdCBQQU5BU09OSUMgS1hMQ0IyMEFOCTB4
 MGQwYQlDRC1SIERyaXZlIEtYTC1DQjIwQU4NCiBwcm9kdWN0IFBBTkFTT05JQyBLWExDQjM1
 QU4JMHgwZDBlCURWRC1ST00gJiBDRC1SL1JXDQpAQCAtMTQ2OSw2ICsxNDk5LDEwIEBADQog
 LyogUC5JLiBFbmdpbmVlcmluZyBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgUElFTkdJTkVFUklO
 RyBQUzJVU0IJMHgwMjBiCVBTMiB0byBNYWMgVVNCIEFkYXB0ZXINCiANCisvKiBQbGFuZXgg
 Q29tbXVuaWNhdGlvbnMgcHJvZHVjdHMgKi8NCitwcm9kdWN0IFBMQU5FWDIgR1dVU01NCQkw
 eGVkMDIJR1ctVVNNTQ0KKw0KKw0KIC8qIFBsZXh0b3IgQ29ycC4gKi8NCiBwcm9kdWN0IFBM
 RVhUT1IgNDBfMTJfNDBVCTB4MDAxMQlQbGV4V3JpdGVyIDQwLzEyLzQwVQ0KIA0KQEAgLTE1
 MTEsNiArMTU0NSwxMCBAQA0KIC8qIFB1dGVyY29tIHByb2R1Y3RzICovDQogcHJvZHVjdCBQ
 VVRFUkNPTSBVUEExMDAJCTB4MDQ3ZQlVU0ItMTI4NCBCUklER0UNCiANCisvKiBRY29tIHBy
 b2R1Y3RzICovDQorcHJvZHVjdCBRQ09NIFJUMjU3MwkJMHg2MTk2CVJUMjU3Mw0KK3Byb2R1
 Y3QgUUNPTSBSVDI1NzNfMgkJMHg2MjI5CVJUMjU3Mw0KKw0KIC8qIFF1YWxjb21tIHByb2R1
 Y3RzICovDQogcHJvZHVjdCBRVUFMQ09NTSBSV1RfRkNUCTB4MzEwMAlSV1QgRkNULUNETUEg
 MjAwMCAxeFJUVCBtb2RlbQ0KIHByb2R1Y3QgUVVBTENPTU0gQ0RNQV9NU00JMHgzMTk2CUNE
 TUEgVGVjaG5vbG9naWVzIE1TTSBtb2RlbQ0KQEAgLTE1MzEsNiArMTU2OSw4IEBADQogLyog
 UmFsaW5rIFRlY2hub2xvZ3kgcHJvZHVjdHMgKi8NCiBwcm9kdWN0IFJBTElOSyBSVDI1NzAJ
 CTB4MTcwNglSVDI1MDBVU0Igd2lyZWxlc3MgYWRhcHRlcg0KIHByb2R1Y3QgUkFMSU5LIFJU
 MjU3MF8yCQkweDI1NzAJUlQyNTAwVVNCIHdpcmVsZXNzIGFkYXB0ZXINCitwcm9kdWN0IFJB
 TElOSyBSVDI1NzMJCTB4MjU3MwlSVDI1NzMNCitwcm9kdWN0IFJBTElOSyBSVDI2NzEJCTB4
 MjY3MQlSVDI2NzENCiANCiAvKiBSZWFrVGVrIHByb2R1Y3RzICovDQogcHJvZHVjdCBSRUFM
 VEVLIFVTQktSMTAwCTB4ODE1MAlVU0JLUjEwMCBVU0IgRXRoZXJuZXQgKEdSRUVOIEhPVVNF
 KQ0KQEAgLTE2MDYsNyArMTY0Niw3IEBADQogcHJvZHVjdCBTSUlHMiBVUzIzMDgJCTB4MDQy
 MQlTZXJpYWwNCiANCiAvKiBTaWxpY29tIHByb2R1Y3RzICovDQotcHJvZHVjdCBTSUxJQ09N
 IEdQRQkJMHgwMDAyCVBzaW9uIEdvbGQgUG9ydCBFdGhlcm5ldA0KK3Byb2R1Y3QgU0lMSUNP
 TSBHUEUgICAgICAgICAgIDB4MDAwMiAgUHNpb24gR29sZCBQb3J0IEV0aGVybmV0DQogDQog
 LyogU2lsaWNvbiBQb3J0YWxzIEluYy4gKi8NCiBwcm9kdWN0IFNJTElDT05QT1JUQUxTIFlB
 UFBIX05GCTB4MDIwMAlZQVAgUGhvbmUgKG5vIGZpcm13YXJlKQ0KQEAgLTE2MTksNiArMTY1
 OSwxMSBAQA0KIHByb2R1Y3QgU0lURUNPTSBMTjAyOQkJMHgxODJkCVVTQiAyLjAgRXRoZXJu
 ZXQNCiBwcm9kdWN0IFNJVEVDT00gU0VSSUFMCQkweDIwNjgJVVNCIHRvIHNlcmlhbCBjYWJs
 ZSAodjIpDQogDQorLyogU2l0ZWNvbSBFdXJvcGUgcHJvZHVjdHMgKi8NCitwcm9kdWN0IFNJ
 VEVDT01FVSBXTDE3MgkJMHg5MGFjCVdMLTE3Mg0KK3Byb2R1Y3QgU0lURUNPTUVVIFdMMTEz
 UjIJMHg5NzEyCVdMLTExMyByZXYgMg0KKw0KKw0KIC8qIFNtYXJ0QnJpZGdlcyBwcm9kdWN0
 cyAqLw0KIHByb2R1Y3QgU01BUlRCUklER0VTIFNNQVJUTElOSwkweDAwMDEJU21hcnRMaW5r
 IFVTQiBldGhlcm5ldA0KIHByb2R1Y3QgU01BUlRCUklER0VTIFNNQVJUTklDCTB4MDAwMwlz
 bWFydE5JQyAyIFBuUCBldGhlcm5ldA0KQEAgLTE2ODQsNiArMTcyOSw5IEBADQogcHJvZHVj
 dCBESUFNT05EMiBSSU82MDBVU0IJMHg1MDAxCVJpbyA2MDAgVVNCDQogcHJvZHVjdCBESUFN
 T05EMiBSSU84MDBVU0IJMHg1MDAyCVJpbyA4MDAgVVNCDQogDQorLyogU3VyZWNvbSBUZWNo
 bm9sb2d5IHByb2R1Y3RzICovDQorcHJvZHVjdCBTVVJFQ09NIFJUMjU3MwkJMHgzMWYzCVJU
 MjU3Mw0KKw0KIC8qIFN5c3RlbSBUQUxLUywgSW5jLiAqLw0KIHByb2R1Y3QgU1lTVEVNVEFM
 S1MgU0dDWDJVTAkweDE5MjAJU0dDLVgyVUwNCiANCkluZGV4OiBzeXMvbW9kdWxlcy9ydDI1
 NzMvTWFrZWZpbGUNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiBzeXMvbW9kdWxlcy9ydDI1
 NzMvTWFrZWZpbGUNCmRpZmYgLU4gc3lzL21vZHVsZXMvcnQyNTczL01ha2VmaWxlDQotLS0g
 L2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisrKyBzeXMvbW9kdWxlcy9y
 dDI1NzMvTWFrZWZpbGUJMjIgQXByIDIwMDcgMDg6MDI6MDUgLTAwMDANCkBAIC0wLDAgKzEs
 MyBAQA0KK0tNT0Q9IHJ0MjU3Mw0KK0ZJUk1XUz0gcnVtLXJ0MjU3MzpydDI1NzM6MTAwDQor
 LmluY2x1ZGUgPGJzZC5rbW9kLm1rPg0KSW5kZXg6IHN5cy9tb2R1bGVzL3J1bS9NYWtlZmls
 ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IHN5cy9tb2R1bGVzL3J1bS9NYWtlZmlsZQ0K
 ZGlmZiAtTiBzeXMvbW9kdWxlcy9ydW0vTWFrZWZpbGUNCi0tLSAvZGV2L251bGwJMSBKYW4g
 MTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHN5cy9tb2R1bGVzL3J1bS9NYWtlZmlsZQkyMiBB
 cHIgMjAwNyAwODowMjowNSAtMDAwMA0KQEAgLTAsMCArMSwxMCBAQA0KKyMgJEZyZWVCU0Q6
 IHNyYy9zeXMvbW9kdWxlcy91cmFsL01ha2VmaWxlLHYgMS4xIDIwMDUvMDQvMTggMTg6NDc6
 MzggZGFtaWVuIEV4cCAkDQorDQorLlBBVEg6ICR7LkNVUkRJUn0vLi4vLi4vZGV2L3VzYg0K
 Ky5QQVRIOiAkey5DVVJESVJ9Ly4uLy4uL25ldDgwMjExDQorDQorS01PRCAgICA9IGlmX3J1
 bQ0KK1NSQ1MgICAgPSBpZl9ydW0uYyBvcHRfYmRnLmggb3B0X3VzYi5oIGRldmljZV9pZi5o
 IGJ1c19pZi5oIHVzYmRldnMuaA0KK1NSQ1MgICArPSBpZWVlODAyMTFfYW1yci5jDQorDQor
 LmluY2x1ZGUgPGJzZC5rbW9kLm1rPg0K
 --------------030900090303000507070905--


More information about the freebsd-usb mailing list