<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>36374</bug_id>
          
          <creation_ts>2019-03-25 09:38:17 +0300</creation_ts>
          <short_desc>Поддержка кодека cx2072x</short_desc>
          <delta_ts>2019-10-13 07:02:04 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kernel-image-un-def</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>patch, usability</keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Moskalenko">mav</reporter>
          <assigned_to name="Vitaly Chikunov">vt</assigned_to>
          <cc>kernelbot</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>179849</commentid>
    <comment_count>0</comment_count>
      <attachid>8058</attachid>
    <who name="Alex Moskalenko">mav</who>
    <bug_when>2019-03-25 09:38:17 +0300</bug_when>
    <thetext>Created attachment 8058
Патч с драйвером и config-x86_64

Просьба добавить поддержку i2c-кодека Conexant CX2072x, что позволит использовать встроенный звук на некоторых нетбуках (в частности, на ASUS R209HA).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184893</commentid>
    <comment_count>1</comment_count>
    <who name="Alex Moskalenko">mav</who>
    <bug_when>2019-10-13 07:01:32 +0300</bug_when>
    <thetext>С 5.3 драйвер в апстриме.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8058</attachid>
            <date>2019-03-25 09:38:17 +0300</date>
            <delta_ts>2019-03-25 09:38:17 +0300</delta_ts>
            <desc>Патч с драйвером и config-x86_64</desc>
            <filename>cx2072x.patch</filename>
            <type>text/plain</type>
            <size>95920</size>
            <attacher name="Alex Moskalenko">mav</attacher>
            
              <data encoding="base64">LS0tIGxpbnV4LTQuMjAvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2N4
MjA3MngudHh0CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC00
LjIwL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jeDIwNzJ4LnR4dAky
MDE4LTEyLTI2IDA2OjU1OjE3LjAwMDAwMDAwMCAtMDUwMApAQCAtMCwwICsxLDM2IEBAIAorQ29u
ZXhhbnQgQ1gyMDcyMS9DWDIwNzIzL0NYNzYwMSBhdWRpbyBDT0RFQworCitUaGUgZGV2aWNlcyBz
dXBwb3J0IEkyQyBvbmx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJs
ZSA6IE9uZSBvZiAiY254dCxjeDIwNzIxIiwgImNueHQsY3gyMDcyMyIsICJjbnh0LGN4NzYwMSIu
CisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDLCBpdCBz
aG91bGQgYmUgPDB4MzM+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSBjbG9ja3MgOiBw
aGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgZm9yIGNvZGVjIE1DTEsuCisgIC0gY2xvY2stbmFt
ZXMgOiBDbG9jayBuYW1lIHN0cmluZyBmb3IgJ2Nsb2NrcycgYXR0cmlidXRlLCBzaG91bGQgYmUg
Im1jbGsiLgorCitDT0RFQyBvdXRwdXQgcGluczoKKyAgIlBPUlRBIgktIEhlYWRwaG9uZQorICAi
UE9SVEciCS0gQ2xhc3MtRCBvdXRwdXQKKyAgIlBPUlRFIgktIExpbmUgb3V0CisKK0NPREVDIG91
dHB1dCBwaW5zIGZvciBDb25leGFudCBEU1AgY2hpcDoKKyAgIkFFQyBSRUYiCS0gQUVDIHJlZmVy
ZW5jZSBzaWduYWwKKworQ09ERUMgaW5wdXQgcGluczoKKyAgIlBPUlRCIgktIEFuYWxvZyBtaWMK
KyAgIlBPUlRDIgktIERpZ2l0YWwgbWljCisgICJQT1JURCIJLSBIZWFkc2V0IG1pYworCitFeGFt
cGxlOgorCitjb2RlYzogY3gyMDcyMUAzMyB7CisJY29tcGF0aWJsZSA9ICJjbnh0LGN4MjA3MjEi
OworCXJlZyA9IDwweDMzPjsKKwljbG9ja3MgPSA8JnNjbz47CisJY2xvY2stbmFtZXMgPSAibWNs
ayI7Cit9OwotLS0gbGludXgtNC4yMC9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcJMjAxOC0xMi0y
MyAxODo1NTo1OS4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTQuMjAvc291bmQvc29jL2NvZGVj
cy9LY29uZmlnCTIwMTgtMTItMjYgMDY6NTU6MTcuMDAwMDAwMDAwIC0wNTAwCkBAIC02OCw2ICs2
OCw3IEBAIAogCXNlbGVjdCBTTkRfU09DX0NTNDdMMjQgaWYgTUZEX0NTNDdMMjQKIAlzZWxlY3Qg
U05EX1NPQ19DUzUzTDMwIGlmIEkyQwogCXNlbGVjdCBTTkRfU09DX0NYMjA0NDIgaWYgVFRZCisJ
c2VsZWN0IFNORF9TT0NfQ1gyMDcyWCBpZiBJMkMKIAlzZWxlY3QgU05EX1NPQ19EQTcyMTAgaWYg
U05EX1NPQ19JMkNfQU5EX1NQSQogCXNlbGVjdCBTTkRfU09DX0RBNzIxMyBpZiBJMkMKIAlzZWxl
Y3QgU05EX1NPQ19EQTcyMTggaWYgSTJDCkBAIC01NTMsNiArNTU0LDEwIEBAIAogCXRyaXN0YXRl
CiAJZGVwZW5kcyBvbiBUVFkKIAorY29uZmlnIFNORF9TT0NfQ1gyMDcyWAorCXRyaXN0YXRlICJD
b25leGFudCBDWDIwNzJYIENPREVDIgorCWRlcGVuZHMgb24gSTJDCisKIGNvbmZpZyBTTkRfU09D
X0paNDc0MF9DT0RFQwogCXNlbGVjdCBSRUdNQVBfTU1JTwogCXRyaXN0YXRlCi0tLSBsaW51eC00
LjIwL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUJMjAxOC0xMi0yMyAxODo1NTo1OS4wMDAwMDAw
MDAgLTA1MDAKKysrIGxpbnV4LTQuMjAvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQkyMDE4LTEy
LTI2IDA2OjU1OjE3LjAwMDAwMDAwMCAtMDUwMApAQCAtNjMsNiArNjMsNyBAQCAKIHNuZC1zb2Mt
Y3M0N2wyNC1vYmpzIDo9IGNzNDdsMjQubwogc25kLXNvYy1jczUzbDMwLW9ianMgOj0gY3M1M2wz
MC5vCiBzbmQtc29jLWN4MjA0NDItb2JqcyA6PSBjeDIwNDQyLm8KK3NuZC1zb2MtY3gyMDcyeC1v
YmpzIDo9IGN4MjA3Mngubwogc25kLXNvYy1kYTcyMTAtb2JqcyA6PSBkYTcyMTAubwogc25kLXNv
Yy1kYTcyMTMtb2JqcyA6PSBkYTcyMTMubwogc25kLXNvYy1kYTcyMTgtb2JqcyA6PSBkYTcyMTgu
bwpAQCAtMzI4LDYgKzMyOSw3IEBAIAogb2JqLSQoQ09ORklHX1NORF9TT0NfQ1M0N0wyNCkJKz0g
c25kLXNvYy1jczQ3bDI0Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX0NTNTNMMzApCSs9IHNuZC1z
b2MtY3M1M2wzMC5vCiBvYmotJChDT05GSUdfU05EX1NPQ19DWDIwNDQyKQkrPSBzbmQtc29jLWN4
MjA0NDIubworb2JqLSQoQ09ORklHX1NORF9TT0NfQ1gyMDcyWCkJKz0gc25kLXNvYy1jeDIwNzJ4
Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX0RBNzIxMCkJKz0gc25kLXNvYy1kYTcyMTAubwogb2Jq
LSQoQ09ORklHX1NORF9TT0NfREE3MjEzKQkrPSBzbmQtc29jLWRhNzIxMy5vCiBvYmotJChDT05G
SUdfU05EX1NPQ19EQTcyMTgpCSs9IHNuZC1zb2MtZGE3MjE4Lm8KLS0tIGxpbnV4LTQuMjAvc291
bmQvc29jL2NvZGVjcy9jeDIwNzJ4LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1
MDAKKysrIGxpbnV4LTQuMjAvc291bmQvc29jL2NvZGVjcy9jeDIwNzJ4LmMJMjAxOC0xMi0yNiAw
Njo1NToxNy4wMDAwMDAwMDAgLTA1MDAKQEAgLTAsMCArMSwyMjYzIEBAIAorLyoKKyAqIEFMU0Eg
U29DIENYMjA3MjEvQ1gyMDcyMyBjb2RlYyBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQ6CShDKSAy
MDE3IENvbmV4YW50IFN5c3RlbXMsIEluYy4KKyAqIEF1dGhvcjoJU2ltb24gSG8sIDxTaW1vbi5o
b0Bjb25leGFudC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUT0RPOiBhZGQg
c3VwcG9ydCBmb3IgVERNIG1vZGUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor
I2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgor
I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvcG0uaD4KKyNpbmNsdWRl
IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncGlvLmg+Cisj
aW5jbHVkZSA8bGludXgvZ3Bpby5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRl
IDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgorI2luY2x1ZGUgPGxp
bnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KKyNpbmNsdWRlIDxsaW51
eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9j
bGsuaD4KKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgor
I2luY2x1ZGUgPHNvdW5kL3BjbS5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4KKyNp
bmNsdWRlIDxzb3VuZC9zb2MuaD4KKyNpbmNsdWRlIDxzb3VuZC9zb2MtZGFwbS5oPgorI2luY2x1
ZGUgPHNvdW5kL2luaXR2YWwuaD4KKyNpbmNsdWRlIDxzb3VuZC90bHYuaD4KKyNpbmNsdWRlIDxz
b3VuZC9qYWNrLmg+CisjaW5jbHVkZSAiY3gyMDcyeC5oIgorCisjZGVmaW5lIFBMTF9PVVRfSFpf
NDggKDEwMjQgKiAzICogNDgwMDApCisjZGVmaW5lIEJJVFNfUEVSX1NMT1QgOAorCisjZGVmaW5l
IENYMjA3MlhfUExCS19FUV9CQU5EX05VTSA3CisjZGVmaW5lIENYMjA3MlhfUExCS19FUV9DT0VG
X0xFTiAxMQorI2RlZmluZSBDWDIwNzJYX1BMQktfRFJDX1BBUk1fTEVOIDkKKyNkZWZpbmUgQ1gy
MDcyWF9DTEFTU0RfQU1QX0xFTiA2CisKKy8qIGNvZGVjIHByaXZhdGUgZGF0YSAqLworc3RydWN0
IGN4MjA3MnhfcHJpdiB7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCXN0cnVjdCBjbGsgKm1j
bGs7CisJdW5zaWduZWQgaW50IG1jbGtfcmF0ZTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3Ry
dWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQ7CisJc3RydWN0IHNuZF9zb2NfZGFpX2Ry
aXZlciAqZGFpX2RydjsKKwlpbnQgaXNfYmlhc29uOworCXN0cnVjdCBzbmRfc29jX2phY2sgKmph
Y2s7CisJYm9vbCBqYWNrX2RldGVjdGluZzsKKwlib29sIGphY2tfbWljOworCWludCBqYWNrX21v
ZGU7CisJaW50IGphY2tfZmxpcHM7CisJdW5zaWduZWQgaW50IGphY2tfc3RhdGU7CisJaW50IGF1
ZHNtdF9lbmFibGU7CisJdW5zaWduZWQgaW50IGJjbGtfcmF0aW87CisJYm9vbCBwbGJrX2VxX2Vu
OworCWJvb2wgcGxia19lcV9lbl9jaGFuZ2VkOworCWJvb2wgcGxia19lcV9jaGFuZ2VkOworCXU4
IHBsYmtfZXFbMl1bQ1gyMDcyWF9QTEJLX0VRX0JBTkRfTlVNXVtDWDIwNzJYX1BMQktfRVFfQ09F
Rl9MRU5dOworCWludCBwbGJrX2VxX2NoYW5uZWw7CisJYm9vbCBwbGJrX2RyY19lbjsKKwlib29s
IHBsYmtfZHJjX2VuX2NoYW5nZWQ7CisJYm9vbCBwbGJrX2RyY19jaGFuZ2VkOworCWJvb2wgcGxs
X2NoYW5nZWQ7CisJYm9vbCBpMnNwY21fY2hhbmdlZDsKKwlpbnQgc2FtcGxlX3NpemU7CisJaW50
IGZyYW1lX3NpemU7CisJaW50IHNhbXBsZV9yYXRlOworCXVuc2lnbmVkIGludCBkYWlfZm10Owor
CWludCB0ZG1fcnhfbWFzazsKKwlpbnQgdGRtX3R4X21hc2s7CisJaW50IHRkbV9zbG90X3dpZHRo
OworCWludCB0ZG1fc2xvdHM7CisJdTMyIHJldl9pZDsKKwlib29sIGVuX2FlY19yZWY7CisJdTgg
cGxia19kcmNbQ1gyMDcyWF9QTEJLX0RSQ19QQVJNX0xFTl07CisJdTggY2xhc3NkX2FtcFtDWDIw
NzJYX0NMQVNTRF9BTVBfTEVOXTsKKwlzdHJ1Y3QgbXV0ZXggZXFfY29lZmZfbG9jazsgLyogRVEg
RFNQIGxvY2sgKi8KK307CisKKy8qCisgKiBEQUMvQURDIFZvbHVtZQorICoKKyAqIG1heCA6IDc0
IDogMCBkQgorICoJICggaW4gMSBkQiAgc3RlcCApCisgKiBtaW4gOiAwIDogLTc0IGRCCisgKi8K
K3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShhZGNfdGx2LCAtNzQwMCwgMTAwLCAw
KTsKK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShkYWNfdGx2LCAtNzQwMCwgMTAw
LCAwKTsKK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShib29zdF90bHYsIDAsIDEy
MDAsIDApOworCitzdHJ1Y3QgQ1gyMDcyWF9FUV9DVFJMIHsKKwl1OCBjaDsKKwl1OCBiYW5kOwor
fTsKKworc3RhdGljIERFQ0xBUkVfVExWX0RCX1JBTkdFKGhwZl90bHYsCisJCTAsIDAsIFRMVl9E
Ql9TQ0FMRV9JVEVNKDEyMCwgMCwgMCksCisJCTEsIDYzLCBUTFZfREJfU0NBTEVfSVRFTSgzMCwg
MzAsIDApCispOworCisvKiBMb29rdXAgdGFibGUgZm9yIFBSRV9ESVYqLworc3RhdGljIHN0cnVj
dCB7CisJdW5zaWduZWQgaW50IG1jbGs7CisJdW5zaWduZWQgaW50IGRpdjsKK30gTUNMS19QUkVf
RElWW10gPSB7CisJeyA2MTQ0MDAwLCAxIH0sCisJeyAxMjI4ODAwMCwgMiB9LAorCXsgMTkyMDAw
MDAsIDMgfSwKKwl7IDI2MDAwMDAwLCA0IH0sCisJeyAyODIyNDAwMCwgNSB9LAorCXsgMzY4NjQw
MDAsIDYgfSwKKwl7IDM2ODY0MDAwLCA3IH0sCisJeyA0ODAwMDAwMCwgOCB9LAorCXsgNDkxNTIw
MDAsIDggfSwKK307CisKKy8qCisgKiBjeDIwNzJ4IHJlZ2lzdGVyIGNhY2hlLgorICovCitzdGF0
aWMgY29uc3Qgc3RydWN0IHJlZ19kZWZhdWx0IGN4MjA3MnhfcmVnX2RlZmF1bHRzW10gPSB7CisJ
eyBDWDIwNzJYX0FGR19QT1dFUl9TVEFURSwgMHgwMDAwMDAwMyB9LAorCXsgQ1gyMDcyWF9VTV9S
RVNQT05TRSwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9HUElPX0RBVEEsIDB4MDAwMDAwMDAg
fSwKKwl7IENYMjA3MlhfR1BJT19FTkFCTEUsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfR1BJ
T19ESVJFQ1RJT04sIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfR1BJT19XQUtFLCAweDAwMDAw
MDAwIH0sCisJeyBDWDIwNzJYX0dQSU9fVU1fRU5BQkxFLCAweDAwMDAwMDAwIH0sCisJeyBDWDIw
NzJYX0dQSU9fU1RJQ0tZX01BU0ssIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfREFDMV9DT05W
RVJURVJfRk9STUFULCAweDAwMDAwMDMxIH0sCisJeyBDWDIwNzJYX0RBQzFfQU1QX0dBSU5fUklH
SFQsIDB4MDAwMDAwNGEgfSwKKwl7IENYMjA3MlhfREFDMV9BTVBfR0FJTl9MRUZULCAweDAwMDAw
MDRhIH0sCisJeyBDWDIwNzJYX0RBQzFfUE9XRVJfU1RBVEUsIDB4MDAwMDA0MzMgfSwKKwl7IENY
MjA3MlhfREFDMV9DT05WRVJURVJfU1RSRUFNX0NIQU5ORUwsIDB4MDAwMDAwMDAgfSwKKwl7IENY
MjA3MlhfREFDMV9FQVBEX0VOQUJMRSwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9EQUMyX0NP
TlZFUlRFUl9GT1JNQVQsIDB4MDAwMDAwMzEgfSwKKwl7IENYMjA3MlhfREFDMl9BTVBfR0FJTl9S
SUdIVCwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9EQUMyX0FNUF9HQUlOX0xFRlQsIDB4MDAw
MDAwNGEgfSwKKwl7IENYMjA3MlhfREFDMl9QT1dFUl9TVEFURSwgMHgwMDAwMDQzMyB9LAorCXsg
Q1gyMDcyWF9EQUMyX0NPTlZFUlRFUl9TVFJFQU1fQ0hBTk5FTCwgMHgwMDAwMDAwMCB9LAorCXsg
Q1gyMDcyWF9BREMxX0NPTlZFUlRFUl9GT1JNQVQsIDB4MDAwMDAwMzEgfSwKKwl7IENYMjA3Mlhf
QURDMV9BTVBfR0FJTl9SSUdIVF8wLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX0FEQzFfQU1Q
X0dBSU5fTEVGVF8wLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklH
SFRfMSwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX0xFRlRfMSwgMHgw
MDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX1JJR0hUXzIsIDB4MDAwMDAwNGEg
fSwKKwl7IENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzIsIDB4MDAwMDAwNGEgfSwKKwl7IENY
MjA3MlhfQURDMV9BTVBfR0FJTl9SSUdIVF8zLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX0FE
QzFfQU1QX0dBSU5fTEVGVF8zLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX0FEQzFfQU1QX0dB
SU5fUklHSFRfNCwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX0xFRlRf
NCwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX1JJR0hUXzUsIDB4MDAw
MDAwNGEgfSwKKwl7IENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzUsIDB4MDAwMDAwNGEgfSwK
Kwl7IENYMjA3MlhfQURDMV9BTVBfR0FJTl9SSUdIVF82LCAweDAwMDAwMDRhIH0sCisJeyBDWDIw
NzJYX0FEQzFfQU1QX0dBSU5fTEVGVF82LCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX0FEQzFf
Q09OTkVDVElPTl9TRUxFQ1RfQ09OVFJPTCwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9BREMx
X1BPV0VSX1NUQVRFLCAweDAwMDAwNDMzIH0sCisJeyBDWDIwNzJYX0FEQzFfQ09OVkVSVEVSX1NU
UkVBTV9DSEFOTkVMLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX0FEQzJfQ09OVkVSVEVSX0ZP
Uk1BVCwgMHgwMDAwMDAzMSB9LAorCXsgQ1gyMDcyWF9BREMyX0FNUF9HQUlOX1JJR0hUXzAsIDB4
MDAwMDAwNGEgfSwKKwl7IENYMjA3MlhfQURDMl9BTVBfR0FJTl9MRUZUXzAsIDB4MDAwMDAwNGEg
fSwKKwl7IENYMjA3MlhfQURDMl9BTVBfR0FJTl9SSUdIVF8xLCAweDAwMDAwMDRhIH0sCisJeyBD
WDIwNzJYX0FEQzJfQU1QX0dBSU5fTEVGVF8xLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX0FE
QzJfQU1QX0dBSU5fUklHSFRfMiwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9BREMyX0FNUF9H
QUlOX0xFRlRfMiwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9BREMyX0NPTk5FQ1RJT05fU0VM
RUNUX0NPTlRST0wsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfQURDMl9QT1dFUl9TVEFURSwg
MHgwMDAwMDQzMyB9LAorCXsgQ1gyMDcyWF9BREMyX0NPTlZFUlRFUl9TVFJFQU1fQ0hBTk5FTCwg
MHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9QT1JUQV9DT05ORUNUSU9OX1NFTEVDVF9DVFJMLCAw
eDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRBX1BPV0VSX1NUQVRFLCAweDAwMDAwNDMzIH0s
CisJeyBDWDIwNzJYX1BPUlRBX1BJTl9DVFJMLCAweDAwMDAwMGMwIH0sCisJeyBDWDIwNzJYX1BP
UlRBX1VOU09MSUNJVEVEX1JFU1BPTlNFLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRB
X1BJTl9TRU5TRSwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9QT1JUQV9FQVBEX0JUTCwgMHgw
MDAwMDAwMiB9LAorCXsgQ1gyMDcyWF9QT1JUQl9QT1dFUl9TVEFURSwgMHgwMDAwMDQzMyB9LAor
CXsgQ1gyMDcyWF9QT1JUQl9QSU5fQ1RSTCwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9QT1JU
Ql9VTlNPTElDSVRFRF9SRVNQT05TRSwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9QT1JUQl9Q
SU5fU0VOU0UsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVEJfRUFQRF9CVEwsIDB4MDAw
MDAwMDIgfSwKKwl7IENYMjA3MlhfUE9SVEJfR0FJTl9SSUdIVCwgMHgwMDAwMDAwMCB9LAorCXsg
Q1gyMDcyWF9QT1JUQl9HQUlOX0xFRlQsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVENf
UE9XRVJfU1RBVEUsIDB4MDAwMDA0MzMgfSwKKwl7IENYMjA3MlhfUE9SVENfUElOX0NUUkwsIDB4
MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVENfR0FJTl9SSUdIVCwgMHgwMDAwMDAwMCB9LAor
CXsgQ1gyMDcyWF9QT1JUQ19HQUlOX0xFRlQsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9S
VERfUE9XRVJfU1RBVEUsIDB4MDAwMDA0MzMgfSwKKwl7IENYMjA3MlhfUE9SVERfUElOX0NUUkws
IDB4MDAwMDAwMjAgfSwKKwl7IENYMjA3MlhfUE9SVERfVU5TT0xJQ0lURURfUkVTUE9OU0UsIDB4
MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVERfUElOX1NFTlNFLCAweDAwMDAwMDAwIH0sCisJ
eyBDWDIwNzJYX1BPUlREX0dBSU5fUklHSFQsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9S
VERfR0FJTl9MRUZULCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRFX0NPTk5FQ1RJT05f
U0VMRUNUX0NUUkwsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVEVfUE9XRVJfU1RBVEUs
IDB4MDAwMDA0MzMgfSwKKwl7IENYMjA3MlhfUE9SVEVfUElOX0NUUkwsIDB4MDAwMDAwNDAgfSwK
Kwl7IENYMjA3MlhfUE9SVEVfVU5TT0xJQ0lURURfUkVTUE9OU0UsIDB4MDAwMDAwMDAgfSwKKwl7
IENYMjA3MlhfUE9SVEVfUElOX1NFTlNFLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRF
X0VBUERfQlRMLCAweDAwMDAwMDAyIH0sCisJeyBDWDIwNzJYX1BPUlRFX0dBSU5fUklHSFQsIDB4
MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVEVfR0FJTl9MRUZULCAweDAwMDAwMDAwIH0sCisJ
eyBDWDIwNzJYX1BPUlRGX1BPV0VSX1NUQVRFLCAweDAwMDAwNDMzIH0sCisJeyBDWDIwNzJYX1BP
UlRGX1BJTl9DVFJMLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRGX1VOU09MSUNJVEVE
X1JFU1BPTlNFLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRGX1BJTl9TRU5TRSwgMHgw
MDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9QT1JURl9HQUlOX1JJR0hULCAweDAwMDAwMDAwIH0sCisJ
eyBDWDIwNzJYX1BPUlRGX0dBSU5fTEVGVCwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9QT1JU
R19QT1dFUl9TVEFURSwgMHgwMDAwMDQzMyB9LAorCXsgQ1gyMDcyWF9QT1JUR19QSU5fQ1RSTCwg
MHgwMDAwMDA0MCB9LAorCXsgQ1gyMDcyWF9QT1JUR19DT05ORUNUSU9OX1NFTEVDVF9DVFJMLCAw
eDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRHX0VBUERfQlRMLCAweDAwMDAwMDAyIH0sCisJ
eyBDWDIwNzJYX1BPUlRNX1BPV0VSX1NUQVRFLCAweDAwMDAwNDMzIH0sCisJeyBDWDIwNzJYX1BP
UlRNX1BJTl9DVFJMLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX1BPUlRNX0NPTk5FQ1RJT05f
U0VMRUNUX0NUUkwsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfUE9SVE1fRUFQRF9CVEwsIDB4
MDAwMDAwMDIgfSwKKwl7IENYMjA3MlhfTUlYRVJfUE9XRVJfU1RBVEUsIDB4MDAwMDA0MzMgfSwK
Kwl7IENYMjA3MlhfTUlYRVJfR0FJTl9SSUdIVF8wLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJY
X01JWEVSX0dBSU5fTEVGVF8wLCAweDAwMDAwMDRhIH0sCisJeyBDWDIwNzJYX01JWEVSX0dBSU5f
UklHSFRfMSwgMHgwMDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9NSVhFUl9HQUlOX0xFRlRfMSwgMHgw
MDAwMDA0YSB9LAorCXsgQ1gyMDcyWF9TUEtSX0RSQ19FTkFCTEVfU1RFUCwgMHgwNDAwNjVhNCB9
LAorCXsgQ1gyMDcyWF9TUEtSX0RSQ19DT05UUk9MLCAweDAwN2IwMDI0IH0sCisJeyBDWDIwNzJY
X1NQS1JfRFJDX1RFU1QsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfRElHSVRBTF9CSU9TX1RF
U1QwLCAweDAwMWYwMDhhIH0sCisJeyBDWDIwNzJYX0RJR0lUQUxfQklPU19URVNUMiwgMHgwMDk5
MDAyNiB9LAorCXsgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDEsIDB4MDAwMTAwMDEgfSwKKwl7IENY
MjA3MlhfSTJTUENNX0NPTlRST0wyLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX0kyU1BDTV9D
T05UUk9MMywgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDQsIDB4MDAw
MDAwMDAgfSwKKwl7IENYMjA3MlhfSTJTUENNX0NPTlRST0w1LCAweDAwMDAwMDAwIH0sCisJeyBD
WDIwNzJYX0kyU1BDTV9DT05UUk9MNiwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9VTV9JTlRF
UlJVUFRfQ1JUTF9FLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJYX0NPREVDX1RFU1QyLCAweDAw
MDAwMDAwIH0sCisJeyBDWDIwNzJYX0NPREVDX1RFU1Q5LCAweDAwMDAwMDA0IH0sCisJeyBDWDIw
NzJYX0NPREVDX1RFU1QyMCwgMHgwMDAwMDYwMCB9LAorCXsgQ1gyMDcyWF9DT0RFQ19URVNUMjYs
IDB4MDAwMDAyMDggfSwKKwl7IENYMjA3MlhfQU5BTE9HX1RFU1Q0LCAweDAwMDAwMDAwIH0sCisJ
eyBDWDIwNzJYX0FOQUxPR19URVNUNSwgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9BTkFMT0df
VEVTVDYsIDB4MDAwMDA1OWEgfSwKKwl7IENYMjA3MlhfQU5BTE9HX1RFU1Q3LCAweDAwMDAwMGE3
IH0sCisJeyBDWDIwNzJYX0FOQUxPR19URVNUOCwgMHgwMDAwMDAxNyB9LAorCXsgQ1gyMDcyWF9B
TkFMT0dfVEVTVDksIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfQU5BTE9HX1RFU1QxMCwgMHgw
MDAwMDI4NSB9LAorCXsgQ1gyMDcyWF9BTkFMT0dfVEVTVDExLCAweDAwMDAwMDAwIH0sCisJeyBD
WDIwNzJYX0FOQUxPR19URVNUMTIsIDB4MDAwMDAwMDAgfSwKKwl7IENYMjA3MlhfQU5BTE9HX1RF
U1QxMywgMHgwMDAwMDAwMCB9LAorCXsgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxLCAweDAwMDAwMjQy
IH0sCisJeyBDWDIwNzJYX0RJR0lUQUxfVEVTVDExLCAweDAwMDAwMDAwIH0sCisJeyBDWDIwNzJY
X0RJR0lUQUxfVEVTVDEyLCAweDAwMDAwMDg0IH0sCisJeyBDWDIwNzJYX0RJR0lUQUxfVEVTVDE1
LCAweDAwMDAwMDc3IH0sCisJeyBDWDIwNzJYX0RJR0lUQUxfVEVTVDE2LCAweDAwMDAwMDIxIH0s
CisJeyBDWDIwNzJYX0RJR0lUQUxfVEVTVDE3LCAweDAwMDAwMDE4IH0sCisJeyBDWDIwNzJYX0RJ
R0lUQUxfVEVTVDE4LCAweDAwMDAwMDI0IH0sCisJeyBDWDIwNzJYX0RJR0lUQUxfVEVTVDE5LCAw
eDAwMDAwMDAxIH0sCisJeyBDWDIwNzJYX0RJR0lUQUxfVEVTVDIwLCAweDAwMDAwMDAyIH0sCit9
OworCisvKgorICogcmVnaXN0ZXIgcGF0Y2guCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVn
X3NlcXVlbmNlIGN4MjA3MnhfcGF0Y2hbXSA9IHsKKwl7IDB4NzFBNCwgMHgwODAgfSwgLyogREMg
b2Zmc2V0IENhbGlicmF0aW9uCSAgICovCisJeyAweDcxYTgsIDB4Mjg3IH0sIC8qIFNldCBtYXgg
c3BrIHBvd2VyIHRvIDEuNSBXICAgKi8KKwl7IDB4NzMyOCwgMHhhOGMgfSwgLyogU2V0IGF2ZXJh
Z2Ugc3BrIHBvd2VyIHRvIDEuNVcqLworCXsgMHg3MzEwLCAweGYwMSB9LCAvKgkJCQkgICAqLwor
CXsgMHg3MzI4LCAweGE4ZiB9LCAvKgkJCQkgICAqLworCXsgMHg3MTI0LCAweDAwMSB9LCAvKiBF
bmFibGUgMzAgSHogSGlnaCBwYXNzIGZpbHRlciovCisJeyAweDcxOGMsIDB4MzAwIH0sIC8qIERp
c2FibGUgUENCRUVQIHBhZAkgICAqLworCXsgMHg3MzFjLCAweDEwMCB9LCAvKiBEaXNhYmxlIFNu
TSBtb2RlCQkgICAqLworCXsgMHg2NDFjLCAweDAyMCB9LCAvKiBFbmFibGUgUG9ydEQgaW5wdXQJ
ICAgKi8KKwl7IDB4MDQ1OCwgMHgwNDAgfSwgLyogRW5hYmxlIEdQSU83IHBpbiBmb3IgYnV0dG9u
ICAqLworCXsgMHgwNDY0LCAweDA0MCB9LCAvKiBFbmFibGUgVU0gZm9yIEdQSU83CSAgICovCisJ
eyAweDA0MjAsIDB4MDgwIH0sIC8qIEVuYWJsZSBidXR0b24gcmVzcG9uc2UJICAgKi8KKwl7IDB4
NzIzMCwgMHgwYzQgfSwgLyogRW5hYmxlIGhlYWRzZXQgYnV0dG9uCSAgICovCisJeyAweDcyMDAs
IDB4NDE1IH0sIC8qIFBvd2VyIGRvd24gY2xhc3MtZCBkdXJpbmcgaWRsZSovCisJeyAweDZlMDQs
IDB4MDBmIH0sIC8qIEVuYWJsZSBJMlMgdHggICAgICAgICAgICAgICAgKi8KKwl7IDB4NmUwOCwg
MHgwMGYgfSwgLyogRW5hYmxlIEkyUyByeCAgICAgICAgICAgICAgICAqLworfTsKKworLyogcmV0
dXJuIHJlZ2lzdGVyIHNpemUgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgY3gyMDcyeF9yZWdpc3Rl
cl9zaXplKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKK3sKKwlzd2l0Y2gg
KHJlZykgeworCWNhc2UgQ1gyMDcyWF9WRU5ET1JfSUQ6CisJY2FzZSBDWDIwNzJYX1JFVklTSU9O
X0lEOgorCWNhc2UgQ1gyMDcyWF9QT1JUQV9QSU5fU0VOU0U6CisJY2FzZSBDWDIwNzJYX1BPUlRC
X1BJTl9TRU5TRToKKwljYXNlIENYMjA3MlhfUE9SVERfUElOX1NFTlNFOgorCWNhc2UgQ1gyMDcy
WF9QT1JURV9QSU5fU0VOU0U6CisJY2FzZSBDWDIwNzJYX1BPUlRGX1BJTl9TRU5TRToKKwljYXNl
IENYMjA3MlhfSTJTUENNX0NPTlRST0wxOgorCWNhc2UgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDI6
CisJY2FzZSBDWDIwNzJYX0kyU1BDTV9DT05UUk9MMzoKKwljYXNlIENYMjA3MlhfSTJTUENNX0NP
TlRST0w0OgorCWNhc2UgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDU6CisJY2FzZSBDWDIwNzJYX0ky
U1BDTV9DT05UUk9MNjoKKwljYXNlIENYMjA3MlhfVU1fSU5URVJSVVBUX0NSVExfRToKKwljYXNl
IENYMjA3MlhfRVFfR19DT0VGRjoKKwljYXNlIENYMjA3MlhfU1BLUl9EUkNfQ09OVFJPTDoKKwlj
YXNlIENYMjA3MlhfU1BLUl9EUkNfVEVTVDoKKwljYXNlIENYMjA3MlhfRElHSVRBTF9CSU9TX1RF
U1QwOgorCWNhc2UgQ1gyMDcyWF9ESUdJVEFMX0JJT1NfVEVTVDI6CisJCXJldHVybiA0OworCWNh
c2UgQ1gyMDcyWF9FUV9FTkFCTEVfQllQQVNTOgorCWNhc2UgQ1gyMDcyWF9FUV9CMF9DT0VGRjoK
KwljYXNlIENYMjA3MlhfRVFfQjFfQ09FRkY6CisJY2FzZSBDWDIwNzJYX0VRX0IyX0NPRUZGOgor
CWNhc2UgQ1gyMDcyWF9FUV9BMV9DT0VGRjoKKwljYXNlIENYMjA3MlhfRVFfQTJfQ09FRkY6CisJ
Y2FzZSBDWDIwNzJYX0RBQzFfQ09OVkVSVEVSX0ZPUk1BVDoKKwljYXNlIENYMjA3MlhfREFDMl9D
T05WRVJURVJfRk9STUFUOgorCWNhc2UgQ1gyMDcyWF9BREMxX0NPTlZFUlRFUl9GT1JNQVQ6CisJ
Y2FzZSBDWDIwNzJYX0FEQzJfQ09OVkVSVEVSX0ZPUk1BVDoKKwljYXNlIENYMjA3MlhfQ09ERUNf
VEVTVDI6CisJY2FzZSBDWDIwNzJYX0NPREVDX1RFU1Q5OgorCWNhc2UgQ1gyMDcyWF9DT0RFQ19U
RVNUMjA6CisJY2FzZSBDWDIwNzJYX0NPREVDX1RFU1QyNjoKKwljYXNlIENYMjA3MlhfQU5BTE9H
X1RFU1QzOgorCWNhc2UgQ1gyMDcyWF9BTkFMT0dfVEVTVDQ6CisJY2FzZSBDWDIwNzJYX0FOQUxP
R19URVNUNToKKwljYXNlIENYMjA3MlhfQU5BTE9HX1RFU1Q2OgorCWNhc2UgQ1gyMDcyWF9BTkFM
T0dfVEVTVDc6CisJY2FzZSBDWDIwNzJYX0FOQUxPR19URVNUODoKKwljYXNlIENYMjA3MlhfQU5B
TE9HX1RFU1Q5OgorCWNhc2UgQ1gyMDcyWF9BTkFMT0dfVEVTVDEwOgorCWNhc2UgQ1gyMDcyWF9B
TkFMT0dfVEVTVDExOgorCWNhc2UgQ1gyMDcyWF9BTkFMT0dfVEVTVDEyOgorCWNhc2UgQ1gyMDcy
WF9BTkFMT0dfVEVTVDEzOgorCWNhc2UgQ1gyMDcyWF9ESUdJVEFMX1RFU1QwOgorCWNhc2UgQ1gy
MDcyWF9ESUdJVEFMX1RFU1QxOgorCWNhc2UgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxMToKKwljYXNl
IENYMjA3MlhfRElHSVRBTF9URVNUMTI6CisJY2FzZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDE1Ogor
CWNhc2UgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxNjoKKwljYXNlIENYMjA3MlhfRElHSVRBTF9URVNU
MTc6CisJY2FzZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDE4OgorCWNhc2UgQ1gyMDcyWF9ESUdJVEFM
X1RFU1QxOToKKwljYXNlIENYMjA3MlhfRElHSVRBTF9URVNUMjA6CisJCXJldHVybiAyOworCWRl
ZmF1bHQ6CisJCXJldHVybiAxOworCX0KK30KKworc3RhdGljIGludCBjeDIwNzJ4X3JlZ193cml0
ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLAorCQkJICAgICB1bnNpZ25lZCBpbnQg
dmFsdWUpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGNvbnRleHQ7CisJdW5zaWdu
ZWQgaW50IGk7CisJdW5zaWduZWQgaW50IHNpemU7CisJdTggYnVmWzZdOworCWludCByZXQ7CisJ
c3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2OworCisJc2l6ZSA9IGN4MjA3MnhfcmVn
aXN0ZXJfc2l6ZShkZXYsIHJlZyk7CisJaWYgKHNpemUgPT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7
CisKKwlpZiAocmVnID09IENYMjA3MlhfVU1fSU5URVJSVVBUX0NSVExfRSkgeworCQkvKiBVcGRh
dGUgdGhlIE1TQiBieXRlIG9ubHkgKi8KKwkJcmVnICs9IDM7CisJCXNpemUgPSAxOworCQl2YWx1
ZSA+Pj0gMjQ7CisJfQorCisJYnVmWzBdID0gcmVnID4+IDg7CisJYnVmWzFdID0gcmVnICYgMHhm
ZjsKKworCWZvciAoaSA9IDI7IGkgPCAoc2l6ZSArIDIpOyArK2kpIHsKKwkJYnVmW2ldID0gdmFs
dWU7CisJCXZhbHVlID4+PSA4OworCX0KKworCXJldCA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQs
IGJ1Ziwgc2l6ZSArIDIpOworCWlmIChyZXQgPT0gc2l6ZSArIDIpIHsKKwkJcmV0ID0gIDA7CisJ
fSBlbHNlIGlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiSTJDIHdyaXRlIGFkZHJlc3Mg
ZmFpbGVkLCBlcnJvciA9ICVkXG4iLCByZXQpOworCX0gZWxzZSB7CisJCWRldl9lcnIoZGV2LCAi
STJDIHdyaXRlIGZhaWxlZFxuIik7CisJCXJldCA9ICAtRUlPOworCX0KKwlyZXR1cm4gcmV0Owor
fQorCitzdGF0aWMgaW50IGN4MjA3MnhfcmVnX2J1bGtfd3JpdGUoc3RydWN0IHNuZF9zb2NfY29t
cG9uZW50ICpjb21wb25lbnQsIHVuc2lnbmVkIGludCByZWcsCisJCQkJICBjb25zdCB2b2lkICp2
YWwsIHNpemVfdCB2YWxfY291bnQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRv
X2kyY19jbGllbnQoY29tcG9uZW50LT5kZXYpOworCXU4IGJ1ZlsyICsgTUFYX0VRX0NPRUZGXTsK
KwlpbnQgcmV0OworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsKKworCWlmICh2
YWxfY291bnQgPiBNQVhfRVFfQ09FRkYpIHsKKwkJZGV2X2VycihkZXYsCisJCQkiY3gyMDcyeF9y
ZWdfYnVsa193cml0ZSBmYWlsZWQsIHdyaXRpbmcgY291bnQgPSAlZFxuIiwKKwkJCShpbnQpdmFs
X2NvdW50KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJYnVmWzBdID0gcmVnID4+IDg7CisJ
YnVmWzFdID0gcmVnICYgMHhmZjsKKworCW1lbWNweSgmYnVmWzJdLCB2YWwsIHZhbF9jb3VudCk7
CisKKwlyZXQgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBidWYsIHZhbF9jb3VudCArIDIpOwor
CWlmIChyZXQgPT0gdmFsX2NvdW50ICsgMikgeworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKHJl
dCA8IDApIHsKKwkJZGV2X2VycihkZXYsCisJCQkiSTJDIGJ1bGsgd3JpdGUgYWRkcmVzcyBmYWls
ZWRcbiIpOworCX0gZWxzZSB7CisJCWRldl9lcnIoZGV2LAorCQkJIkkyQyBidWxrIHdyaXRlIGFk
ZHJlc3MgZmFpbGVkXG4iKTsKKwkJcmV0ID0gLUVJTzsKKwl9CisJcmV0dXJuIHJldDsKK30KKwor
c3RhdGljIGludCBjeDIwNzJ4X3JlZ19yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCBy
ZWcsCisJCQkgICAgdW5zaWduZWQgaW50ICp2YWx1ZSkKK3sKKwlpbnQgcmV0OworCXVuc2lnbmVk
IGludCBzaXplOworCXU4IHNlbmRfYnVmWzJdOworCXVuc2lnbmVkIGludCByZWN2X2J1ZiA9IDA7
CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGNvbnRleHQ7CisJc3RydWN0IGkyY19tc2cg
bXNnc1syXTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7CisKKwlzaXplID0g
Y3gyMDcyeF9yZWdpc3Rlcl9zaXplKGRldiwgcmVnKTsKKwlpZiAoc2l6ZSA9PSAwKQorCQlyZXR1
cm4gLUVJTlZBTDsKKworCXNlbmRfYnVmWzBdID0gcmVnID4+IDg7CisJc2VuZF9idWZbMV0gPSBy
ZWcgJiAweGZmOworCisJbXNnc1swXS5hZGRyID0gY2xpZW50LT5hZGRyOworCW1zZ3NbMF0ubGVu
ID0gc2l6ZW9mKHNlbmRfYnVmKTsKKwltc2dzWzBdLmJ1ZiA9IHNlbmRfYnVmOworCW1zZ3NbMF0u
ZmxhZ3MgPSAwOworCisJbXNnc1sxXS5hZGRyID0gY2xpZW50LT5hZGRyOworCW1zZ3NbMV0ubGVu
ID0gc2l6ZTsKKwltc2dzWzFdLmJ1ZiA9ICh1OCAqKSZyZWN2X2J1ZjsKKwltc2dzWzFdLmZsYWdz
ID0gSTJDX01fUkQ7CisKKwlyZXQgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCBtc2dz
LCBBUlJBWV9TSVpFKG1zZ3MpKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwKKwkJ
CSJGYWlsZWQgdG8gcmVnaXN0ZXIgY29kZWM6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0Owor
CX0gZWxzZSBpZiAocmV0ICE9IEFSUkFZX1NJWkUobXNncykpIHsKKwkJZGV2X2VycihkZXYsCisJ
CQkiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvZGVjOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIC1FSU87
CisJfQorCisJKnZhbHVlID0gcmVjdl9idWY7CisKKwlyZXR1cm4gMDsKK30KKworLyogZ2V0IHN1
Z2dlc3RlZCBwcmVfZGl2IHZhbHVjZSBmcm9tIG1jbGsgZnJlcXVlbmN5ICovCitzdGF0aWMgdW5z
aWduZWQgaW50IGdldF9kaXZfZnJvbV9tY2xrKHVuc2lnbmVkIGludCBtY2xrKQoreworCXVuc2ln
bmVkIGludCBkaXYgPSA4OworCWludCBpID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T
SVpFKE1DTEtfUFJFX0RJVik7IGkrKykgeworCQlpZiAobWNsayA8PSBNQ0xLX1BSRV9ESVZbaV0u
bWNsaykgeworCQkJZGl2ID0gTUNMS19QUkVfRElWW2ldLmRpdjsKKwkJCWJyZWFrOworCQl9CisJ
fQorCXJldHVybiBkaXY7Cit9CisKK3N0YXRpYyBpbnQgY3gyMDcyeF9jb25maWdfcGxsKHN0cnVj
dCBjeDIwNzJ4X3ByaXYgKmN4MjA3MngpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY3gyMDcy
eC0+ZGV2OworCXVuc2lnbmVkIGludCBwcmVfZGl2OworCXVuc2lnbmVkIGludCBwcmVfZGl2X3Zh
bDsKKwl1bnNpZ25lZCBpbnQgcGxsX2lucHV0OworCXVuc2lnbmVkIGludCBwbGxfb3V0cHV0Owor
CXVuc2lnbmVkIGludCBpbnRfZGl2OworCXVuc2lnbmVkIGludCBmcmFjX2RpdjsKKwl1NjQgZnJh
Y19udW07CisJdW5zaWduZWQgaW50IGZyYWM7CisJdW5zaWduZWQgaW50IHNhbXBsZV9yYXRlID0g
Y3gyMDcyeC0+c2FtcGxlX3JhdGU7CisJaW50IHB0X3NhbXBsZV9wZXJfc3luYyA9IDI7CisJaW50
IHB0X2Nsb2NrX3Blcl9zYW1wbGUgPSA5NjsKKworCXN3aXRjaCAoc2FtcGxlX3JhdGUpIHsKKwlj
YXNlIDQ4MDAwOgorCWNhc2UgMzIwMDA6CisJY2FzZSAyNDAwMDoKKwljYXNlIDE2MDAwOgorCQli
cmVhazsKKworCWNhc2UgOTYwMDA6CisJCXB0X3NhbXBsZV9wZXJfc3luYyA9IDE7CisJCXB0X2Ns
b2NrX3Blcl9zYW1wbGUgPSA0ODsKKwkJYnJlYWs7CisKKwljYXNlIDE5MjAwMDoKKwkJcHRfc2Ft
cGxlX3Blcl9zeW5jID0gMDsKKwkJcHRfY2xvY2tfcGVyX3NhbXBsZSA9IDI0OworCQlicmVhazsK
KworCWRlZmF1bHQ6CisJCWRldl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgc2FtcGxlIHJhdGUgJWRc
biIsIHNhbXBsZV9yYXRlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLypDb25maWd1cmUg
UExMIHNldHRpbmdzKi8KKwlwcmVfZGl2ID0gZ2V0X2Rpdl9mcm9tX21jbGsoY3gyMDcyeC0+bWNs
a19yYXRlKTsKKwlwbGxfaW5wdXQgPSBjeDIwNzJ4LT5tY2xrX3JhdGUgLyBwcmVfZGl2OworCXBs
bF9vdXRwdXQgPSBzYW1wbGVfcmF0ZSAqIDMwNzI7CisJaW50X2RpdiA9IHBsbF9vdXRwdXQgLyBw
bGxfaW5wdXQ7CisJZnJhY19kaXYgPSBwbGxfb3V0cHV0IC0gKGludF9kaXYgKiBwbGxfaW5wdXQp
OworCisJaWYgKGZyYWNfZGl2KSB7CisJCWZyYWNfZGl2ICo9IDEwMDA7CisJCWZyYWNfZGl2IC89
IHBsbF9pbnB1dDsKKwkJZnJhY19udW0gPSAoKDQwMDAgKyBmcmFjX2RpdikgKiAoKDEgPDwgMjAp
IC0gNCkpOworCQlkb19kaXYoZnJhY19udW0sIDcpOworCQlmcmFjID0gKCh1MzIpZnJhY19udW0g
KyA0OTkpIC8gMTAwMDsKKwl9CisJcHJlX2Rpdl92YWwgPSAocHJlX2RpdiAtIDEpICogMjsKKwor
CXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfQU5BTE9HX1RFU1Q0LCAwWDQw
CisJCXwgKHByZV9kaXZfdmFsIDw8IDgpKTsKKwlpZiAoZnJhY19kaXYgPT0gMCkgeworCQkvKklu
dCBtb2RlKi8KKwkJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9BTkFMT0df
VEVTVDcsIDB4MTAwKTsKKwl9IGVsc2UgeworCQkvKmZyYWMgbW9kZSovCisJCXJlZ21hcF93cml0
ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfQU5BTE9HX1RFU1Q2LAorCQkJICAgICBmcmFjICYg
MHhmZmYpOworCQlyZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0FOQUxPR19U
RVNUNywKKwkJCSAgICAgKHU4KShmcmFjID4+IDEyKSk7CisJfQorCisJaW50X2Rpdi0tOworCXJl
Z21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfQU5BTE9HX1RFU1Q4LCBpbnRfZGl2
KTsKKworCS8qIGNvbmZpZ3VyZSBQTEwgdHJhY2tpbmcqLworCWlmIChmcmFjX2RpdiA9PSAwKSB7
CisJCS8qIGRpc2FibGUgUExMIHRyYWNraW5nKi8KKwkJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJl
Z21hcCwgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxNiwgMHgwMCk7CisJfSBlbHNlIHsKKwkJLyogY29u
ZmlndXJlIGFuZCBlbmFibGUgUExMIHRyYWNraW5nKi8KKwkJcmVnbWFwX3dyaXRlKGN4MjA3Mngt
PnJlZ21hcCwgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxNiwKKwkJCSAgICAgKHB0X3NhbXBsZV9wZXJf
c3luYyA8PCA0KSAmIDB4ZjApOworCQlyZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVnbWFwLCBDWDIw
NzJYX0RJR0lUQUxfVEVTVDE3LAorCQkJICAgICBwdF9jbG9ja19wZXJfc2FtcGxlKTsKKwkJcmVn
bWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxOCwKKwkJCSAg
ICAgcHRfY2xvY2tfcGVyX3NhbXBsZSAqIDMgLyAyKTsKKwkJcmVnbWFwX3dyaXRlKGN4MjA3Mngt
PnJlZ21hcCwgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxOSwgMHgwMSk7CisJCXJlZ21hcF93cml0ZShj
eDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfRElHSVRBTF9URVNUMjAsIDB4MDIpOworCQlyZWdtYXBf
dXBkYXRlX2JpdHMoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0RJR0lUQUxfVEVTVDE2LAorCQkJ
CSAgIDBYMDEsIDBYMDEpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGN4MjA3
MnhfY29uZmlnX2kyc3BjbShzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4KQoreworCXN0cnVj
dCBkZXZpY2UgKmRldiA9IGN4MjA3MngtPmRldjsKKwl1bnNpZ25lZCBpbnQgYmNsa19yYXRlID0g
MDsKKwlpbnQgaXNfaTJzID0gMDsKKwlpbnQgaGFzX29uZV9iaXRfZGVsYXkgPSAwOworCWludCBp
c19yaWdodF9qID0gMDsKKwlpbnQgaXNfZnJhbWVfaW52ID0gMDsKKwlpbnQgaXNfYmNsa19pbnYg
PSAwOworCWludCBwdWxzZV9sZW4gPSAxOworCWludCBmcmFtZV9sZW4gPSBjeDIwNzJ4LT5mcmFt
ZV9zaXplOworCWludCBzYW1wbGVfc2l6ZSA9IGN4MjA3MngtPnNhbXBsZV9zaXplOworCWludCBp
MnNfcmlnaHRfc2xvdDsKKwlpbnQgaTJzX3JpZ2h0X3BhdXNlX2ludGVydmFsID0gMDsKKwlpbnQg
aTJzX3JpZ2h0X3BhdXNlX3BvczsKKwlpbnQgaXNfYmlnX2VuZGlhbiA9IDE7CisJdTY0IGRpdjsK
Kwl1bnNpZ25lZCBpbnQgbW9kOworCXVuaW9uIFJFR19JMlNQQ01fQ1RSTF9SRUcxIHJlZzE7CisJ
dW5pb24gUkVHX0kyU1BDTV9DVFJMX1JFRzIgcmVnMjsKKwl1bmlvbiBSRUdfSTJTUENNX0NUUkxf
UkVHMyByZWczOworCXVuaW9uIFJFR19JMlNQQ01fQ1RSTF9SRUc0IHJlZzQ7CisJdW5pb24gUkVH
X0kyU1BDTV9DVFJMX1JFRzUgcmVnNTsKKwl1bmlvbiBSRUdfSTJTUENNX0NUUkxfUkVHNiByZWc2
OworCXVuaW9uIFJFR19ESUdJVEFMX0JJT1NfVEVTVDIgcmVnZGJ0MjsKKwljb25zdCB1bnNpZ25l
ZCBpbnQgZm10ID0gY3gyMDcyeC0+ZGFpX2ZtdDsKKworCWlmIChmcmFtZV9sZW4gPD0gMCkgewor
CQlkZXZfZXJyKGRldiwgIkluY29ycmVjdCBmcmFtZSBsZW4gJWRcbiIsIGZyYW1lX2xlbik7CisJ
CXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChzYW1wbGVfc2l6ZSA8PSAwKSB7CisJCWRldl9l
cnIoZGV2LCAiSW5jb3JyZWN0IHNhbXBsZSBzaXplICVkXG4iLCBzYW1wbGVfc2l6ZSk7CisJCXJl
dHVybiAtRUlOVkFMOworCX0KKworCWRldl9kYmcoZGV2LCAiY29uZmlnX2kyc3BjbSBzZXRfZGFp
X2ZtdC0gJTA4eFxuIiwgZm10KTsKKworCXJlZ2RidDIudWx2YWwgPSAweGFjOworCisJLyogc2V0
IG1hc3Rlci9zbGF2ZSAqLworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfTUFTVEVSX01B
U0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCTV9DRk06CisJCXJlZzIuci50eF9tYXN0ZXIg
PSAxOworCQlyZWczLnIucnhfbWFzdGVyID0gMTsKKwkJZGV2X2RiZyhkZXYsICJTZXRzIE1hc3Rl
ciBtb2RlXG4iKTsKKwkJYnJlYWs7CisKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCU19DRlM6CisJ
CXJlZzIuci50eF9tYXN0ZXIgPSAwOworCQlyZWczLnIucnhfbWFzdGVyID0gMDsKKwkJZGV2X2Ri
ZyhkZXYsICJTZXRzIFNsYXZlIG1vZGVcbiIpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWRl
dl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgREFJIG1hc3RlciBtb2RlXG4iKTsKKwkJcmV0dXJuIC1F
SU5WQUw7CisJfQorCisJLyogc2V0IGZvcm1hdCAqLworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19E
QUlGTVRfRk9STUFUX01BU0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX0kyUzoKKwkJaXNfaTJz
ID0gMTsKKwkJaGFzX29uZV9iaXRfZGVsYXkgPSAxOworCQlwdWxzZV9sZW4gPSBmcmFtZV9sZW4g
LyAyOworCQlicmVhazsKKworCWNhc2UgU05EX1NPQ19EQUlGTVRfUklHSFRfSjoKKwkJaXNfaTJz
ID0gMTsKKwkJaXNfcmlnaHRfaiA9IDE7CisJCXB1bHNlX2xlbiA9IGZyYW1lX2xlbiAvIDI7CisJ
CWJyZWFrOworCisJY2FzZSBTTkRfU09DX0RBSUZNVF9MRUZUX0o6CisJCWlzX2kycyA9IDE7CisJ
CXB1bHNlX2xlbiA9IGZyYW1lX2xlbiAvIDI7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJZGV2
X2VycihkZXYsICJVbnN1cHBvcnRlZCBEQUkgZm9ybWF0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7
CisJfQorCisJLyogY2xvY2sgaW52ZXJzaW9uICovCisJc3dpdGNoIChmbXQgJiBTTkRfU09DX0RB
SUZNVF9JTlZfTUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlGTVRfTkJfTkY6CisJCWlzX2ZyYW1l
X2ludiA9IGlzX2kyczsKKwkJaXNfYmNsa19pbnYgPSBpc19pMnM7CisJCWJyZWFrOworCisJY2Fz
ZSBTTkRfU09DX0RBSUZNVF9JQl9JRjoKKwkJaXNfZnJhbWVfaW52ID0gIWlzX2kyczsKKwkJaXNf
YmNsa19pbnYgPSAhaXNfaTJzOworCQlicmVhazsKKworCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJf
TkY6CisJCWlzX2ZyYW1lX2ludiA9IGlzX2kyczsKKwkJaXNfYmNsa19pbnYgPSAhaXNfaTJzOwor
CQlicmVhazsKKworCWNhc2UgU05EX1NPQ19EQUlGTVRfTkJfSUY6CisJCWlzX2ZyYW1lX2ludiA9
ICFpc19pMnM7CisJCWlzX2JjbGtfaW52ID0gaXNfaTJzOworCQlicmVhazsKKworCWRlZmF1bHQ6
CisJCWRldl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgREFJIGNsb2NrIGludmVyc2lvblxuIik7CisJ
CXJldHVybiAtRUlOVkFMOworCX0KKworCXJlZzEuci5yeF9kYXRhX29uZV9saW5lID0gMTsKKwly
ZWcxLnIudHhfZGF0YV9vbmVfbGluZSA9IDE7CisKKwlpZiAoaXNfaTJzKSB7CisJCWkyc19yaWdo
dF9zbG90ID0gKGZyYW1lX2xlbiAvIDIpIC8gQklUU19QRVJfU0xPVDsKKwkJaTJzX3JpZ2h0X3Bh
dXNlX2ludGVydmFsID0gKGZyYW1lX2xlbiAvIDIpICUgQklUU19QRVJfU0xPVDsKKwkJaTJzX3Jp
Z2h0X3BhdXNlX3BvcyA9IGkyc19yaWdodF9zbG90ICogQklUU19QRVJfU0xPVDsKKwl9CisKKwly
ZWcxLnIucnhfd3NfcG9sID0gaXNfZnJhbWVfaW52OworCXJlZzEuci5yeF93c193aWQgPSBwdWxz
ZV9sZW4gLSAxOworCisJcmVnMS5yLnJ4X2ZybV9sZW4gPSBmcmFtZV9sZW4gLyBCSVRTX1BFUl9T
TE9UIC0gMTsKKwlyZWcxLnIucnhfc2Ffc2l6ZSA9IChzYW1wbGVfc2l6ZSAvIEJJVFNfUEVSX1NM
T1QpIC0gMTsKKworCXJlZzEuci50eF93c19wb2wgPSByZWcxLnIucnhfd3NfcG9sOworCXJlZzEu
ci50eF93c193aWQgPSBwdWxzZV9sZW4gLSAxOworCXJlZzEuci50eF9mcm1fbGVuID0gcmVnMS5y
LnJ4X2ZybV9sZW47CisJcmVnMS5yLnR4X3NhX3NpemUgPSByZWcxLnIucnhfc2Ffc2l6ZTsKKwor
CXJlZzIuci50eF9lbmRpYW5fc2VsID0gIWlzX2JpZ19lbmRpYW47CisJcmVnMi5yLnR4X2RzdGFy
dF9kbHkgPSBoYXNfb25lX2JpdF9kZWxheTsKKworCXJlZzMuci5yeF9lbmRpYW5fc2VsID0gIWlz
X2JpZ19lbmRpYW47CisJcmVnMy5yLnJ4X2RzdGFydF9kbHkgPSBoYXNfb25lX2JpdF9kZWxheTsK
KworCXJlZzQudWx2YWwgPSAwOworCisJaWYgKGlzX2kycykgeworCQlyZWcyLnIudHhfc2xvdF8x
ID0gMDsKKwkJcmVnMi5yLnR4X3Nsb3RfMiA9IGkyc19yaWdodF9zbG90OworCQlyZWczLnIucnhf
c2xvdF8xID0gMDsKKwkJcmVnMy5yLnJ4X3Nsb3RfMiA9IGkyc19yaWdodF9zbG90OworCQlyZWc2
LnIucnhfcGF1c2Vfc3RhcnRfcG9zID0gaTJzX3JpZ2h0X3BhdXNlX3BvczsKKwkJcmVnNi5yLnJ4
X3BhdXNlX2N5Y2xlcyA9IGkyc19yaWdodF9wYXVzZV9pbnRlcnZhbDsKKwkJcmVnNi5yLnR4X3Bh
dXNlX3N0YXJ0X3BvcyA9IGkyc19yaWdodF9wYXVzZV9wb3M7CisJCXJlZzYuci50eF9wYXVzZV9j
eWNsZXMgPSBpMnNfcmlnaHRfcGF1c2VfaW50ZXJ2YWw7CisJfSBlbHNlIHsKKwkJZGV2X2Vycihk
ZXYsICJURE0gbW9kZSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0XG4iKTsKKwkJcmV0dXJuIC1FSU5W
QUw7CisJfQorCXJlZ2RidDIuci5pMnNfYmNsa19pbnZlcnQgPSBpc19iY2xrX2ludjsKKworCXJl
ZzEuci5yeF9kYXRhX29uZV9saW5lID0gMTsKKwlyZWcxLnIudHhfZGF0YV9vbmVfbGluZSA9IDE7
CisKKwkvKiBDb25maWd1cmVzIHRoZSBCQ0xLIG91dHB1dC4qLworCWJjbGtfcmF0ZSA9IGN4MjA3
MngtPnNhbXBsZV9yYXRlICogZnJhbWVfbGVuOworCXJlZzUuci5pMnNfcGNtX2Nsa19kaXZfY2hh
bl9lbiA9IDA7CisKKwkvKkRpc2FibGVzIGJjbGsgb3V0cHV0IGJlZm9yZSBzZXR0aW5nIG5ldyB2
YWx1ZSovCisJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9JMlNQQ01fQ09O
VFJPTDUsIDApOworCisJaWYgKHJlZzIuci50eF9tYXN0ZXIpIHsKKwkJLypDb25maWd1cmVzIEJD
TEsgcmF0ZSovCisJCWRpdiA9IFBMTF9PVVRfSFpfNDg7CisJCW1vZCA9IGRvX2RpdihkaXYsIGJj
bGtfcmF0ZSk7CisJCWlmIChtb2QpIHsKKwkJCWRldl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgQkNM
SyAlZEh6XG4iLCBiY2xrX3JhdGUpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJZGV2X2Ri
ZyhkZXYsICJlbmFibGVzIEJDTEsgJWRIeiBvdXRwdXRcbiIsIGJjbGtfcmF0ZSk7CisJCXJlZzUu
ci5pMnNfcGNtX2Nsa19kaXYgPSAodTMyKWRpdiAtIDE7CisJCXJlZzUuci5pMnNfcGNtX2Nsa19k
aXZfY2hhbl9lbiA9IDE7CisJfQorCisJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gy
MDcyWF9JMlNQQ01fQ09OVFJPTDEsIHJlZzEudWx2YWwpOworCXJlZ21hcF91cGRhdGVfYml0cyhj
eDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfSTJTUENNX0NPTlRST0wyLCAweGZmZmZmZmMwLAorCQkJ
ICAgcmVnMi51bHZhbCk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGN4MjA3MngtPnJlZ21hcCwgQ1gy
MDcyWF9JMlNQQ01fQ09OVFJPTDMsIDB4ZmZmZmZmYzAsCisJCQkgICByZWczLnVsdmFsKTsKKwly
ZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0kyU1BDTV9DT05UUk9MNCwgcmVn
NC51bHZhbCk7CisJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9JMlNQQ01f
Q09OVFJPTDYsIHJlZzYudWx2YWwpOworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENY
MjA3MlhfSTJTUENNX0NPTlRST0w1LCByZWc1LnVsdmFsKTsKKworCXJlZ21hcF93cml0ZShjeDIw
NzJ4LT5yZWdtYXAsIENYMjA3MlhfRElHSVRBTF9CSU9TX1RFU1QyLAorCQkgICAgIHJlZ2RidDIu
dWx2YWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGN4MjA3MnhfdXBkYXRlX2Vx
X2NvZWZmKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQoreworCXN0cnVjdCBj
eDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21w
b25lbnQpOworCWludCBiYW5kLCBjaCwgdmFsdWU7CisKKwlpZiAoIWN4MjA3MngtPnBsYmtfZXFf
Y2hhbmdlZCkKKwkJcmV0dXJuOworCWlmICghY3gyMDcyeC0+cGxia19lcV9lbikKKwkJcmV0dXJu
OworCisJLyogc2V0IEVRIHRvIGJ5cGFzcyBtb2RlIGJlZm9yZSBjb25maWd1cmluZyB0aGUgRVEg
c2V0dGluZ3MgKi8KKwlyZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0VRX0VO
QUJMRV9CWVBBU1MsIDB4NjIwZik7CisKKwlmb3IgKGNoID0gMDsgY2ggPCAyOyBjaCsrKQorCQlm
b3IgKGJhbmQgPSAwOyBiYW5kIDwgQ1gyMDcyWF9QTEJLX0VRX0JBTkRfTlVNOyBiYW5kKyspIHsK
KwkJCWN4MjA3MnhfcmVnX2J1bGtfd3JpdGUoY29tcG9uZW50LCBDWDIwNzJYX0VRX0IwX0NPRUZG
LAorCQkJCQkgICAgICAgJmN4MjA3MngtPnBsYmtfZXFbY2hdW2JhbmRdWzBdLAorCQkJCQkgICAg
ICAgTUFYX0VRX0NPRUZGKTsKKwkJCXZhbHVlID0gYmFuZCArIChjaCA8PCAzKSArICgxIDw8IDYp
OworCQkJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9FUV9CQU5ELCB2YWx1
ZSk7CisJCQltZGVsYXkoNSk7CisJCX0KKworCWN4MjA3MngtPnBsYmtfZXFfY2hhbmdlZCA9IGZh
bHNlOworCWN4MjA3MngtPnBsYmtfZXFfZW5fY2hhbmdlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2
b2lkIGN4MjA3MnhfdXBkYXRlX2VxX2VuKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9u
ZW50KQoreworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2NvbXBvbmVu
dF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJaWYgKGN4MjA3MngtPnBsYmtfZXFfZW5fY2hh
bmdlZCkgeworCQlpZiAoY3gyMDcyeC0+cGxia19lcV9lbikKKwkJCXJlZ21hcF93cml0ZShjeDIw
NzJ4LT5yZWdtYXAsIENYMjA3MlhfRVFfRU5BQkxFX0JZUEFTUywKKwkJCQkgICAgIDB4NjIwMyk7
CisJCWVsc2UKKwkJCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfRVFfRU5B
QkxFX0JZUEFTUywKKwkJCQkgICAgIDB4NjIwYyk7CisKKwkJY3gyMDcyeC0+cGxia19lcV9lbl9j
aGFuZ2VkID0gZmFsc2U7CisJfQorfQorCitzdGF0aWMgdm9pZCBjeDIwNzJ4X3VwZGF0ZV9kcmMo
c3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCit7CisJc3RydWN0IGN4MjA3Mnhf
cHJpdiAqY3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7
CisKKwlpZiAoY3gyMDcyeC0+cGxia19kcmNfY2hhbmdlZCAmJiBjeDIwNzJ4LT5wbGJrX2RyY19l
bikgeworCQljeDIwNzJ4X3JlZ19idWxrX3dyaXRlKGNvbXBvbmVudCwgQ1gyMDcyWF9TUEtSX0RS
Q19FTkFCTEVfU1RFUCwKKwkJCQkgICAgICAgY3gyMDcyeC0+cGxia19kcmMsIE1BWF9EUkNfUkVH
Uyk7CisJCWN4MjA3MngtPnBsYmtfZHJjX2NoYW5nZWQgPSBmYWxzZTsKKwkJY3gyMDcyeC0+cGxi
a19kcmNfZW5fY2hhbmdlZCA9IHRydWU7CisJfQorfQorCitzdGF0aWMgdm9pZCBjeDIwNzJ4X3Vw
ZGF0ZV9kcmNfZW4oc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCit7CisJc3Ry
dWN0IGN4MjA3MnhfcHJpdiAqY3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRh
KGNvbXBvbmVudCk7CisJdTggZHJjX3N0YXR1cyA9IGN4MjA3MngtPnBsYmtfZHJjWzBdOworCisJ
aWYgKCFjeDIwNzJ4LT5wbGJrX2RyY19lbl9jaGFuZ2VkKQorCQlyZXR1cm47CisKKwlpZiAoY3gy
MDcyeC0+cGxia19kcmNfZW4pIHsKKwkJZHJjX3N0YXR1cyB8PSAweDE7CisJCXJlZ21hcF93cml0
ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfU1BLUl9EUkNfRU5BQkxFX1NURVAsCisJCQkgICAg
IGRyY19zdGF0dXMpOworCQljeDIwNzJ4LT5wbGJrX2RyY1swXSA9IGRyY19zdGF0dXM7CisJfSBl
bHNlIHsKKwkJZHJjX3N0YXR1cyAmPSAweGZlOworCQlyZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVn
bWFwLCBDWDIwNzJYX1NQS1JfRFJDX0VOQUJMRV9TVEVQLAorCQkJICAgICBkcmNfc3RhdHVzKTsK
KwkJY3gyMDcyeC0+cGxia19kcmNbMF0gPSBkcmNfc3RhdHVzOworCX0KKworCWN4MjA3MngtPnBs
YmtfZHJjX2VuX2NoYW5nZWQgPSBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgY3gyMDcyeF91cGRh
dGVfZHNwKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQoreworCXVuc2lnbmVk
IGludCBhZmdfcmVnOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2Nv
bXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJcmVnbWFwX3JlYWQoY3gyMDcyeC0+
cmVnbWFwLCBDWDIwNzJYX0FGR19QT1dFUl9TVEFURSwgJmFmZ19yZWcpOworCisJaWYgKChhZmdf
cmVnICYgMHhmKSAhPSAwKQorCQkvKnNraXAgc2luY2UgZGV2aWNlIGlzIG9uIEQzIG1vZGUqLwor
CQlyZXR1cm47CisKKwlyZWdtYXBfcmVhZChjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfUE9SVEdf
UE9XRVJfU1RBVEUsICZhZmdfcmVnKTsKKworCWlmICgoYWZnX3JlZyAmIDB4ZikgIT0gMCkgewor
CQlkZXZfZGJnKGNvbXBvbmVudC0+ZGV2LCAiZmFpbGVkIHRvIHVwZGF0ZSBkc3AgZHVlbyBwb3J0
ZyBpcyBvZmZcbiIpOworCQkvKnNraXAgc2luY2UgZGV2aWNlIGlzIG9uIEQzIG1vZGUqLworCQly
ZXR1cm47CisJfQorCisJY3gyMDcyeF91cGRhdGVfZXFfY29lZmYoY29tcG9uZW50KTsKKwljeDIw
NzJ4X3VwZGF0ZV9lcV9lbihjb21wb25lbnQpOworCWN4MjA3MnhfdXBkYXRlX2RyYyhjb21wb25l
bnQpOworCWN4MjA3MnhfdXBkYXRlX2RyY19lbihjb21wb25lbnQpOworfQorCitzdGF0aWMgaW50
IGFmZ19wb3dlcl9ldihzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywKKwkJCXN0cnVjdCBz
bmRfa2NvbnRyb2wgKmtjb250cm9sLCBpbnQgZXZlbnQpCit7CisJc3RydWN0IHNuZF9zb2NfY29t
cG9uZW50ICpjb21wb25lbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOwor
CXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2
ZGF0YShjb21wb25lbnQpOworCisJc3dpdGNoIChldmVudCkgeworCWNhc2UgU05EX1NPQ19EQVBN
X1BPU1RfUE1VOgorCQlyZWdtYXBfdXBkYXRlX2JpdHMoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJY
X0RJR0lUQUxfQklPU19URVNUMCwKKwkJCQkgICAweDAwLCAweDEwKTsKKwkJYnJlYWs7CisKKwlj
YXNlIFNORF9TT0NfREFQTV9QUkVfUE1EOgorCQlyZWdtYXBfdXBkYXRlX2JpdHMoY3gyMDcyeC0+
cmVnbWFwLCBDWDIwNzJYX0RJR0lUQUxfQklPU19URVNUMCwKKwkJCQkgICAweDEwLCAweDEwKTsK
KwkJYnJlYWs7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcG9ydGdfcG93ZXJf
ZXYoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsCisJCQkgIHN0cnVjdCBzbmRfa2NvbnRy
b2wgKmtjb250cm9sLCBpbnQgZXZlbnQpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpj
b21wb25lbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOworCisJc3dpdGNo
IChldmVudCkgeworCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1VOgorCQlkZXZfZGJnKGNvbXBv
bmVudC0+ZGV2LCAicG9ydGdfcG93ZXJfZXZlbnRcbiIpOworCQljeDIwNzJ4X3VwZGF0ZV9kc3Ao
Y29tcG9uZW50KTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlyZXR1
cm4gMDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3BsYmtfZXFfZW5faW5mbyhzdHJ1Y3Qgc25k
X2tjb250cm9sICprY29udHJvbCwKKwkJCQkgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVp
bmZvKQoreworCXVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9CT09MRUFOOworCXVp
bmZvLT5jb3VudCA9IDE7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWluID0gMDsKKwl1aW5mby0+
dmFsdWUuaW50ZWdlci5tYXggPSAxOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3gy
MDcyeF9wbGJrX2VxX2VuX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkg
IHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBzbmRfc29j
X2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX3NvY19rY29udHJvbF9jb21wb25lbnQoa2NvbnRy
b2wpOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2NvbXBvbmVudF9n
ZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVb
MF0gPSBjeDIwNzJ4LT5wbGJrX2VxX2VuOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg
Y3gyMDcyeF9wbGJrX2VxX2VuX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJ
CQkgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBzbmRf
c29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX3NvY19rY29udHJvbF9jb21wb25lbnQoa2Nv
bnRyb2wpOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2NvbXBvbmVu
dF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCWNvbnN0IGJvb2wgZW5hYmxlID0gdWNvbnRyb2wt
PnZhbHVlLmludGVnZXIudmFsdWVbMF07CisKKwlpZiAodWNvbnRyb2wtPnZhbHVlLmludGVnZXIu
dmFsdWVbMF0gPiAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChjeDIwNzJ4LT5wbGJrX2Vx
X2VuICE9IGVuYWJsZSkgeworCQljeDIwNzJ4LT5wbGJrX2VxX2VuID0gZW5hYmxlOworCQljeDIw
NzJ4LT5wbGJrX2VxX2VuX2NoYW5nZWQgPSB0cnVlOworCQljeDIwNzJ4X3VwZGF0ZV9kc3AoY29t
cG9uZW50KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3BsYmtf
ZHJjX2VuX2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkJICAgIHN0cnVj
dCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExf
RUxFTV9UWVBFX0JPT0xFQU47CisJdWluZm8tPmNvdW50ID0gMTsKKwl1aW5mby0+dmFsdWUuaW50
ZWdlci5taW4gPSAwOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1heCA9IDE7CisKKwlyZXR1cm4g
MDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3BsYmtfZHJjX2VuX2dldChzdHJ1Y3Qgc25kX2tj
b250cm9sICprY29udHJvbCwKKwkJCQkgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29u
dHJvbCkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2Nf
a2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIw
NzJ4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKworCXVjb250
cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gY3gyMDcyeC0+cGxia19kcmNfZW47CisKKwly
ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3BsYmtfZHJjX2VuX3B1dChzdHJ1Y3Qg
c25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVl
ICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNu
ZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2
ICpjeDIwNzJ4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwlj
b25zdCBib29sIGVuYWJsZSA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOworCisJ
aWYgKHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID4gMSkKKwkJcmV0dXJuIC1FSU5W
QUw7CisKKwlpZiAoY3gyMDcyeC0+cGxia19kcmNfZW4gIT0gZW5hYmxlKSB7CisJCWN4MjA3Mngt
PnBsYmtfZHJjX2VuID0gZW5hYmxlOworCQljeDIwNzJ4LT5wbGJrX2RyY19lbl9jaGFuZ2VkID0g
dHJ1ZTsKKwkJY3gyMDcyeF91cGRhdGVfZHNwKGNvbXBvbmVudCk7CisJfQorCisJcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBpbnQgY3gyMDcyeF9wbGJrX2VxX2luZm8oc3RydWN0IHNuZF9rY29udHJv
bCAqa2NvbnRyb2wsCisJCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1
aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfQllURVM7CisJdWluZm8tPmNvdW50ID0g
Q1gyMDcyWF9QTEJLX0VRX0NPRUZfTEVOOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg
Y3gyMDcyeF9wbGJrX2VxX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAg
ICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgc25k
X3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtj
b250cm9sKTsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4ID0gc25kX3NvY19jb21wb25l
bnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwlzdHJ1Y3QgQ1gyMDcyWF9FUV9DVFJMICplcSA9
CisJCShzdHJ1Y3QgQ1gyMDcyWF9FUV9DVFJMICopa2NvbnRyb2wtPnByaXZhdGVfdmFsdWU7CisJ
dTggKnBhcmFtID0gdWNvbnRyb2wtPnZhbHVlLmJ5dGVzLmRhdGE7CisJdTggKmNhY2hlID0gY3gy
MDcyeC0+cGxia19lcVtlcS0+Y2hdW2VxLT5iYW5kXTsKKworCW1lbWNweShwYXJhbSwgY2FjaGUs
IENYMjA3MlhfUExCS19FUV9DT0VGX0xFTik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu
dCBjeDIwNzJ4X3BsYmtfZXFfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJ
ICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBz
bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX3NvY19rY29udHJvbF9jb21wb25lbnQo
a2NvbnRyb2wpOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29jX2NvbXBv
bmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCXN0cnVjdCBDWDIwNzJYX0VRX0NUUkwgKmVx
ID0KKwkJKHN0cnVjdCBDWDIwNzJYX0VRX0NUUkwgKilrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsK
Kwl1OCAqcGFyYW0gPSB1Y29udHJvbC0+dmFsdWUuYnl0ZXMuZGF0YTsKKwl1OCAqY2FjaGUgPSBj
eDIwNzJ4LT5wbGJrX2VxW2VxLT5jaF1bZXEtPmJhbmRdOworCisJbXV0ZXhfbG9jaygmY3gyMDcy
eC0+ZXFfY29lZmZfbG9jayk7CisKKwkvKmRvIG5vdGhpbmcgaWYgdGhlIHZhbHVlIGlzIHRoZSBz
YW1lKi8KKwlpZiAobWVtY21wKGNhY2hlLCBwYXJhbSwgQ1gyMDcyWF9QTEJLX0VRX0NPRUZfTEVO
KSkKKwkJZ290byBFWElUOworCisJbWVtY3B5KGNhY2hlLCBwYXJhbSwgQ1gyMDcyWF9QTEJLX0VR
X0NPRUZfTEVOKTsKKworCWN4MjA3MngtPnBsYmtfZXFfY2hhbmdlZCA9IHRydWU7CisJY3gyMDcy
eC0+cGxia19lcV9jaGFubmVsID0gZXEtPmNoOworCisJY3gyMDcyeF91cGRhdGVfZHNwKGNvbXBv
bmVudCk7CitFWElUOgorCW11dGV4X3VubG9jaygmY3gyMDcyeC0+ZXFfY29lZmZfbG9jayk7CisJ
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3gyMDcyeF9jbGFzc2RfbGV2ZWxfaW5mbyhzdHJ1
Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1f
aW5mbyAqdWluZm8pCit7CisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0JZVEVT
OworCXVpbmZvLT5jb3VudCA9IENYMjA3MlhfQ0xBU1NEX0FNUF9MRU47CisKKwlyZXR1cm4gMDsK
K30KKworc3RhdGljIGludCBjeDIwNzJ4X2NsYXNzZF9sZXZlbF9nZXQoc3RydWN0IHNuZF9rY29u
dHJvbCAqa2NvbnRyb2wsCisJCQkJICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250
cm9sKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX3NvY19r
Y29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3
MnggPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCXU4ICpwYXJh
bSA9IHVjb250cm9sLT52YWx1ZS5ieXRlcy5kYXRhOworCXU4ICpjYWNoZSA9IGN4MjA3MngtPmNs
YXNzZF9hbXA7CisKKwltZW1jcHkocGFyYW0sIGNhY2hlLCBDWDIwNzJYX0NMQVNTRF9BTVBfTEVO
KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGN4MjA3MnhfY2xhc3NkX2xldmVsX3B1
dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkgICAgc3RydWN0IHNuZF9jdGxf
ZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21w
b25lbnQgPSBzbmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJvbCk7CisJc3RydWN0IGN4
MjA3MnhfcHJpdiAqY3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBv
bmVudCk7CisJdTggKnBhcmFtID0gdWNvbnRyb2wtPnZhbHVlLmJ5dGVzLmRhdGE7CisJdTggKmNh
Y2hlID0gY3gyMDcyeC0+Y2xhc3NkX2FtcDsKKworCW1lbWNweShjYWNoZSwgcGFyYW0sIENYMjA3
MlhfQ0xBU1NEX0FNUF9MRU4pOworCisJLyogQ29uZmlnIFBvd2VyIEF2ZXJhZ2luZyAqLworCWN4
MjA3MnhfcmVnX2J1bGtfd3JpdGUoY29tcG9uZW50LCBDWDIwNzJYX0FOQUxPR19URVNUMTAsCisJ
CQkgICAgICAgJmN4MjA3MngtPmNsYXNzZF9hbXBbMF0sIDIpOworCWN4MjA3MnhfcmVnX2J1bGtf
d3JpdGUoY29tcG9uZW50LCBDWDIwNzJYX0NPREVDX1RFU1QyMCwKKwkJCSAgICAgICAmY3gyMDcy
eC0+Y2xhc3NkX2FtcFsyXSwgMik7CisJY3gyMDcyeF9yZWdfYnVsa193cml0ZShjb21wb25lbnQs
IENYMjA3MlhfQ09ERUNfVEVTVDI2LAorCQkJICAgICAgICZjeDIwNzJ4LT5jbGFzc2RfYW1wWzRd
LCAyKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3BsYmtfZHJjX2luZm8o
c3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkJIHN0cnVjdCBzbmRfY3RsX2VsZW1f
aW5mbyAqdWluZm8pCit7CisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0JZVEVT
OworCXVpbmZvLT5jb3VudCA9IENYMjA3MlhfUExCS19EUkNfUEFSTV9MRU47CisKKwlyZXR1cm4g
MDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3BsYmtfZHJjX2dldChzdHJ1Y3Qgc25kX2tjb250
cm9sICprY29udHJvbCwKKwkJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkK
K3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2Nfa2NvbnRy
b2xfY29tcG9uZW50KGtjb250cm9sKTsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4ID0g
c25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwl1OCAqcGFyYW0gPSB1
Y29udHJvbC0+dmFsdWUuYnl0ZXMuZGF0YTsKKwl1OCAqY2FjaGUgPSBjeDIwNzJ4LT5wbGJrX2Ry
YzsKKworCW1lbWNweShwYXJhbSwgY2FjaGUsIENYMjA3MlhfUExCS19EUkNfUEFSTV9MRU4pOwor
CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3gyMDcyeF9wbGJrX2RyY19wdXQoc3RydWN0
IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAq
dWNvbnRyb2wpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBzbmRf
c29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJvbCk7CisJc3RydWN0IGN4MjA3MnhfcHJpdiAq
Y3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJdTgg
KnBhcmFtID0gdWNvbnRyb2wtPnZhbHVlLmJ5dGVzLmRhdGE7CisJdTggKmNhY2hlID0gY3gyMDcy
eC0+cGxia19kcmM7CisKKwltZW1jcHkoY2FjaGUsIHBhcmFtLCBDWDIwNzJYX1BMQktfRFJDX1BB
Uk1fTEVOKTsKKworCWN4MjA3MngtPnBsYmtfZHJjX2NoYW5nZWQgPSB0cnVlOworCWN4MjA3Mnhf
dXBkYXRlX2RzcChjb21wb25lbnQpOworCisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgQ1gyMDcy
WF9QTEJLX0RSQ19DT0VGKHhuYW1lKSBcCit7CS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNF
X01JWEVSLCAubmFtZSA9IHhuYW1lLCBcCisJLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VT
U19SRUFEV1JJVEUsIFwKKwkuaW5mbyA9IGN4MjA3MnhfcGxia19kcmNfaW5mbywgXAorCS5nZXQg
PSBjeDIwNzJ4X3BsYmtfZHJjX2dldCwgLnB1dCA9IGN4MjA3MnhfcGxia19kcmNfcHV0fQorCisj
ZGVmaW5lIENYMjA3MlhfUExCS19FUV9DT0VGKHhuYW1lLCB4Y2gsIHhiYW5kKSBcCit7CS5pZmFj
ZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLCAubmFtZSA9IHhuYW1lLCBcCisJLmFjY2Vz
cyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUgfCBcCisJCSAgU05EUlZfQ1RMX0VM
RU1fQUNDRVNTX1ZPTEFUSUxFLCBcCisJLmluZm8gPSBjeDIwNzJ4X3BsYmtfZXFfaW5mbywgXAor
CS5nZXQgPSBjeDIwNzJ4X3BsYmtfZXFfZ2V0LCAucHV0ID0gY3gyMDcyeF9wbGJrX2VxX3B1dCwg
XAorCS5wcml2YXRlX3ZhbHVlID0gXAorCQkodW5zaWduZWQgbG9uZykmKHN0cnVjdCBDWDIwNzJY
X0VRX0NUUkwpIFwKKwkJIHsuY2ggPSB4Y2gsIC5iYW5kID0geGJhbmQgfSB9CisKKyNkZWZpbmUg
Q1gyMDcyWF9QTEJLX0RTUF9FUV9TV0lUQ0goeG5hbWUpIFwKK3sJLmlmYWNlID0gU05EUlZfQ1RM
X0VMRU1fSUZBQ0VfTUlYRVIsIC5uYW1lID0gKHhuYW1lKSwgXAorCS5hY2Nlc3MgPSBTTkRSVl9D
VExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFLCBcCisJLmluZm8gPSBjeDIwNzJ4X3BsYmtfZXFfZW5f
aW5mbywgXAorCS5nZXQgPSBjeDIwNzJ4X3BsYmtfZXFfZW5fZ2V0LCAucHV0ID0gY3gyMDcyeF9w
bGJrX2VxX2VuX3B1dH0KKworI2RlZmluZSBDWDIwNzJYX1BMQktfRFNQX0RSQ19TV0lUQ0goeG5h
bWUpIFwKK3sJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsIC5uYW1lID0gKHhu
YW1lKSwgXAorCS5hY2Nlc3MgPSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFLCBcCisJ
LmluZm8gPSBjeDIwNzJ4X3BsYmtfZHJjX2VuX2luZm8sIFwKKwkuZ2V0ID0gY3gyMDcyeF9wbGJr
X2RyY19lbl9nZXQsIC5wdXQgPSBjeDIwNzJ4X3BsYmtfZHJjX2VuX3B1dH0KKworI2RlZmluZSBD
WDIwNzJYX0NMQVNTRF9MRVZFTCh4bmFtZSkgXAorewkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9J
RkFDRV9NSVhFUiwgLm5hbWUgPSAoeG5hbWUpLCBcCisJLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVN
X0FDQ0VTU19SRUFEV1JJVEUsIFwKKwkuaW5mbyA9IGN4MjA3MnhfY2xhc3NkX2xldmVsX2luZm8s
IFwKKwkuZ2V0ID0gY3gyMDcyeF9jbGFzc2RfbGV2ZWxfZ2V0LCAucHV0ID0gY3gyMDcyeF9jbGFz
c2RfbGV2ZWxfcHV0fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgY3gy
MDcyeF9zbmRfY29udHJvbHNbXSA9IHsKKwlTT0NfRE9VQkxFX1JfVExWKCJQb3J0RCBCb29zdCBW
b2x1bWUiLCBDWDIwNzJYX1BPUlREX0dBSU5fTEVGVCwKKwkJCSBDWDIwNzJYX1BPUlREX0dBSU5f
UklHSFQsIDAsIDMsIDAsIGJvb3N0X3RsdiksCisJU09DX0RPVUJMRV9SX1RMVigiUG9ydEMgQm9v
c3QgVm9sdW1lIiwgQ1gyMDcyWF9QT1JUQ19HQUlOX0xFRlQsCisJCQkgQ1gyMDcyWF9QT1JUQ19H
QUlOX1JJR0hULCAwLCAzLCAwLCBib29zdF90bHYpLAorCVNPQ19ET1VCTEVfUl9UTFYoIlBvcnRC
IEJvb3N0IFZvbHVtZSIsIENYMjA3MlhfUE9SVEJfR0FJTl9MRUZULAorCQkJIENYMjA3MlhfUE9S
VEJfR0FJTl9SSUdIVCwgMCwgMywgMCwgYm9vc3RfdGx2KSwKKwlTT0NfRE9VQkxFX1JfVExWKCJQ
b3J0RCBBREMxIFZvbHVtZSIsIENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzEsCisJCQkgQ1gy
MDcyWF9BREMxX0FNUF9HQUlOX1JJR0hUXzEsIDAsIDB4NGEsIDAsIGFkY190bHYpLAorCVNPQ19E
T1VCTEVfUl9UTFYoIlBvcnRDIEFEQzEgVm9sdW1lIiwgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX0xF
RlRfMiwKKwkJCSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklHSFRfMiwgMCwgMHg0YSwgMCwgYWRj
X3RsdiksCisJU09DX0RPVUJMRV9SX1RMVigiUG9ydEIgQURDMSBWb2x1bWUiLCBDWDIwNzJYX0FE
QzFfQU1QX0dBSU5fTEVGVF8wLAorCQkJIENYMjA3MlhfQURDMV9BTVBfR0FJTl9SSUdIVF8wLCAw
LCAweDRhLCAwLCBhZGNfdGx2KSwKKwlTT0NfRE9VQkxFX1JfVExWKCJEQUMxIFZvbHVtZSIsIENY
MjA3MlhfREFDMV9BTVBfR0FJTl9MRUZULAorCQkJIENYMjA3MlhfREFDMV9BTVBfR0FJTl9SSUdI
VCwgMCwgMHg0YSwgMCwgZGFjX3RsdiksCisJU09DX0RPVUJMRV9SKCJEQUMxIE11dGUgU3dpdGNo
IiwgQ1gyMDcyWF9EQUMxX0FNUF9HQUlOX0xFRlQsCisJCSAgICAgQ1gyMDcyWF9EQUMxX0FNUF9H
QUlOX1JJR0hULCA3LCAgMSwgMCksCisJU09DX0RPVUJMRV9SX1RMVigiREFDMiBWb2x1bWUiLCBD
WDIwNzJYX0RBQzJfQU1QX0dBSU5fTEVGVCwKKwkJCSBDWDIwNzJYX0RBQzJfQU1QX0dBSU5fUklH
SFQsIDAsIDB4NGEsIDAsIGRhY190bHYpLAorCUNYMjA3MlhfUExCS19EU1BfRVFfU1dJVENIKCJF
USBTd2l0Y2giKSwKKwlDWDIwNzJYX1BMQktfRFNQX0RSQ19TV0lUQ0goIkRSQyBTd2l0Y2giKSwK
KworCUNYMjA3MlhfUExCS19FUV9DT0VGKCJEQUNMIEVRIDAiLCAwLCAwKSwKKwlDWDIwNzJYX1BM
QktfRVFfQ09FRigiREFDTCBFUSAxIiwgMCwgMSksCisJQ1gyMDcyWF9QTEJLX0VRX0NPRUYoIkRB
Q0wgRVEgMiIsIDAsIDIpLAorCUNYMjA3MlhfUExCS19FUV9DT0VGKCJEQUNMIEVRIDMiLCAwLCAz
KSwKKwlDWDIwNzJYX1BMQktfRVFfQ09FRigiREFDTCBFUSA0IiwgMCwgNCksCisJQ1gyMDcyWF9Q
TEJLX0VRX0NPRUYoIkRBQ0wgRVEgNSIsIDAsIDUpLAorCUNYMjA3MlhfUExCS19FUV9DT0VGKCJE
QUNMIEVRIDYiLCAwLCA2KSwKKwlDWDIwNzJYX1BMQktfRVFfQ09FRigiREFDUiBFUSAwIiwgMSwg
MCksCisJQ1gyMDcyWF9QTEJLX0VRX0NPRUYoIkRBQ1IgRVEgMSIsIDEsIDEpLAorCUNYMjA3Mlhf
UExCS19FUV9DT0VGKCJEQUNSIEVRIDIiLCAxLCAyKSwKKwlDWDIwNzJYX1BMQktfRVFfQ09FRigi
REFDUiBFUSAzIiwgMSwgMyksCisJQ1gyMDcyWF9QTEJLX0VRX0NPRUYoIkRBQ1IgRVEgNCIsIDEs
IDQpLAorCUNYMjA3MlhfUExCS19FUV9DT0VGKCJEQUNSIEVRIDUiLCAxLCA1KSwKKwlDWDIwNzJY
X1BMQktfRVFfQ09FRigiREFDUiBFUSA2IiwgMSwgNiksCisJQ1gyMDcyWF9QTEJLX0RSQ19DT0VG
KCJEUkMiKSwKKwlTT0NfU0lOR0xFX1RMVigiSFBGIEZyZXEiLCBDWDIwNzJYX0NPREVDX1RFU1Q5
LCAwLCAweDNmLCAwLCBocGZfdGx2KSwKKwlTT0NfRE9VQkxFKCJIUEYgU3dpdGNoIiwgQ1gyMDcy
WF9DT0RFQ19URVNUOSwgOCwgOSwgMSwgMSksCisJQ1gyMDcyWF9DTEFTU0RfTEVWRUwoIkNsYXNz
LUQgT3V0cHV0IExldmVsIiksCisJU09DX1NJTkdMRSgiUG9ydEEgSFAgQW1wIFN3aXRjaCIsIENY
MjA3MlhfUE9SVEFfUElOX0NUUkwsIDcsIDEsIDApLAorfTsKKworLyoqCisgKiBjeDIwNzJ4X2Vu
YWJsZV9kZXRlY3QgLSBFbmFibGUgQ1gyMDcyWCBqYWNrIGRldGVjdGlvbgorICogQGNvbXBvbmVu
dCA6IHBvaW50ZXIgdmFyaWFibGUgdG8gY29tcG9uZW50IGhhdmluZyBpbmZvcm1hdGlvbiByZWxh
dGVkIHRvIGNvZGVjCisgKgorICovCitpbnQgY3gyMDcyeF9lbmFibGVfZGV0ZWN0KHN0cnVjdCBz
bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQoreworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4
MjA3MnggPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCXN0cnVj
dCBzbmRfc29jX2RhcG1fY29udGV4dCAqZGFwbSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kYXBt
KGNvbXBvbmVudCk7CisKKwkvKk5vLXN0aWNreSBpbnB1dCB0eXBlKi8KKwlyZWdtYXBfd3JpdGUo
Y3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0dQSU9fU1RJQ0tZX01BU0ssIDB4MWYpOworCisJLypV
c2UgR1BPSTAgYXMgaW50ZXJydXB0IHBpbiovCisJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21h
cCwgQ1gyMDcyWF9VTV9JTlRFUlJVUFRfQ1JUTF9FLCAweDEyIDw8IDI0KTsKKworCS8qIEVuYWJs
ZXMgdW5zb2xpdGl0ZWQgbWVzc2FnZSBvbiBQb3J0QSovCisJcmVnbWFwX3dyaXRlKGN4MjA3Mngt
PnJlZ21hcCwgQ1gyMDcyWF9QT1JUQV9VTlNPTElDSVRFRF9SRVNQT05TRSwgMHg4MCk7CisKKwkv
KiBzdXBwb3J0IGJvdGggbm9raWEgYW5kIGFwcGxlIGhlYWRzZXQgc2V0LiBNb25pdG9yIHRpbWUg
PSAyNzUgbXMqLworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfRElHSVRB
TF9URVNUMTUsIDB4NzMpOworCisJLyogRGlzYWJsZSBUSVAgZGV0ZWN0aW9uKi8KKwlyZWdtYXBf
d3JpdGUoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0FOQUxPR19URVNUMTIsIDB4MzAwKTsKKwor
CS8qIFN3aXRjaCBNdXNpY0QzTGl2ZSBwaW4gdG8gR1BJTyAqLworCXJlZ21hcF93cml0ZShjeDIw
NzJ4LT5yZWdtYXAsIENYMjA3MlhfRElHSVRBTF9URVNUMSwgMCk7CisKKwlzbmRfc29jX2RhcG1f
bXV0ZXhfbG9jayhkYXBtKTsKKworCXNuZF9zb2NfZGFwbV9mb3JjZV9lbmFibGVfcGluX3VubG9j
a2VkKGRhcG0sICJQT1JURCIpOworCXNuZF9zb2NfZGFwbV9mb3JjZV9lbmFibGVfcGluX3VubG9j
a2VkKGRhcG0sICJIZWFkc2V0IEJpYXMiKTsKKwlzbmRfc29jX2RhcG1fZm9yY2VfZW5hYmxlX3Bp
bl91bmxvY2tlZChkYXBtLCAiUG9ydEQgTWljIEJpYXMiKTsKKworCXNuZF9zb2NfZGFwbV9tdXRl
eF91bmxvY2soZGFwbSk7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChjeDIwNzJ4
X2VuYWJsZV9kZXRlY3QpOworCisvKgorICogY3gyMDcyeF9nZXRfamFja19zdGF0ZTogUmV0dXJu
IGN1cnJlbnQgamFjayBzdGF0ZS4KKyAqIEBjb21wb25lbnQgOiBwb2ludGVyIHZhcmlhYmxlIHRv
IGNvbXBvbmVudCBoYXZpbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBjb2RlYworICoKKyAqLwor
aW50IGN4MjA3MnhfZ2V0X2phY2tfc3RhdGUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21w
b25lbnQpCit7CisJdW5zaWduZWQgaW50IGphY2s7CisJdW5zaWduZWQgaW50IHR5cGUgPSAwOwor
CWludCAgc3RhdGUgPSAwOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3MnggPSBzbmRfc29j
X2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCWJvb2wgbmVlZF9jYWNoZV9ieXBh
c3MgPQorCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfYmlhc19sZXZlbChjb21wb25lbnQpID09IFNO
RF9TT0NfQklBU19PRkY7CisKKwlpZiAobmVlZF9jYWNoZV9ieXBhc3MpCisJCXJlZ2NhY2hlX2Nh
Y2hlX29ubHkoY3gyMDcyeC0+cmVnbWFwLCBmYWxzZSk7CisJY3gyMDcyeC0+amFja19zdGF0ZSA9
IENYX0pBQ0tfTk9ORTsKKwlyZWdtYXBfcmVhZChjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfUE9S
VEFfUElOX1NFTlNFLCAmamFjayk7CisJamFjayA9IGphY2sgPj4gMjQ7CisJcmVnbWFwX3JlYWQo
Y3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0RJR0lUQUxfVEVTVDExLCAmdHlwZSk7CisJaWYgKG5l
ZWRfY2FjaGVfYnlwYXNzKQorCQlyZWdjYWNoZV9jYWNoZV9vbmx5KGN4MjA3MngtPnJlZ21hcCwg
dHJ1ZSk7CisJaWYgKGphY2sgPT0gMHg4MCkgeworCQl0eXBlID0gdHlwZSA+PiA4OworCisJCWlm
ICh0eXBlICYgMHg4KSB7CisJCQlzdGF0ZSB8PSBTTkRfSkFDS19IRUFEU0VUOworCQkJY3gyMDcy
eC0+amFja19zdGF0ZSA9IENYX0pBQ0tfQVBQTEVfSEVBRFNFVDsKKwkJCWlmICh0eXBlICYgMHgy
KQorCQkJCXN0YXRlIHw9IFNORF9KQUNLX0JUTl8wOworCQl9IGVsc2UgaWYgKHR5cGUgJiAweDQp
IHsKKwkJCXN0YXRlIHw9IFNORF9KQUNLX0hFQURQSE9ORTsKKwkJCWN4MjA3MngtPmphY2tfc3Rh
dGUgPSBDWF9KQUNLX05PS0lFX0hFQURTRVQ7CisJCX0gZWxzZSB7CisJCQlzdGF0ZSB8PSBTTkRf
SkFDS19IRUFEUEhPTkU7CisJCQljeDIwNzJ4LT5qYWNrX3N0YXRlID0gQ1hfSkFDS19IRUFEUEhP
TkU7CisJCX0KKwl9CisKKwkvKiBjbGVhciBpbnRlcnJ1cHQgKi8KKwlyZWdtYXBfd3JpdGUoY3gy
MDcyeC0+cmVnbWFwLCBDWDIwNzJYX1VNX0lOVEVSUlVQVF9DUlRMX0UsIDB4MTIgPDwgMjQpOwor
CisJZGV2X2RiZyhjb21wb25lbnQtPmRldiwgIkNYMjA3MlhfSFNERVRFQ1QgdHlwZT0weCVYLEph
Y2sgc3RhdGUgPSAleFxuIiwKKwkJdHlwZSwgc3RhdGUpOworCXJldHVybiBzdGF0ZTsKK30KK0VY
UE9SVF9TWU1CT0xfR1BMKGN4MjA3MnhfZ2V0X2phY2tfc3RhdGUpOworCitzdGF0aWMgaW50IGN4
MjA3MnhfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJ
ICAgICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCSAgICAgc3RydWN0IHNu
ZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQg
PSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4ID0gc25kX3Nv
Y19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYg
PSBjb21wb25lbnQtPmRldjsKKwljb25zdCB1bnNpZ25lZCBpbnQgc2FtcGxlX3JhdGUgPSBwYXJh
bXNfcmF0ZShwYXJhbXMpOworCWludCBzYW1wbGVfc2l6ZSwgZnJhbWVfc2l6ZTsKKworCS8qIERh
dGEgc2l6ZXMgaWYgbm90IHVzaW5nIFRETSAqLworCXNhbXBsZV9zaXplID0gcGFyYW1zX3dpZHRo
KHBhcmFtcyk7CisKKwlpZiAoc2FtcGxlX3NpemUgPCAwKQorCQlyZXR1cm4gc2FtcGxlX3NpemU7
CisKKwlmcmFtZV9zaXplID0gc25kX3NvY19wYXJhbXNfdG9fZnJhbWVfc2l6ZShwYXJhbXMpOwor
CWlmIChmcmFtZV9zaXplIDwgMCkKKwkJcmV0dXJuIGZyYW1lX3NpemU7CisKKwlpZiAoY3gyMDcy
eC0+bWNsa19yYXRlID09IDApIHsKKwkJZGV2X2VycihkZXYsICJNYXN0ZXIgY2xvY2sgcmF0ZSBp
cyBub3QgY29uZmlndWVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGN4MjA3
MngtPmJjbGtfcmF0aW8pCisJCWZyYW1lX3NpemUgPSBjeDIwNzJ4LT5iY2xrX3JhdGlvOworCisJ
c3dpdGNoIChzYW1wbGVfcmF0ZSkgeworCWNhc2UgNDgwMDA6CisJY2FzZSAzMjAwMDoKKwljYXNl
IDI0MDAwOgorCWNhc2UgMTYwMDA6CisJY2FzZSA5NjAwMDoKKwljYXNlIDE5MjAwMDoKKwkJYnJl
YWs7CisKKwlkZWZhdWx0OgorCQlkZXZfZXJyKGRldiwgIlVuc3VwcG9ydGVkIHNhbXBsZSByYXRl
ICVkXG4iLCBzYW1wbGVfcmF0ZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWRldl9kYmco
ZGV2LCAiU2FtcGxlIHNpemUgJWQgYml0cywgZnJhbWUgPSAlZCBiaXRzLCByYXRlID0gJWQgSHpc
biIsCisJCXNhbXBsZV9zaXplLCBmcmFtZV9zaXplLCBzYW1wbGVfcmF0ZSk7CisKKwljeDIwNzJ4
LT5mcmFtZV9zaXplID0gZnJhbWVfc2l6ZTsKKwljeDIwNzJ4LT5zYW1wbGVfc2l6ZSA9IHNhbXBs
ZV9zaXplOworCWN4MjA3MngtPnNhbXBsZV9yYXRlID0gc2FtcGxlX3JhdGU7CisKKwlpZiAoZGFp
LT5pZCA9PSBDWDIwNzJYX0RBSV9EU1ApIHsKKwkJY3gyMDcyeC0+ZW5fYWVjX3JlZiA9IHRydWU7
CisJCWRldl9kYmcoY3gyMDcyeC0+ZGV2LCAiZW5hYmxlcyBhZWMgcmVmZXJlbmNlXG4iKTsKKwkJ
cmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwKKwkJCSAgICAgQ1gyMDcyWF9BREMxX0NPTk5F
Q1RJT05fU0VMRUNUX0NPTlRST0wsIDMpOworCX0KKworCWlmIChjeDIwNzJ4LT5wbGxfY2hhbmdl
ZCkgeworCQljeDIwNzJ4X2NvbmZpZ19wbGwoY3gyMDcyeCk7CisJCWN4MjA3MngtPnBsbF9jaGFu
Z2VkID0gZmFsc2U7CisJfQorCisJaWYgKGN4MjA3MngtPmkyc3BjbV9jaGFuZ2VkKSB7CisJCWN4
MjA3MnhfY29uZmlnX2kyc3BjbShjeDIwNzJ4KTsKKwkJY3gyMDcyeC0+aTJzcGNtX2NoYW5nZWQg
PSBmYWxzZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY3gyMDcyeF9zaHV0
ZG93bihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCSAgICAgc3RydWN0
IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25l
bnQgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4ID0gc25k
X3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKworCS8qIHNodXRkb3duIGNv
bXBvbmVudC4gKi8KKwlyZWdjYWNoZV9jYWNoZV9vbmx5KGN4MjA3MngtPnJlZ21hcCwgZmFsc2Up
OworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfUE9SVEFfUE9XRVJfU1RB
VEUsIDMpOworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfUE9SVEJfUE9X
RVJfU1RBVEUsIDMpOworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfUE9S
VENfUE9XRVJfU1RBVEUsIDMpOworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3
MlhfUE9SVERfUE9XRVJfU1RBVEUsIDMpOworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAs
IENYMjA3MlhfUE9SVEVfUE9XRVJfU1RBVEUsIDMpOworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5y
ZWdtYXAsIENYMjA3MlhfUE9SVEdfUE9XRVJfU1RBVEUsIDMpOworCXJlZ21hcF93cml0ZShjeDIw
NzJ4LT5yZWdtYXAsIENYMjA3MlhfTUlYRVJfUE9XRVJfU1RBVEUsIDMpOworCXJlZ21hcF93cml0
ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfQURDMV9QT1dFUl9TVEFURSwgMyk7CisJcmVnbWFw
X3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9BREMyX1BPV0VSX1NUQVRFLCAzKTsKKwly
ZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVnbWFwLCBDWDIwNzJYX0RBQzFfUE9XRVJfU1RBVEUsIDMp
OworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfREFDMl9QT1dFUl9TVEFU
RSwgMyk7CisKKwlzbmRfc29jX2NvbXBvbmVudF9mb3JjZV9iaWFzX2xldmVsKGNvbXBvbmVudCwg
U05EX1NPQ19CSUFTX09GRik7Cit9CisKK3N0YXRpYyBpbnQgY3gyMDcyeF9zZXRfZGFpX2JjbGtf
cmF0aW8oc3RydWN0IHNuZF9zb2NfZGFpICpkYWksCisJCQkJICAgICAgdW5zaWduZWQgaW50IHJh
dGlvKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gZGFpLT5jb21w
b25lbnQ7CisJc3RydWN0IGN4MjA3MnhfcHJpdiAqY3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50
X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisKKwljeDIwNzJ4LT5iY2xrX3JhdGlvID0gcmF0aW87
CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3NldF9kYWlfc3lzY2xrKHN0
cnVjdCBzbmRfc29jX2RhaSAqZGFpLCBpbnQgY2xrX2lkLAorCQkJCSAgdW5zaWduZWQgaW50IGZy
ZXEsIGludCBkaXIpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBk
YWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4ID0gc25kX3NvY19j
b21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKworCWlmIChjeDIwNzJ4LT5tY2xrICYm
IGNsa19zZXRfcmF0ZShjeDIwNzJ4LT5tY2xrLCBmcmVxKSkgeworCQlkZXZfZXJyKGNvbXBvbmVu
dC0+ZGV2LCAic2V0IGNsayByYXRlIGZhaWxlZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0K
KworCWN4MjA3MngtPm1jbGtfcmF0ZSA9IGZyZXE7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj
IGludCBjeDIwNzJ4X3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpLCB1bnNpZ25l
ZCBpbnQgZm10KQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gZGFp
LT5jb21wb25lbnQ7CisJc3RydWN0IGN4MjA3MnhfcHJpdiAqY3gyMDcyeCA9IHNuZF9zb2NfY29t
cG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY29t
cG9uZW50LT5kZXY7CisKKwlkZXZfZGJnKGRldiwgInNldF9kYWlfZm10LSAlMDh4XG4iLCBmbXQp
OworCS8qIHNldCBtYXN0ZXIvc2xhdmUgKi8KKwlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1U
X01BU1RFUl9NQVNLKSB7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9DQk1fQ0ZNOgorCWNhc2UgU05E
X1NPQ19EQUlGTVRfQ0JTX0NGUzoKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlkZXZfZXJyKGRl
diwgIlVuc3VwcG9ydGVkIERBSSBtYXN0ZXIgbW9kZVxuIik7CisJCXJldHVybiAtRUlOVkFMOwor
CX0KKworCS8qIHNldCBmb3JtYXQgKi8KKwlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0ZP
Uk1BVF9NQVNLKSB7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6CisJY2FzZSBTTkRfU09DX0RB
SUZNVF9SSUdIVF9KOgorCWNhc2UgU05EX1NPQ19EQUlGTVRfTEVGVF9KOgorCQlicmVhazsKKwor
CWRlZmF1bHQ6CisJCWRldl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgREFJIGZvcm1hdFxuIik7CisJ
CXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIGNsb2NrIGludmVyc2lvbiAqLworCXN3aXRjaCAo
Zm10ICYgU05EX1NPQ19EQUlGTVRfSU5WX01BU0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX05C
X05GOgorCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfSUY6CisJY2FzZSBTTkRfU09DX0RBSUZNVF9J
Ql9ORjoKKwljYXNlIFNORF9TT0NfREFJRk1UX05CX0lGOgorCQlicmVhazsKKworCWRlZmF1bHQ6
CisJCWRldl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgREFJIGNsb2NrIGludmVyc2lvblxuIik7CisJ
CXJldHVybiAtRUlOVkFMOworCX0KKworCWN4MjA3MngtPmRhaV9mbXQgPSBmbXQ7CisJcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBwb3J0YW91dGVu
X2N0bCA9CisJU09DX0RBUE1fU0lOR0xFKCJTd2l0Y2giLCBDWDIwNzJYX1BPUlRBX1BJTl9DVFJM
LCA2LCAxLCAwKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHBvcnRl
b3V0ZW5fY3RsID0KKwlTT0NfREFQTV9TSU5HTEUoIlN3aXRjaCIsIENYMjA3MlhfUE9SVEVfUElO
X0NUUkwsIDYsIDEsIDApOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcg
cG9ydGdvdXRlbl9jdGwgPQorCVNPQ19EQVBNX1NJTkdMRSgiU3dpdGNoIiwgQ1gyMDcyWF9QT1JU
R19QSU5fQ1RSTCwgNiwgMSwgMCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9s
X25ldyBwb3J0bW91dGVuX2N0bCA9CisJU09DX0RBUE1fU0lOR0xFKCJTd2l0Y2giLCBDWDIwNzJY
X1BPUlRNX1BJTl9DVFJMLCA2LCAxLCAwKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv
bnRyb2xfbmV3IHBvcnRiaW5lbl9jdGwgPQorCVNPQ19EQVBNX1NJTkdMRSgiU3dpdGNoIiwgQ1gy
MDcyWF9QT1JUQl9QSU5fQ1RSTCwgNSwgMSwgMCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25k
X2tjb250cm9sX25ldyBwb3J0Y2luZW5fY3RsID0KKwlTT0NfREFQTV9TSU5HTEUoIlN3aXRjaCIs
IENYMjA3MlhfUE9SVENfUElOX0NUUkwsIDUsIDEsIDApOworCitzdGF0aWMgY29uc3Qgc3RydWN0
IHNuZF9rY29udHJvbF9uZXcgcG9ydGRpbmVuX2N0bCA9CisJU09DX0RBUE1fU0lOR0xFKCJTd2l0
Y2giLCBDWDIwNzJYX1BPUlREX1BJTl9DVFJMLCA1LCAxLCAwKTsKKworc3RhdGljIGNvbnN0IHN0
cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHBvcnRlaW5lbl9jdGwgPQorCVNPQ19EQVBNX1NJTkdMRSgi
U3dpdGNoIiwgQ1gyMDcyWF9QT1JURV9QSU5fQ1RSTCwgNSwgMSwgMCk7CisKK3N0YXRpYyBjb25z
dCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnNhZGMxbF9jdGwgPQorCVNPQ19EQVBNX1NJTkdM
RSgiU3dpdGNoIiwgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDIsIDAsIDEsIDApOworCitzdGF0aWMg
Y29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzYWRjMXJfY3RsID0KKwlTT0NfREFQTV9T
SU5HTEUoIlN3aXRjaCIsIENYMjA3MlhfSTJTUENNX0NPTlRST0wyLCAxLCAxLCAwKTsKKworc3Rh
dGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGkyc2FkYzJsX2N0bCA9CisJU09DX0RB
UE1fU0lOR0xFKCJTd2l0Y2giLCBDWDIwNzJYX0kyU1BDTV9DT05UUk9MMiwgMiwgMSwgMCk7CisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnNhZGMycl9jdGwgPQorCVNP
Q19EQVBNX1NJTkdMRSgiU3dpdGNoIiwgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDIsIDMsIDEsIDAp
OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzZGFjMWxfY3RsID0K
KwlTT0NfREFQTV9TSU5HTEUoIlN3aXRjaCIsIENYMjA3MlhfSTJTUENNX0NPTlRST0wzLCAwLCAx
LCAwKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGkyc2RhYzFyX2N0
bCA9CisJU09DX0RBUE1fU0lOR0xFKCJTd2l0Y2giLCBDWDIwNzJYX0kyU1BDTV9DT05UUk9MMywg
MSwgMSwgMCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnNkYWMy
bF9jdGwgPQorCVNPQ19EQVBNX1NJTkdMRSgiU3dpdGNoIiwgQ1gyMDcyWF9JMlNQQ01fQ09OVFJP
TDMsIDIsIDEsIDApOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJz
ZGFjMnJfY3RsID0KKwlTT0NfREFQTV9TSU5HTEUoIlN3aXRjaCIsIENYMjA3MlhfSTJTUENNX0NP
TlRST0wzLCAzLCAxLCAwKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkYWNfZW51bV90
ZXh0W10gPSB7CisJIkRBQzEgU3dpdGNoIiwgIkRBQzIgU3dpdGNoIiwKK307CisKK3N0YXRpYyBj
b25zdCBzdHJ1Y3Qgc29jX2VudW0gcG9ydGFfZGFjX2VudW0gPQorU09DX0VOVU1fU0lOR0xFKENY
MjA3MlhfUE9SVEFfQ09OTkVDVElPTl9TRUxFQ1RfQ1RSTCwgMCwgMiwgZGFjX2VudW1fdGV4dCk7
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBwb3J0YV9tdXggPQorU09D
X0RBUE1fRU5VTSgiUG9ydEEgTXV4IiwgcG9ydGFfZGFjX2VudW0pOworCitzdGF0aWMgY29uc3Qg
c3RydWN0IHNvY19lbnVtIHBvcnRnX2RhY19lbnVtID0KK1NPQ19FTlVNX1NJTkdMRShDWDIwNzJY
X1BPUlRHX0NPTk5FQ1RJT05fU0VMRUNUX0NUUkwsIDAsIDIsIGRhY19lbnVtX3RleHQpOworCitz
dGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgcG9ydGdfbXV4ID0KK1NPQ19EQVBN
X0VOVU0oIlBvcnRHIE11eCIsIHBvcnRnX2RhY19lbnVtKTsKKworc3RhdGljIGNvbnN0IHN0cnVj
dCBzb2NfZW51bSBwb3J0ZV9kYWNfZW51bSA9CitTT0NfRU5VTV9TSU5HTEUoQ1gyMDcyWF9QT1JU
RV9DT05ORUNUSU9OX1NFTEVDVF9DVFJMLCAwLCAyLCBkYWNfZW51bV90ZXh0KTsKKworc3RhdGlj
IGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHBvcnRlX211eCA9CitTT0NfREFQTV9FTlVN
KCJQb3J0RSBNdXgiLCBwb3J0ZV9kYWNfZW51bSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29j
X2VudW0gcG9ydG1fZGFjX2VudW0gPQorU09DX0VOVU1fU0lOR0xFKENYMjA3MlhfUE9SVE1fQ09O
TkVDVElPTl9TRUxFQ1RfQ1RSTCwgMCwgMiwgZGFjX2VudW1fdGV4dCk7CisKK3N0YXRpYyBjb25z
dCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBwb3J0bV9tdXggPQorU09DX0RBUE1fRU5VTSgiUG9y
dE0gTXV4IiwgcG9ydG1fZGFjX2VudW0pOworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFk
YzFpbl9zZWxfdGV4dFtdID0geworCSJQb3J0QiBTd2l0Y2giLCAiUG9ydEQgU3dpdGNoIiwgIlBv
cnRDIFN3aXRjaCIsICJXaWRnZXQxNSBTd2l0Y2giLAorCSJQb3J0RSBTd2l0Y2giLCAiUG9ydEYg
U3dpdGNoIiwgIlBvcnRIIFN3aXRjaCIKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2Vu
dW0gYWRjMWluX3NlbF9lbnVtID0KK1NPQ19FTlVNX1NJTkdMRShDWDIwNzJYX0FEQzFfQ09OTkVD
VElPTl9TRUxFQ1RfQ09OVFJPTCwgMCwgNywgYWRjMWluX3NlbF90ZXh0KTsKKworc3RhdGljIGNv
bnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFkYzFfbXV4ID0KK1NPQ19EQVBNX0VOVU0oIkFE
QzEgTXV4IiwgYWRjMWluX3NlbF9lbnVtKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBh
ZGMyaW5fc2VsX3RleHRbXSA9IHsKKwkiUG9ydEMgU3dpdGNoIiwgIldpZGdldDE1IFN3aXRjaCIs
ICJQb3J0SCBTd2l0Y2giCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGFkYzJp
bl9zZWxfZW51bSA9CitTT0NfRU5VTV9TSU5HTEUoQ1gyMDcyWF9BREMyX0NPTk5FQ1RJT05fU0VM
RUNUX0NPTlRST0wsIDAsIDMsIGFkYzJpbl9zZWxfdGV4dCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1
Y3Qgc25kX2tjb250cm9sX25ldyBhZGMyX211eCA9CitTT0NfREFQTV9FTlVNKCJBREMyIE11eCIs
IGFkYzJpbl9zZWxfZW51bSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25l
dyB3aWQxNV9taXhbXSA9IHsKKwlTT0NfREFQTV9TSU5HTEUoIkRBQzFMIFN3aXRjaCIsIENYMjA3
MlhfTUlYRVJfR0FJTl9MRUZUXzAsIDcsIDEsIDEpLAorCVNPQ19EQVBNX1NJTkdMRSgiREFDMVIg
U3dpdGNoIiwgQ1gyMDcyWF9NSVhFUl9HQUlOX1JJR0hUXzAsIDcsIDEsIDEpLAorCVNPQ19EQVBN
X1NJTkdMRSgiREFDMkwgU3dpdGNoIiwgQ1gyMDcyWF9NSVhFUl9HQUlOX0xFRlRfMSwgNywgMSwg
MSksCisJU09DX0RBUE1fU0lOR0xFKCJEQUMyUiBTd2l0Y2giLCBDWDIwNzJYX01JWEVSX0dBSU5f
UklHSFRfMSwgNywgMSwgMSksCit9OworCisjZGVmaW5lIENYMjA3MlhfREFQTV9TVVBQTFlfUyh3
bmFtZSwgd3N1YnNlcSwgd3JlZywgd3NoaWZ0LCB3bWFzaywgIHdvbl92YWwsIFwKKwl3b2ZmX3Zh
bCwgd2V2ZW50LCB3ZmxhZ3MpIFwKKwl7LmlkID0gc25kX3NvY19kYXBtX3N1cHBseSwgLm5hbWUg
PSB3bmFtZSwgLmtjb250cm9sX25ld3MgPSBOVUxMLCBcCisJLm51bV9rY29udHJvbHMgPSAwLCAu
cmVnID0gd3JlZywgLnNoaWZ0ID0gd3NoaWZ0LCAubWFzayA9IHdtYXNrLCBcCisJLm9uX3ZhbCA9
IHdvbl92YWwsIC5vZmZfdmFsID0gd29mZl92YWwsIFwKKwkuc3Vic2VxID0gd3N1YnNlcSwgLmV2
ZW50ID0gd2V2ZW50LCAuZXZlbnRfZmxhZ3MgPSB3ZmxhZ3N9CisKKyNkZWZpbmUgQ1gyMDcyWF9E
QVBNX1NXSVRDSCh3bmFtZSwgIHdyZWcsIHdzaGlmdCwgd21hc2ssICB3b25fdmFsLCB3b2ZmX3Zh
bCwgXAorCXdldmVudCwgd2ZsYWdzKSBcCisJey5pZCA9IHNuZF9zb2NfZGFwbV9zd2l0Y2gsIC5u
YW1lID0gd25hbWUsIC5rY29udHJvbF9uZXdzID0gTlVMTCwgXAorCS5udW1fa2NvbnRyb2xzID0g
MCwgLnJlZyA9IHdyZWcsIC5zaGlmdCA9IHdzaGlmdCwgLm1hc2sgPSB3bWFzaywgXAorCS5vbl92
YWwgPSB3b25fdmFsLCAub2ZmX3ZhbCA9IHdvZmZfdmFsLCBcCisJLmV2ZW50ID0gd2V2ZW50LCAu
ZXZlbnRfZmxhZ3MgPSB3ZmxhZ3N9CisKKyNkZWZpbmUgQ1gyMDcyWF9EQVBNX1NXSVRDSCh3bmFt
ZSwgIHdyZWcsIHdzaGlmdCwgd21hc2ssICB3b25fdmFsLCB3b2ZmX3ZhbCwgXAorCXdldmVudCwg
d2ZsYWdzKSBcCisJey5pZCA9IHNuZF9zb2NfZGFwbV9zd2l0Y2gsIC5uYW1lID0gd25hbWUsIC5r
Y29udHJvbF9uZXdzID0gTlVMTCwgXAorCS5udW1fa2NvbnRyb2xzID0gMCwgLnJlZyA9IHdyZWcs
IC5zaGlmdCA9IHdzaGlmdCwgLm1hc2sgPSB3bWFzaywgXAorCS5vbl92YWwgPSB3b25fdmFsLCAu
b2ZmX3ZhbCA9IHdvZmZfdmFsLCBcCisJLmV2ZW50ID0gd2V2ZW50LCAuZXZlbnRfZmxhZ3MgPSB3
ZmxhZ3N9CisKKyNkZWZpbmUgQ1gyMDcyWF9EQVBNX1JFR19FKHdpZCwgd25hbWUsIHdyZWcsIHdz
aGlmdCwgd21hc2ssIHdvbl92YWwsIHdvZmZfdmFsLCBcCisJCQkJd2V2ZW50LCB3ZmxhZ3MpIFwK
Kwl7LmlkID0gd2lkLCAubmFtZSA9IHduYW1lLCAua2NvbnRyb2xfbmV3cyA9IE5VTEwsIC5udW1f
a2NvbnRyb2xzID0gMCwgXAorCS5yZWcgPSB3cmVnLCAuc2hpZnQgPSB3c2hpZnQsIC5tYXNrID0g
d21hc2ssIFwKKwkub25fdmFsID0gd29uX3ZhbCwgLm9mZl92YWwgPSB3b2ZmX3ZhbCwgXAorCS5l
dmVudCA9IHdldmVudCwgLmV2ZW50X2ZsYWdzID0gd2ZsYWdzfQorCitzdGF0aWMgY29uc3Qgc3Ry
dWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgY3gyMDcyeF9kYXBtX3dpZGdldHNbXSA9IHsKKwkvKlBs
YXliYWNrKi8KKwlTTkRfU09DX0RBUE1fQUlGX0lOKCJJbiBBSUYiLCAiUGxheWJhY2siLCAwLCBT
TkRfU09DX05PUE0sIDAsIDApLAorCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiSTJTIERBQzFMIiwg
U05EX1NPQ19OT1BNLCAwLCAwLCAmaTJzZGFjMWxfY3RsKSwKKwlTTkRfU09DX0RBUE1fU1dJVENI
KCJJMlMgREFDMVIiLCBTTkRfU09DX05PUE0sIDAsIDAsICZpMnNkYWMxcl9jdGwpLAorCVNORF9T
T0NfREFQTV9TV0lUQ0goIkkyUyBEQUMyTCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJmkyc2RhYzJs
X2N0bCksCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiSTJTIERBQzJSIiwgU05EX1NPQ19OT1BNLCAw
LCAwLCAmaTJzZGFjMnJfY3RsKSwKKworCVNORF9TT0NfREFQTV9SRUcoc25kX3NvY19kYXBtX2Rh
YywgIkRBQzEiLCBDWDIwNzJYX0RBQzFfUE9XRVJfU1RBVEUsCisJCQkgMCwgMHhGRkYsIDB4MDAs
IDB4MDMpLAorCisJU05EX1NPQ19EQVBNX1JFRyhzbmRfc29jX2RhcG1fZGFjLCAiREFDMiIsIENY
MjA3MlhfREFDMl9QT1dFUl9TVEFURSwKKwkJCSAwLCAweEZGRiwgMHgwMCwgMHgwMyksCisKKwlT
TkRfU09DX0RBUE1fTVVYKCJQb3J0QSBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsICZwb3J0YV9t
dXgpLAorCVNORF9TT0NfREFQTV9NVVgoIlBvcnRHIE11eCIsIFNORF9TT0NfTk9QTSwgMCwgMCwg
JnBvcnRnX211eCksCisJU05EX1NPQ19EQVBNX01VWCgiUG9ydEUgTXV4IiwgU05EX1NPQ19OT1BN
LCAwLCAwLCAmcG9ydGVfbXV4KSwKKwlTTkRfU09DX0RBUE1fTVVYKCJQb3J0TSBNdXgiLCBTTkRf
U09DX05PUE0sIDAsIDAsICZwb3J0bV9tdXgpLAorCisJU05EX1NPQ19EQVBNX1JFRyhzbmRfc29j
X2RhcG1fc3VwcGx5LCAiUG9ydEEgUG93ZXIiLAorCQkJIENYMjA3MlhfUE9SVEFfUE9XRVJfU1RB
VEUsIDAsIDBYRkZGLCAwWDAwLCAwWDAzKSwKKworCVNORF9TT0NfREFQTV9SRUcoc25kX3NvY19k
YXBtX3N1cHBseSwgIlBvcnRNIFBvd2VyIiwKKwkJCSBDWDIwNzJYX1BPUlRNX1BPV0VSX1NUQVRF
LCAwLCAwWEZGRiwgMFgwMCwgMFgwMyksCisKKwlDWDIwNzJYX0RBUE1fU1VQUExZX1MoIlBvcnRH
IFBvd2VyIiwgMSwgQ1gyMDcyWF9QT1JUR19QT1dFUl9TVEFURSwgMCwKKwkJCSAgICAgIDB4RkYs
IDB4MDAsIDB4MDMsIHBvcnRnX3Bvd2VyX2V2LAorCQkJICAgICAgU05EX1NPQ19EQVBNX1BPU1Rf
UE1VKSwKKworCUNYMjA3MlhfREFQTV9TVVBQTFlfUygiQUZHIFBvd2VyIiwgMCwgQ1gyMDcyWF9B
RkdfUE9XRVJfU1RBVEUsCisJCQkgICAgICAwLCAweEZGRiwgMHgwMCwgMHgwMywgYWZnX3Bvd2Vy
X2V2LAorCQkJICAgICAgU05EX1NPQ19EQVBNX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9Q
TUQpLAorCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiUG9ydEEgT3V0IEVuIiwgU05EX1NPQ19OT1BN
LCAwLCAwLAorCQkJICAgICZwb3J0YW91dGVuX2N0bCksCisJU05EX1NPQ19EQVBNX1NXSVRDSCgi
UG9ydEUgT3V0IEVuIiwgU05EX1NPQ19OT1BNLCAwLCAwLAorCQkJICAgICZwb3J0ZW91dGVuX2N0
bCksCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiUG9ydEcgT3V0IEVuIiwgU05EX1NPQ19OT1BNLCAw
LCAwLAorCQkJICAgICZwb3J0Z291dGVuX2N0bCksCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiUG9y
dE0gT3V0IEVuIiwgU05EX1NPQ19OT1BNLCAwLCAwLAorCQkJICAgICZwb3J0bW91dGVuX2N0bCks
CisKKwlTTkRfU09DX0RBUE1fT1VUUFVUKCJQT1JUQSIpLAorCVNORF9TT0NfREFQTV9PVVRQVVQo
IlBPUlRHIiksCisJU05EX1NPQ19EQVBNX09VVFBVVCgiUE9SVEUiKSwKKwlTTkRfU09DX0RBUE1f
T1VUUFVUKCJQT1JUTSIpLAorCVNORF9TT0NfREFQTV9PVVRQVVQoIkFFQyBSRUYiKSwKKworCS8q
Q2FwdHVyZSovCisJU05EX1NPQ19EQVBNX0FJRl9PVVQoIk91dCBBSUYiLCAiQ2FwdHVyZSIsIDAs
IFNORF9TT0NfTk9QTSwgMCwgMCksCisKKwlTTkRfU09DX0RBUE1fU1dJVENIKCJJMlMgQURDMUwi
LCBTTkRfU09DX05PUE0sIDAsIDAsICZpMnNhZGMxbF9jdGwpLAorCVNORF9TT0NfREFQTV9TV0lU
Q0goIkkyUyBBREMxUiIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJmkyc2FkYzFyX2N0bCksCisJU05E
X1NPQ19EQVBNX1NXSVRDSCgiSTJTIEFEQzJMIiwgU05EX1NPQ19OT1BNLCAwLCAwLCAmaTJzYWRj
MmxfY3RsKSwKKwlTTkRfU09DX0RBUE1fU1dJVENIKCJJMlMgQURDMlIiLCBTTkRfU09DX05PUE0s
IDAsIDAsICZpMnNhZGMycl9jdGwpLAorCisJU05EX1NPQ19EQVBNX1JFRyhzbmRfc29jX2RhcG1f
YWRjLCAiQURDMSIsIENYMjA3MlhfQURDMV9QT1dFUl9TVEFURSwKKwkJCSAwLCAweEZGLCAweDAw
LCAweDAzKSwKKwlTTkRfU09DX0RBUE1fUkVHKHNuZF9zb2NfZGFwbV9hZGMsICJBREMyIiwgQ1gy
MDcyWF9BREMyX1BPV0VSX1NUQVRFLAorCQkJIDAsIDB4RkYsIDB4MDAsIDB4MDMpLAorCisJU05E
X1NPQ19EQVBNX01VWCgiQURDMSBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsICZhZGMxX211eCks
CisJU05EX1NPQ19EQVBNX01VWCgiQURDMiBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsICZhZGMy
X211eCksCisKKwlTTkRfU09DX0RBUE1fUkVHKHNuZF9zb2NfZGFwbV9zdXBwbHksICJQb3J0QiBQ
b3dlciIsCisJCQkgQ1gyMDcyWF9QT1JUQl9QT1dFUl9TVEFURSwgMCwgMHhGRkYsIDB4MDAsIDB4
MDMpLAorCVNORF9TT0NfREFQTV9SRUcoc25kX3NvY19kYXBtX3N1cHBseSwgIlBvcnRDIFBvd2Vy
IiwKKwkJCSBDWDIwNzJYX1BPUlRDX1BPV0VSX1NUQVRFLCAwLCAweEZGRiwgMHgwMCwgMHgwMyks
CisJU05EX1NPQ19EQVBNX1JFRyhzbmRfc29jX2RhcG1fc3VwcGx5LCAiUG9ydEQgUG93ZXIiLAor
CQkJIENYMjA3MlhfUE9SVERfUE9XRVJfU1RBVEUsIDAsIDB4RkZGLCAweDAwLCAweDAzKSwKKwlT
TkRfU09DX0RBUE1fUkVHKHNuZF9zb2NfZGFwbV9zdXBwbHksICJQb3J0RSBQb3dlciIsCisJCQkg
Q1gyMDcyWF9QT1JURV9QT1dFUl9TVEFURSwgMCwgMHhGRkYsIDB4MDAsIDB4MDMpLAorCVNORF9T
T0NfREFQTV9SRUcoc25kX3NvY19kYXBtX3N1cHBseSwgIldpZGdldDE1IFBvd2VyIiwKKwkJCSBD
WDIwNzJYX01JWEVSX1BPV0VSX1NUQVRFLCAwLCAweEZGRiwgMHgwMCwgMHgwMyksCisKKwlTTkRf
U09DX0RBUE1fTUlYRVIoIldpZGdldDE1IE1peGVyIiwgU05EX1NPQ19OT1BNLCAwLCAwLAorCQkJ
ICAgd2lkMTVfbWl4LCBBUlJBWV9TSVpFKHdpZDE1X21peCkpLAorCVNORF9TT0NfREFQTV9TV0lU
Q0goIlBvcnRCIEluIEVuIiwgU05EX1NPQ19OT1BNLCAwLCAwLCAmcG9ydGJpbmVuX2N0bCksCisJ
U05EX1NPQ19EQVBNX1NXSVRDSCgiUG9ydEMgSW4gRW4iLCBTTkRfU09DX05PUE0sIDAsIDAsICZw
b3J0Y2luZW5fY3RsKSwKKwlTTkRfU09DX0RBUE1fU1dJVENIKCJQb3J0RCBJbiBFbiIsIFNORF9T
T0NfTk9QTSwgMCwgMCwgJnBvcnRkaW5lbl9jdGwpLAorCVNORF9TT0NfREFQTV9TV0lUQ0goIlBv
cnRFIEluIEVuIiwgU05EX1NPQ19OT1BNLCAwLCAwLCAmcG9ydGVpbmVuX2N0bCksCisKKwlTTkRf
U09DX0RBUE1fTUlDQklBUygiSGVhZHNldCBCaWFzIiwgQ1gyMDcyWF9BTkFMT0dfVEVTVDExLCAx
LCAwKSwKKwlTTkRfU09DX0RBUE1fTUlDQklBUygiUG9ydEIgTWljIEJpYXMiLCBDWDIwNzJYX1BP
UlRCX1BJTl9DVFJMLCAyLCAwKSwKKwlTTkRfU09DX0RBUE1fTUlDQklBUygiUG9ydEQgTWljIEJp
YXMiLCBDWDIwNzJYX1BPUlREX1BJTl9DVFJMLCAyLCAwKSwKKwlTTkRfU09DX0RBUE1fTUlDQklB
UygiUG9ydEUgTWljIEJpYXMiLCBDWDIwNzJYX1BPUlRFX1BJTl9DVFJMLCAyLCAwKSwKKwlTTkRf
U09DX0RBUE1fSU5QVVQoIlBPUlRCIiksCisJU05EX1NPQ19EQVBNX0lOUFVUKCJQT1JUQyIpLAor
CVNORF9TT0NfREFQTV9JTlBVVCgiUE9SVEQiKSwKKwlTTkRfU09DX0RBUE1fSU5QVVQoIlBPUlRF
SU4iKSwKKworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgY3gy
MDcyeF9pbnRlcmNvbltdID0geworCS8qIFBsYXliYWNrICovCisJeyJJbiBBSUYiLCBOVUxMLCAi
QUZHIFBvd2VyIn0sCisJeyJJMlMgREFDMUwiLCAiU3dpdGNoIiwgIkluIEFJRiJ9LAorCXsiSTJT
IERBQzFSIiwgIlN3aXRjaCIsICJJbiBBSUYifSwKKwl7IkkyUyBEQUMyTCIsICJTd2l0Y2giLCAi
SW4gQUlGIn0sCisJeyJJMlMgREFDMlIiLCAiU3dpdGNoIiwgIkluIEFJRiJ9LAorCXsiREFDMSIs
IE5VTEwsICJJMlMgREFDMUwifSwKKwl7IkRBQzEiLCBOVUxMLCAiSTJTIERBQzFSIn0sCisJeyJE
QUMyIiwgTlVMTCwgIkkyUyBEQUMyTCJ9LAorCXsiREFDMiIsIE5VTEwsICJJMlMgREFDMlIifSwK
Kwl7IlBvcnRBIE11eCIsICJEQUMxIFN3aXRjaCIsICJEQUMxIn0sCisJeyJQb3J0QSBNdXgiLCAi
REFDMiBTd2l0Y2giLCAiREFDMiJ9LAorCXsiUG9ydEcgTXV4IiwgIkRBQzEgU3dpdGNoIiwgIkRB
QzEifSwKKwl7IlBvcnRHIE11eCIsICJEQUMyIFN3aXRjaCIsICJEQUMyIn0sCisJeyJQb3J0RSBN
dXgiLCAiREFDMSBTd2l0Y2giLCAiREFDMSJ9LAorCXsiUG9ydEUgTXV4IiwgIkRBQzIgU3dpdGNo
IiwgIkRBQzIifSwKKwl7IlBvcnRNIE11eCIsICJEQUMxIFN3aXRjaCIsICJEQUMxIn0sCisJeyJQ
b3J0TSBNdXgiLCAiREFDMiBTd2l0Y2giLCAiREFDMiJ9LAorCXsiV2lkZ2V0MTUgTWl4ZXIiLCAi
REFDMUwgU3dpdGNoIiwgIkRBQzEifSwKKwl7IldpZGdldDE1IE1peGVyIiwgIkRBQzFSIFN3aXRj
aCIsICJEQUMyIn0sCisJeyJXaWRnZXQxNSBNaXhlciIsICJEQUMyTCBTd2l0Y2giLCAiREFDMSJ9
LAorCXsiV2lkZ2V0MTUgTWl4ZXIiLCAiREFDMlIgU3dpdGNoIiwgIkRBQzIifSwKKwl7IldpZGdl
dDE1IE1peGVyIiwgTlVMTCwgIldpZGdldDE1IFBvd2VyIn0sCisJeyJQb3J0QSBPdXQgRW4iLCAi
U3dpdGNoIiwgIlBvcnRBIE11eCJ9LAorCXsiUG9ydEcgT3V0IEVuIiwgIlN3aXRjaCIsICJQb3J0
RyBNdXgifSwKKwl7IlBvcnRFIE91dCBFbiIsICJTd2l0Y2giLCAiUG9ydEUgTXV4In0sCisJeyJQ
b3J0TSBPdXQgRW4iLCAiU3dpdGNoIiwgIlBvcnRNIE11eCJ9LAorCXsiUG9ydEEgTXV4IiwgTlVM
TCwgIlBvcnRBIFBvd2VyIn0sCisJeyJQb3J0RyBNdXgiLCBOVUxMLCAiUG9ydEcgUG93ZXIifSwK
Kwl7IlBvcnRFIE11eCIsIE5VTEwsICJQb3J0RSBQb3dlciJ9LAorCXsiUG9ydE0gTXV4IiwgTlVM
TCwgIlBvcnRNIFBvd2VyIn0sCisJeyJQb3J0QSBPdXQgRW4iLCBOVUxMLCAiUG9ydEEgUG93ZXIi
fSwKKwl7IlBvcnRHIE91dCBFbiIsIE5VTEwsICJQb3J0RyBQb3dlciJ9LAorCXsiUG9ydEUgT3V0
IEVuIiwgTlVMTCwgIlBvcnRFIFBvd2VyIn0sCisJeyJQb3J0TSBPdXQgRW4iLCBOVUxMLCAiUG9y
dE0gUG93ZXIifSwKKwl7IlBPUlRBIiwgTlVMTCwgIlBvcnRBIE91dCBFbiJ9LAorCXsiUE9SVEci
LCBOVUxMLCAiUG9ydEcgT3V0IEVuIn0sCisJeyJQT1JURSIsIE5VTEwsICJQb3J0RSBPdXQgRW4i
fSwKKwl7IlBPUlRNIiwgTlVMTCwgIlBvcnRNIE91dCBFbiJ9LAorCisJLyogQ2FwdHVyZSAqLwor
CXsiUE9SVEQiLCBOVUxMLCAiSGVhZHNldCBCaWFzIn0sCisJeyJQb3J0QiBJbiBFbiIsICJTd2l0
Y2giLCAiUE9SVEIifSwKKwl7IlBvcnRDIEluIEVuIiwgIlN3aXRjaCIsICJQT1JUQyJ9LAorCXsi
UG9ydEQgSW4gRW4iLCAiU3dpdGNoIiwgIlBPUlREIn0sCisJeyJQb3J0RSBJbiBFbiIsICJTd2l0
Y2giLCAiUE9SVEVJTiJ9LAorCXsiQURDMSBNdXgiLCAiUG9ydEIgU3dpdGNoIiwgIlBvcnRCIElu
IEVuIn0sCisJeyJBREMxIE11eCIsICJQb3J0QyBTd2l0Y2giLCAiUG9ydEMgSW4gRW4ifSwKKwl7
IkFEQzEgTXV4IiwgIlBvcnREIFN3aXRjaCIsICJQb3J0RCBJbiBFbiJ9LAorCXsiQURDMSBNdXgi
LCAiUG9ydEUgU3dpdGNoIiwgIlBvcnRFIEluIEVuIn0sCisJeyJBREMxIE11eCIsICJXaWRnZXQx
NSBTd2l0Y2giLCAiV2lkZ2V0MTUgTWl4ZXIifSwKKwl7IkFEQzIgTXV4IiwgIlBvcnRDIFN3aXRj
aCIsICJQb3J0QyBJbiBFbiJ9LAorCXsiQURDMiBNdXgiLCAiV2lkZ2V0MTUgU3dpdGNoIiwgIldp
ZGdldDE1IE1peGVyIn0sCisJeyJBREMxIiwgTlVMTCwgIkFEQzEgTXV4In0sCisJeyJBREMyIiwg
TlVMTCwgIkFEQzIgTXV4In0sCisJeyJJMlMgQURDMUwiLCAiU3dpdGNoIiwgIkFEQzEifSwKKwl7
IkkyUyBBREMxUiIsICJTd2l0Y2giLCAiQURDMSJ9LAorCXsiSTJTIEFEQzJMIiwgIlN3aXRjaCIs
ICJBREMyIn0sCisJeyJJMlMgQURDMlIiLCAiU3dpdGNoIiwgIkFEQzIifSwKKwl7Ik91dCBBSUYi
LCBOVUxMLCAiSTJTIEFEQzFMIn0sCisJeyJPdXQgQUlGIiwgTlVMTCwgIkkyUyBBREMxUiJ9LAor
CXsiT3V0IEFJRiIsIE5VTEwsICJJMlMgQURDMkwifSwKKwl7Ik91dCBBSUYiLCBOVUxMLCAiSTJT
IEFEQzJSIn0sCisJeyJPdXQgQUlGIiwgTlVMTCwgIkFGRyBQb3dlciJ9LAorCXsiQUVDIFJFRiIs
IE5VTEwsICJPdXQgQUlGIn0sCisJeyJQb3J0QiBJbiBFbiIsIE5VTEwsICJQb3J0QiBQb3dlciJ9
LAorCXsiUG9ydEMgSW4gRW4iLCBOVUxMLCAiUG9ydEMgUG93ZXIifSwKKwl7IlBvcnREIEluIEVu
IiwgTlVMTCwgIlBvcnREIFBvd2VyIn0sCisJeyJQb3J0RSBJbiBFbiIsIE5VTEwsICJQb3J0RSBQ
b3dlciJ9LAorfTsKKworc3RhdGljIHZvaWQgY3gyMDcyeF9zd19yZXNldChzdHJ1Y3QgY3gyMDcy
eF9wcml2ICpjeDIwNzJ4KQoreworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5yZWdtYXAsIENYMjA3
MlhfQUZHX0ZVTkNUSU9OX1JFU0VULCAweDAxKTsKKwlyZWdtYXBfd3JpdGUoY3gyMDcyeC0+cmVn
bWFwLCBDWDIwNzJYX0FGR19GVU5DVElPTl9SRVNFVCwgMHgwMSk7Cit9CisKK3N0YXRpYyBpbnQg
Y3gyMDcyeF9pbml0KHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQoreworCWlu
dCBjaCwgYmFuZDsKKwlzdHJ1Y3QgY3gyMDcyeF9wcml2ICpjeDIwNzJ4ID0gc25kX3NvY19jb21w
b25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKworCXJlZ21hcF93cml0ZShjeDIwNzJ4LT5y
ZWdtYXAsIENYMjA3MlhfQUZHX1BPV0VSX1NUQVRFLCAwKTsKKworCS8qIGNvbmZpZ3JlIFBvcnRD
IGFzIGlucHV0IGRldmljZSAqLworCXJlZ21hcF91cGRhdGVfYml0cyhjeDIwNzJ4LT5yZWdtYXAs
IENYMjA3MlhfUE9SVENfUElOX0NUUkwsCisJCQkgICAweDIwLCAweDIwKTsKKworCWN4MjA3Mngt
PnBsYmtfZXFfY2hhbmdlZCA9IHRydWU7CisJY3gyMDcyeC0+cGxia19kcmNfY2hhbmdlZCA9IHRy
dWU7CisKKwkvKnVzZSBmbGF0IGVxIGJ5IGRlZmF1bHQgKi8KKwlmb3IgKGNoID0gMCA7IGNoIDwg
MiA7IGNoKyspCisJCWZvciAoYmFuZCA9IDA7IGJhbmQgPCBDWDIwNzJYX1BMQktfRVFfQkFORF9O
VU07IGJhbmQrKykgeworCQkJY3gyMDcyeC0+cGxia19lcVtjaF1bYmFuZF1bMV0gPSA2NDsKKwkJ
CWN4MjA3MngtPnBsYmtfZXFbY2hdW2JhbmRdWzEwXSA9IDM7CisJCX0KKworCXJlZ21hcF91cGRh
dGVfYml0cyhjeDIwNzJ4LT5yZWdtYXAsIENYMjA3MlhfRElHSVRBTF9CSU9TX1RFU1QyLAorCQkJ
ICAgMHg4NCwgMHhGRik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjeDIwNzJ4X3Nl
dF9iaWFzX2xldmVsKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LAorCQkJCSAg
ZW51bSBzbmRfc29jX2JpYXNfbGV2ZWwgbGV2ZWwpCit7CisJc3RydWN0IGN4MjA3MnhfcHJpdiAq
Y3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJY29u
c3QgZW51bSBzbmRfc29jX2JpYXNfbGV2ZWwgb2xkX2xldmVsID0KKwkJIHNuZF9zb2NfY29tcG9u
ZW50X2dldF9iaWFzX2xldmVsKGNvbXBvbmVudCk7CisJaW50IHJldDsKKworCXN3aXRjaCAobGV2
ZWwpIHsKKwljYXNlIFNORF9TT0NfQklBU19PTjoKKwkJYnJlYWs7CisKKwljYXNlIFNORF9TT0Nf
QklBU19QUkVQQVJFOgorCQlicmVhazsKKworCWNhc2UgU05EX1NPQ19CSUFTX1NUQU5EQlk6CisJ
CWlmIChvbGRfbGV2ZWwgPT0gU05EX1NPQ19CSUFTX09GRikgeworCQkJaWYgKGN4MjA3MngtPm1j
bGspIHsKKwkJCQlkZXZfZGJnKGN4MjA3MngtPmRldiwKKwkJCQkJIlR1cm4gb24gTUNMSyB3aXRo
IHJhdGUgJWRcbiIsCisJCQkJCWN4MjA3MngtPm1jbGtfcmF0ZSk7CisJCQkJcmV0ID0gY2xrX3By
ZXBhcmVfZW5hYmxlKGN4MjA3MngtPm1jbGspOworCQkJCWlmIChyZXQpCisJCQkJCXJldHVybiBy
ZXQ7CisJCQl9CisJCQlyZWdjYWNoZV9jYWNoZV9vbmx5KGN4MjA3MngtPnJlZ21hcCwgZmFsc2Up
OworCQkJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwKKwkJCQkgICAgIENYMjA3MlhfQUZH
X1BPV0VSX1NUQVRFLCAwKTsKKwkJCXJlZ2NhY2hlX3N5bmMoY3gyMDcyeC0+cmVnbWFwKTsKKwkJ
fQorCQlicmVhazsKKworCWNhc2UgU05EX1NPQ19CSUFTX09GRjoKKwkJaWYgKG9sZF9sZXZlbCAh
PSBTTkRfU09DX0JJQVNfT0ZGKSB7CisJCQkvKlNodXRkb3duIGNvbXBvbmVudCBjb21wbGV0ZWx5
Ki8KKwkJCWN4MjA3Mnhfc3dfcmVzZXQoY3gyMDcyeCk7CisJCQlyZWdtYXBfd3JpdGUoY3gyMDcy
eC0+cmVnbWFwLCBDWDIwNzJYX0FGR19QT1dFUl9TVEFURSwgMyk7CisJCQlyZWdjYWNoZV9tYXJr
X2RpcnR5KGN4MjA3MngtPnJlZ21hcCk7CisJCQlyZWdjYWNoZV9jYWNoZV9vbmx5KGN4MjA3Mngt
PnJlZ21hcCwgdHJ1ZSk7CisJCQljeDIwNzJ4LT5wbGJrX2VxX2NoYW5nZWQgPSB0cnVlOworCQkJ
Y3gyMDcyeC0+cGxia19kcmNfY2hhbmdlZCA9IHRydWU7CisJCQlpZiAoY3gyMDcyeC0+bWNsaykg
eworCQkJCS8qZGVsYXllZCBtY2xrIHNodXRkb3duIGZvciAyMDBtcyovCisJCQkJbWRlbGF5KDIw
MCk7CisJCQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGN4MjA3MngtPm1jbGspOworCQkJfQorCQl9
CisJCWJyZWFrOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGN4MjA3MnhfcHJv
YmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCit7CisJc3RydWN0IGN4MjA3
MnhfcHJpdiAqY3gyMDcyeCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVu
dCk7CisJaW50IHJldCA9IDA7CisJdW5zaWduZWQgaW50IHZlbl9pZDsKKworCWN4MjA3MngtPmNv
bXBvbmVudCA9IGNvbXBvbmVudDsKKworCXJlZ21hcF9yZWFkKGN4MjA3MngtPnJlZ21hcCwgQ1gy
MDcyWF9WRU5ET1JfSUQsICZ2ZW5faWQpOworCXJlZ21hcF9yZWFkKGN4MjA3MngtPnJlZ21hcCwg
Q1gyMDcyWF9SRVZJU0lPTl9JRCwgJmN4MjA3MngtPnJldl9pZCk7CisKKwlkZXZfaW5mbyhjb21w
b25lbnQtPmRldiwgImNvZGVjIHZlcnNpb246ICUwOHgsJTA4eFxuIiwKKwkJIHZlbl9pZCwgY3gy
MDcyeC0+cmV2X2lkKTsKKworCS8qIENoZWNrIGlmIE1DTEsgaXMgc3BlY2lmaWVkLCBpZiBub3Qg
dGhlIGNsb2NrIGlzIGNvbnRyb2wgYnkgbWFjaGluZQorCSAqIGRyaXZlcgorCSAqLworCWN4MjA3
MngtPm1jbGsgPSBkZXZtX2Nsa19nZXQoY29tcG9uZW50LT5kZXYsICJtY2xrIik7CisJaWYgKElT
X0VSUihjeDIwNzJ4LT5tY2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKGN4MjA3MngtPm1jbGspOwor
CQlpZiAocmV0ID09IC1FTk9FTlQpIHsKKwkJCWlmIChJU19FUlIoY3gyMDcyeC0+bWNsaykpIHsK
KwkJCQlkZXZfd2Fybihjb21wb25lbnQtPmRldiwgIkFzc3VtaW5nIHN0YXRpYyBNQ0xLXG4iKTsK
KwkJCQljeDIwNzJ4LT5tY2xrID0gTlVMTDsKKwkJCQlyZXQgPSAwOworCQkJfQorCQl9IGVsc2Ug
eworCQkJZGV2X2Vycihjb21wb25lbnQtPmRldiwgIkZhaWxlZCB0byBnZXQgTUNMSzogJWRcbiIs
IHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJZGV2X2RiZyhjb21wb25lbnQtPmRl
diwgIkluaXRpYWxpemUgY29kZWNcbiIpOworCisJLyogZW5hYmxlIGNsb2NrIGZvciBjb2RlYyBh
Y2Nlc3MqLworCWlmIChjeDIwNzJ4LT5tY2xrKQorCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUo
Y3gyMDcyeC0+bWNsayk7CisKKwljeDIwNzJ4X2luaXQoY29tcG9uZW50KTsKKworCXJldCA9IHJl
Z21hcF9yZWdpc3Rlcl9wYXRjaChjeDIwNzJ4LT5yZWdtYXAsIGN4MjA3MnhfcGF0Y2gsCisJCQkJ
ICAgIEFSUkFZX1NJWkUoY3gyMDcyeF9wYXRjaCkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7
CisJcmVnbWFwX3dyaXRlKGN4MjA3MngtPnJlZ21hcCwgQ1gyMDcyWF9BRkdfUE9XRVJfU1RBVEUs
IDMpOworCXJlZ2NhY2hlX2NhY2hlX29ubHkoY3gyMDcyeC0+cmVnbWFwLCB0cnVlKTsKKworCS8q
IGRpc2FibGUgY2xvY2sgKi8KKwlpZiAoY3gyMDcyeC0+bWNsaykKKwkJY2xrX2Rpc2FibGVfdW5w
cmVwYXJlKGN4MjA3MngtPm1jbGspOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQg
Y3gyMDcyeF9yZW1vdmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCit7CisJ
Lypwb3dlciBvZmYgZGV2aWNlKi8KKwlzbmRfc29jX2NvbXBvbmVudF9mb3JjZV9iaWFzX2xldmVs
KGNvbXBvbmVudCwgU05EX1NPQ19CSUFTX09GRik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj
IGJvb2wgY3gyMDcyeF9yZWFkYWJsZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2ln
bmVkIGludCByZWcpCit7CisJc3dpdGNoIChyZWcpIHsKKwljYXNlIENYMjA3MlhfVkVORE9SX0lE
OgorCWNhc2UgQ1gyMDcyWF9SRVZJU0lPTl9JRDoKKwljYXNlIENYMjA3MlhfQ1VSUkVOVF9CQ0xL
X0ZSRVFVRU5DWToKKwljYXNlIENYMjA3MlhfQUZHX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gyMDcy
WF9VTV9SRVNQT05TRToKKwljYXNlIENYMjA3MlhfR1BJT19EQVRBOgorCWNhc2UgQ1gyMDcyWF9H
UElPX0VOQUJMRToKKwljYXNlIENYMjA3MlhfR1BJT19ESVJFQ1RJT046CisJY2FzZSBDWDIwNzJY
X0dQSU9fV0FLRToKKwljYXNlIENYMjA3MlhfR1BJT19VTV9FTkFCTEU6CisJY2FzZSBDWDIwNzJY
X0dQSU9fU1RJQ0tZX01BU0s6CisJY2FzZSBDWDIwNzJYX0RBQzFfQ09OVkVSVEVSX0ZPUk1BVDoK
KwljYXNlIENYMjA3MlhfREFDMV9BTVBfR0FJTl9SSUdIVDoKKwljYXNlIENYMjA3MlhfREFDMV9B
TVBfR0FJTl9MRUZUOgorCWNhc2UgQ1gyMDcyWF9EQUMxX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gy
MDcyWF9EQUMxX0NPTlZFUlRFUl9TVFJFQU1fQ0hBTk5FTDoKKwljYXNlIENYMjA3MlhfREFDMV9F
QVBEX0VOQUJMRToKKwljYXNlIENYMjA3MlhfREFDMl9DT05WRVJURVJfRk9STUFUOgorCWNhc2Ug
Q1gyMDcyWF9EQUMyX0FNUF9HQUlOX1JJR0hUOgorCWNhc2UgQ1gyMDcyWF9EQUMyX0FNUF9HQUlO
X0xFRlQ6CisJY2FzZSBDWDIwNzJYX0RBQzJfUE9XRVJfU1RBVEU6CisJY2FzZSBDWDIwNzJYX0RB
QzJfQ09OVkVSVEVSX1NUUkVBTV9DSEFOTkVMOgorCWNhc2UgQ1gyMDcyWF9BREMxX0NPTlZFUlRF
Ul9GT1JNQVQ6CisJY2FzZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklHSFRfMDoKKwljYXNlIENY
MjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzA6CisJY2FzZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5f
UklHSFRfMToKKwljYXNlIENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzE6CisJY2FzZSBDWDIw
NzJYX0FEQzFfQU1QX0dBSU5fUklHSFRfMjoKKwljYXNlIENYMjA3MlhfQURDMV9BTVBfR0FJTl9M
RUZUXzI6CisJY2FzZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklHSFRfMzoKKwljYXNlIENYMjA3
MlhfQURDMV9BTVBfR0FJTl9MRUZUXzM6CisJY2FzZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklH
SFRfNDoKKwljYXNlIENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzQ6CisJY2FzZSBDWDIwNzJY
X0FEQzFfQU1QX0dBSU5fUklHSFRfNToKKwljYXNlIENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZU
XzU6CisJY2FzZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklHSFRfNjoKKwljYXNlIENYMjA3Mlhf
QURDMV9BTVBfR0FJTl9MRUZUXzY6CisJY2FzZSBDWDIwNzJYX0FEQzFfQ09OTkVDVElPTl9TRUxF
Q1RfQ09OVFJPTDoKKwljYXNlIENYMjA3MlhfQURDMV9QT1dFUl9TVEFURToKKwljYXNlIENYMjA3
MlhfQURDMV9DT05WRVJURVJfU1RSRUFNX0NIQU5ORUw6CisJY2FzZSBDWDIwNzJYX0FEQzJfQ09O
VkVSVEVSX0ZPUk1BVDoKKwljYXNlIENYMjA3MlhfQURDMl9BTVBfR0FJTl9SSUdIVF8wOgorCWNh
c2UgQ1gyMDcyWF9BREMyX0FNUF9HQUlOX0xFRlRfMDoKKwljYXNlIENYMjA3MlhfQURDMl9BTVBf
R0FJTl9SSUdIVF8xOgorCWNhc2UgQ1gyMDcyWF9BREMyX0FNUF9HQUlOX0xFRlRfMToKKwljYXNl
IENYMjA3MlhfQURDMl9BTVBfR0FJTl9SSUdIVF8yOgorCWNhc2UgQ1gyMDcyWF9BREMyX0FNUF9H
QUlOX0xFRlRfMjoKKwljYXNlIENYMjA3MlhfQURDMl9DT05ORUNUSU9OX1NFTEVDVF9DT05UUk9M
OgorCWNhc2UgQ1gyMDcyWF9BREMyX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gyMDcyWF9BREMyX0NP
TlZFUlRFUl9TVFJFQU1fQ0hBTk5FTDoKKwljYXNlIENYMjA3MlhfUE9SVEFfQ09OTkVDVElPTl9T
RUxFQ1RfQ1RSTDoKKwljYXNlIENYMjA3MlhfUE9SVEFfUE9XRVJfU1RBVEU6CisJY2FzZSBDWDIw
NzJYX1BPUlRBX1BJTl9DVFJMOgorCWNhc2UgQ1gyMDcyWF9QT1JUQV9VTlNPTElDSVRFRF9SRVNQ
T05TRToKKwljYXNlIENYMjA3MlhfUE9SVEFfUElOX1NFTlNFOgorCWNhc2UgQ1gyMDcyWF9QT1JU
QV9FQVBEX0JUTDoKKwljYXNlIENYMjA3MlhfUE9SVEJfUE9XRVJfU1RBVEU6CisJY2FzZSBDWDIw
NzJYX1BPUlRCX1BJTl9DVFJMOgorCWNhc2UgQ1gyMDcyWF9QT1JUQl9VTlNPTElDSVRFRF9SRVNQ
T05TRToKKwljYXNlIENYMjA3MlhfUE9SVEJfUElOX1NFTlNFOgorCWNhc2UgQ1gyMDcyWF9QT1JU
Ql9FQVBEX0JUTDoKKwljYXNlIENYMjA3MlhfUE9SVEJfR0FJTl9SSUdIVDoKKwljYXNlIENYMjA3
MlhfUE9SVEJfR0FJTl9MRUZUOgorCWNhc2UgQ1gyMDcyWF9QT1JUQ19QT1dFUl9TVEFURToKKwlj
YXNlIENYMjA3MlhfUE9SVENfUElOX0NUUkw6CisJY2FzZSBDWDIwNzJYX1BPUlRDX0dBSU5fUklH
SFQ6CisJY2FzZSBDWDIwNzJYX1BPUlRDX0dBSU5fTEVGVDoKKwljYXNlIENYMjA3MlhfUE9SVERf
UE9XRVJfU1RBVEU6CisJY2FzZSBDWDIwNzJYX1BPUlREX1BJTl9DVFJMOgorCWNhc2UgQ1gyMDcy
WF9QT1JURF9VTlNPTElDSVRFRF9SRVNQT05TRToKKwljYXNlIENYMjA3MlhfUE9SVERfUElOX1NF
TlNFOgorCWNhc2UgQ1gyMDcyWF9QT1JURF9HQUlOX1JJR0hUOgorCWNhc2UgQ1gyMDcyWF9QT1JU
RF9HQUlOX0xFRlQ6CisJY2FzZSBDWDIwNzJYX1BPUlRFX0NPTk5FQ1RJT05fU0VMRUNUX0NUUkw6
CisJY2FzZSBDWDIwNzJYX1BPUlRFX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gyMDcyWF9QT1JURV9Q
SU5fQ1RSTDoKKwljYXNlIENYMjA3MlhfUE9SVEVfVU5TT0xJQ0lURURfUkVTUE9OU0U6CisJY2Fz
ZSBDWDIwNzJYX1BPUlRFX1BJTl9TRU5TRToKKwljYXNlIENYMjA3MlhfUE9SVEVfRUFQRF9CVEw6
CisJY2FzZSBDWDIwNzJYX1BPUlRFX0dBSU5fUklHSFQ6CisJY2FzZSBDWDIwNzJYX1BPUlRFX0dB
SU5fTEVGVDoKKwljYXNlIENYMjA3MlhfUE9SVEZfUE9XRVJfU1RBVEU6CisJY2FzZSBDWDIwNzJY
X1BPUlRGX1BJTl9DVFJMOgorCWNhc2UgQ1gyMDcyWF9QT1JURl9VTlNPTElDSVRFRF9SRVNQT05T
RToKKwljYXNlIENYMjA3MlhfUE9SVEZfUElOX1NFTlNFOgorCWNhc2UgQ1gyMDcyWF9QT1JURl9H
QUlOX1JJR0hUOgorCWNhc2UgQ1gyMDcyWF9QT1JURl9HQUlOX0xFRlQ6CisJY2FzZSBDWDIwNzJY
X1BPUlRHX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gyMDcyWF9QT1JUR19QSU5fQ1RSTDoKKwljYXNl
IENYMjA3MlhfUE9SVEdfQ09OTkVDVElPTl9TRUxFQ1RfQ1RSTDoKKwljYXNlIENYMjA3MlhfUE9S
VEdfRUFQRF9CVEw6CisJY2FzZSBDWDIwNzJYX1BPUlRNX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gy
MDcyWF9QT1JUTV9QSU5fQ1RSTDoKKwljYXNlIENYMjA3MlhfUE9SVE1fQ09OTkVDVElPTl9TRUxF
Q1RfQ1RSTDoKKwljYXNlIENYMjA3MlhfUE9SVE1fRUFQRF9CVEw6CisJY2FzZSBDWDIwNzJYX01J
WEVSX1BPV0VSX1NUQVRFOgorCWNhc2UgQ1gyMDcyWF9NSVhFUl9HQUlOX1JJR0hUXzA6CisJY2Fz
ZSBDWDIwNzJYX01JWEVSX0dBSU5fTEVGVF8wOgorCWNhc2UgQ1gyMDcyWF9NSVhFUl9HQUlOX1JJ
R0hUXzE6CisJY2FzZSBDWDIwNzJYX01JWEVSX0dBSU5fTEVGVF8xOgorCWNhc2UgQ1gyMDcyWF9F
UV9FTkFCTEVfQllQQVNTOgorCWNhc2UgQ1gyMDcyWF9FUV9CMF9DT0VGRjoKKwljYXNlIENYMjA3
MlhfRVFfQjFfQ09FRkY6CisJY2FzZSBDWDIwNzJYX0VRX0IyX0NPRUZGOgorCWNhc2UgQ1gyMDcy
WF9FUV9BMV9DT0VGRjoKKwljYXNlIENYMjA3MlhfRVFfQTJfQ09FRkY6CisJY2FzZSBDWDIwNzJY
X0VRX0dfQ09FRkY6CisJY2FzZSBDWDIwNzJYX1NQS1JfRFJDX0VOQUJMRV9TVEVQOgorCWNhc2Ug
Q1gyMDcyWF9TUEtSX0RSQ19DT05UUk9MOgorCWNhc2UgQ1gyMDcyWF9TUEtSX0RSQ19URVNUOgor
CWNhc2UgQ1gyMDcyWF9ESUdJVEFMX0JJT1NfVEVTVDA6CisJY2FzZSBDWDIwNzJYX0RJR0lUQUxf
QklPU19URVNUMjoKKwljYXNlIENYMjA3MlhfSTJTUENNX0NPTlRST0wxOgorCWNhc2UgQ1gyMDcy
WF9JMlNQQ01fQ09OVFJPTDI6CisJY2FzZSBDWDIwNzJYX0kyU1BDTV9DT05UUk9MMzoKKwljYXNl
IENYMjA3MlhfSTJTUENNX0NPTlRST0w0OgorCWNhc2UgQ1gyMDcyWF9JMlNQQ01fQ09OVFJPTDU6
CisJY2FzZSBDWDIwNzJYX0kyU1BDTV9DT05UUk9MNjoKKwljYXNlIENYMjA3MlhfVU1fSU5URVJS
VVBUX0NSVExfRToKKwljYXNlIENYMjA3MlhfQ09ERUNfVEVTVDI6CisJY2FzZSBDWDIwNzJYX0NP
REVDX1RFU1Q5OgorCWNhc2UgQ1gyMDcyWF9DT0RFQ19URVNUMjA6CisJY2FzZSBDWDIwNzJYX0NP
REVDX1RFU1QyNjoKKwljYXNlIENYMjA3MlhfQU5BTE9HX1RFU1Q0OgorCWNhc2UgQ1gyMDcyWF9B
TkFMT0dfVEVTVDU6CisJY2FzZSBDWDIwNzJYX0FOQUxPR19URVNUNjoKKwljYXNlIENYMjA3Mlhf
QU5BTE9HX1RFU1Q3OgorCWNhc2UgQ1gyMDcyWF9BTkFMT0dfVEVTVDg6CisJY2FzZSBDWDIwNzJY
X0FOQUxPR19URVNUOToKKwljYXNlIENYMjA3MlhfQU5BTE9HX1RFU1QxMDoKKwljYXNlIENYMjA3
MlhfQU5BTE9HX1RFU1QxMToKKwljYXNlIENYMjA3MlhfQU5BTE9HX1RFU1QxMjoKKwljYXNlIENY
MjA3MlhfQU5BTE9HX1RFU1QxMzoKKwljYXNlIENYMjA3MlhfRElHSVRBTF9URVNUMDoKKwljYXNl
IENYMjA3MlhfRElHSVRBTF9URVNUMToKKwljYXNlIENYMjA3MlhfRElHSVRBTF9URVNUMTE6CisJ
Y2FzZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDEyOgorCWNhc2UgQ1gyMDcyWF9ESUdJVEFMX1RFU1Qx
NToKKwljYXNlIENYMjA3MlhfRElHSVRBTF9URVNUMTY6CisJY2FzZSBDWDIwNzJYX0RJR0lUQUxf
VEVTVDE3OgorCWNhc2UgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxODoKKwljYXNlIENYMjA3MlhfRElH
SVRBTF9URVNUMTk6CisJY2FzZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDIwOgorCQlyZXR1cm4gdHJ1
ZTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCitzdGF0aWMgYm9vbCBjeDIw
NzJ4X3ZvbGF0aWxlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJl
ZykKK3sKKwlzd2l0Y2ggKHJlZykgeworCWNhc2UgQ1gyMDcyWF9WRU5ET1JfSUQ6CisJY2FzZSBD
WDIwNzJYX1JFVklTSU9OX0lEOgorCWNhc2UgQ1gyMDcyWF9VTV9JTlRFUlJVUFRfQ1JUTF9FOgor
CWNhc2UgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxMToKKwljYXNlIENYMjA3MlhfUE9SVEFfUElOX1NF
TlNFOgorCWNhc2UgQ1gyMDcyWF9QT1JUQl9QSU5fU0VOU0U6CisJY2FzZSBDWDIwNzJYX1BPUlRE
X1BJTl9TRU5TRToKKwljYXNlIENYMjA3MlhfUE9SVEVfUElOX1NFTlNFOgorCWNhc2UgQ1gyMDcy
WF9QT1JURl9QSU5fU0VOU0U6CisJY2FzZSBDWDIwNzJYX0VRX0dfQ09FRkY6CisJY2FzZSBDWDIw
NzJYX0VRX0JBTkQ6CisJCXJldHVybiB0cnVlOworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsK
Kwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnRfZHJpdmVyIHNvY19jb2Rl
Y19kcml2ZXJfY3gyMDcyeCA9IHsKKwkucHJvYmUgPSBjeDIwNzJ4X3Byb2JlLAorCS5yZW1vdmUg
PSBjeDIwNzJ4X3JlbW92ZSwKKwkuc2V0X2JpYXNfbGV2ZWwgPSBjeDIwNzJ4X3NldF9iaWFzX2xl
dmVsLAorCS5jb250cm9scyA9IGN4MjA3Mnhfc25kX2NvbnRyb2xzLAorCS5udW1fY29udHJvbHMg
PSBBUlJBWV9TSVpFKGN4MjA3Mnhfc25kX2NvbnRyb2xzKSwKKwkuZGFwbV93aWRnZXRzID0gY3gy
MDcyeF9kYXBtX3dpZGdldHMsCisJLm51bV9kYXBtX3dpZGdldHMgPSBBUlJBWV9TSVpFKGN4MjA3
MnhfZGFwbV93aWRnZXRzKSwKKwkuZGFwbV9yb3V0ZXMgPSBjeDIwNzJ4X2ludGVyY29uLAorCS5u
dW1fZGFwbV9yb3V0ZXMgPSBBUlJBWV9TSVpFKGN4MjA3MnhfaW50ZXJjb24pLAorfTsKKworLyoK
KyAqIERBSSBvcHMKKyAqLworc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9vcHMgY3gyMDcyeF9k
YWlfb3BzID0geworCS5zZXRfc3lzY2xrID0gY3gyMDcyeF9zZXRfZGFpX3N5c2NsaywKKwkuc2V0
X2ZtdCA9IGN4MjA3Mnhfc2V0X2RhaV9mbXQsCisJLmh3X3BhcmFtcyA9IGN4MjA3MnhfaHdfcGFy
YW1zLAorCS5zaHV0ZG93biA9IGN4MjA3Mnhfc2h1dGRvd24sCisJLnNldF9iY2xrX3JhdGlvID0g
Y3gyMDcyeF9zZXRfZGFpX2JjbGtfcmF0aW8sCit9OworCitzdGF0aWMgaW50IGN4MjA3MnhfZHNw
X2RhaV9wcm9iZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKK3sKKwlzdHJ1Y3QgY3gyMDcyeF9w
cml2ICpjeDIwNzJ4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoZGFpLT5jb21wb25l
bnQpOworCisJZGV2X2RiZyhjeDIwNzJ4LT5kZXYsICJkc3BfZGFpX3Byb2JlKClcbiIpOworCisJ
Y3gyMDcyeC0+ZW5fYWVjX3JlZiA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBD
WDIwNzJYX0ZPUk1BVFMgKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIFwKKwkJCSB8IFNORFJWX1BD
TV9GTVRCSVRfUzI0X0xFKQorCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciBzb2Nf
Y29tcG9uZW50X2N4MjA3MnhfZGFpW10gPSB7CisJeyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSAq
LworCQkubmFtZSA9ICJjeDIwNzJ4LWhpZmkiLAorCQkuaWQJPSBDWDIwNzJYX0RBSV9ISUZJLAor
CQkucGxheWJhY2sgPSB7CisJCQkuc3RyZWFtX25hbWUgPSAiUGxheWJhY2siLAorCQkJLmNoYW5u
ZWxzX21pbiA9IDEsCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwKKwkJCS5yYXRlcyA9IENYMjA3Mlhf
UkFURVNfRFNQLAorCQkJLmZvcm1hdHMgPSBDWDIwNzJYX0ZPUk1BVFMsCisJCX0sCisJCS5jYXB0
dXJlID0geworCQkJLnN0cmVhbV9uYW1lID0gIkNhcHR1cmUiLAorCQkJLmNoYW5uZWxzX21pbiA9
IDEsCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwKKwkJCS5yYXRlcyA9IENYMjA3MlhfUkFURVNfRFNQ
LAorCQkJLmZvcm1hdHMgPSBDWDIwNzJYX0ZPUk1BVFMsCisJCX0sCisJCS5vcHMgPSAmY3gyMDcy
eF9kYWlfb3BzLAorCQkuc3ltbWV0cmljX3JhdGVzID0gMSwKKwl9LAorCXsgLyogcGxhYmF5Y2sg
b25seSwgcmV0dXJuIGVjaG8gcmVmZXJlbmNlIHRvIENvbmV4YW50IERTUCBjaGlwKi8KKwkJLm5h
bWUgPSAiY3gyMDcyeC1kc3AiLAorCQkuaWQJPSBDWDIwNzJYX0RBSV9EU1AsCisJCS5wcm9iZSA9
IGN4MjA3MnhfZHNwX2RhaV9wcm9iZSwKKwkJLnBsYXliYWNrID0geworCQkJLnN0cmVhbV9uYW1l
ID0gIlBsYXliYWNrIiwKKwkJCS5jaGFubmVsc19taW4gPSAyLAorCQkJLmNoYW5uZWxzX21heCA9
IDIsCisJCQkucmF0ZXMgPSBDWDIwNzJYX1JBVEVTX0RTUCwKKwkJCS5mb3JtYXRzID0gQ1gyMDcy
WF9GT1JNQVRTLAorCQl9LAorCQkub3BzID0gJmN4MjA3MnhfZGFpX29wcywKKwl9LAorCXsgLyog
cGxhYmF5Y2sgb25seSwgcmV0dXJuIGVjaG8gcmVmZXJlbmNlIHRocm91Z2ggSTJTIFRYKi8KKwkJ
Lm5hbWUgPSAiY3gyMDcyeC1hZWMiLAorCQkuaWQJPSAzLAorCQkuY2FwdHVyZSA9IHsKKwkJCS5z
dHJlYW1fbmFtZSA9ICJDYXB0dXJlIiwKKwkJCS5jaGFubmVsc19taW4gPSAyLAorCQkJLmNoYW5u
ZWxzX21heCA9IDIsCisJCQkucmF0ZXMgPSBDWDIwNzJYX1JBVEVTX0RTUCwKKwkJCS5mb3JtYXRz
ID0gQ1gyMDcyWF9GT1JNQVRTLAorCQl9LAorCX0sCit9OworRVhQT1JUX1NZTUJPTF9HUEwoc29j
X2NvbXBvbmVudF9jeDIwNzJ4X2RhaSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2Nv
bmZpZyBjeDIwNzJ4X3JlZ21hcCA9IHsKKwkucmVnX2JpdHMgPSAxNiwKKwkudmFsX2JpdHMgPSAz
MiwKKwkubWF4X3JlZ2lzdGVyID0gQ1gyMDcyWF9SRUdfTUFYLCAucmVnX2RlZmF1bHRzID0gY3gy
MDcyeF9yZWdfZGVmYXVsdHMsCisJLm51bV9yZWdfZGVmYXVsdHMgPSBBUlJBWV9TSVpFKGN4MjA3
MnhfcmVnX2RlZmF1bHRzKSwKKwkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX1JCVFJFRSwKKwkucmVh
ZGFibGVfcmVnID0gY3gyMDcyeF9yZWFkYWJsZV9yZWdpc3RlciwKKwkudm9sYXRpbGVfcmVnID0g
Y3gyMDcyeF92b2xhdGlsZV9yZWdpc3RlciwKKwkvKiBOZWVkcyBjdXN0b20gUkVBRC9XUklURSBm
dW5jdGlvbnMKKwkgKiBmb3IgdmFyaW91cyByZWdpc3RlciBsZW5ndGhzLgorCSAqLworCS5yZWdf
cmVhZCA9IGN4MjA3MnhfcmVnX3JlYWQsCisJLnJlZ193cml0ZSA9IGN4MjA3MnhfcmVnX3dyaXRl
LAorfTsKKworc3RhdGljIGludCBjeDIwNzJ4X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAq
aTJjLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCit7CisJaW50IHJl
dCA9IC0xOworCXN0cnVjdCBjeDIwNzJ4X3ByaXYgKmN4MjA3Mng7CisKKwljeDIwNzJ4ID0gZGV2
bV9remFsbG9jKCZpMmMtPmRldiwgc2l6ZW9mKHN0cnVjdCBjeDIwNzJ4X3ByaXYpLAorCQkJICAg
ICAgIEdGUF9LRVJORUwpOworCWlmICghY3gyMDcyeCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlj
eDIwNzJ4LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KCZpMmMtPmRldiwgTlVMTCwgaTJjLAor
CQkmY3gyMDcyeF9yZWdtYXApOworCisJaWYgKElTX0VSUihjeDIwNzJ4LT5yZWdtYXApKSB7CisJ
CXJldCA9IFBUUl9FUlIoY3gyMDcyeC0+cmVnbWFwKTsKKwkJZGV2X2VycigmaTJjLT5kZXYsICJG
YWlsZWQgdG8gaW5pdCByZWdtYXA6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwor
CW11dGV4X2luaXQoJmN4MjA3MngtPmVxX2NvZWZmX2xvY2spOworCisJaTJjX3NldF9jbGllbnRk
YXRhKGkyYywgY3gyMDcyeCk7CisKKwljeDIwNzJ4LT5kZXYgPSAmaTJjLT5kZXY7CisJY3gyMDcy
eC0+cGxsX2NoYW5nZWQgPSB0cnVlOworCWN4MjA3MngtPmkyc3BjbV9jaGFuZ2VkID0gdHJ1ZTsK
KworCS8qIHNldHMgdGhlIGZyYW1lIHNpemUgdG8KKwkgKiBGcmFtZSBzaXplID0gbnVtYmVyIG9m
IGNoYW5uZWwgKiBzYW1wbGUgd2lkdGgKKwkgKi8KKwljeDIwNzJ4LT5iY2xrX3JhdGlvID0gMDsK
KworCXJldCA9IHNuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50KGN4MjA3MngtPmRldiwgJnNvY19j
b2RlY19kcml2ZXJfY3gyMDcyeCwKKwkJCQkgICAgIHNvY19jb21wb25lbnRfY3gyMDcyeF9kYWks
CisJCQkJICAgICBBUlJBWV9TSVpFKHNvY19jb21wb25lbnRfY3gyMDcyeF9kYWkpKTsKKwlpZiAo
cmV0IDwgMCkKKwkJZGV2X2VycihjeDIwNzJ4LT5kZXYsCisJCQkiRmFpbGVkIHRvIHJlZ2lzdGVy
IGNvZGVjOiAlZFxuIiwgcmV0KTsKKwllbHNlCisJCWRldl9kYmcoY3gyMDcyeC0+ZGV2LAorCQkJ
IiVzOiBSZWdpc3RlciBjb2RlYy5cbiIsIF9fZnVuY19fKTsKKworCXJldHVybiByZXQ7Cit9CisK
K3N0YXRpYyBpbnQgY3gyMDcyeF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp
Cit7CisJc25kX3NvY191bnJlZ2lzdGVyX2NvbXBvbmVudCgmY2xpZW50LT5kZXYpOworCisJcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBjeDIwNzJ4X2ky
Y19pZFtdID0geworCXsgImN4MjA3MjEiLCAwIH0sCisJeyAiY3gyMDcyMyIsIDAgfSwKKwl7fQor
fTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBjeDIwNzJ4X2kyY19pZCk7CisKK3N0YXRpYyBj
b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGN4MjA3Mnhfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21w
YXRpYmxlID0gImNueHQsY3gyMDcyMSIsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJjbnh0LGN4MjA3
MjMiLCB9LAorCXsgLmNvbXBhdGlibGUgPSAiY254dCxjeDc2MDEiLCB9LAorCXt9Cit9OworTU9E
VUxFX0RFVklDRV9UQUJMRShvZiwgY3gyMDcyeF9vZl9tYXRjaCk7CisKKyNpZmRlZiBDT05GSUdf
QUNQSQorc3RhdGljIHN0cnVjdCBhY3BpX2RldmljZV9pZCBjeDIwNzJ4X2FjcGlfbWF0Y2hbXSA9
IHsKKwl7ICIxNEYxMDcyMCIsIDAgfSwKKwl7fSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKGFj
cGksIGN4MjA3MnhfYWNwaV9tYXRjaCk7CisjZW5kaWYKKworc3RhdGljIHN0cnVjdCBpMmNfZHJp
dmVyIGN4MjA3MnhfaTJjX2RyaXZlciA9IHsKKwkucHJvYmUgPSBjeDIwNzJ4X2kyY19wcm9iZSwK
KwkucmVtb3ZlID0gY3gyMDcyeF9pMmNfcmVtb3ZlLAorCS5pZF90YWJsZSA9IGN4MjA3MnhfaTJj
X2lkLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gImN4MjA3MngiLAorCQkub2ZfbWF0Y2hfdGFi
bGUgPSBjeDIwNzJ4X29mX21hdGNoLAorCQkuYWNwaV9tYXRjaF90YWJsZSA9IEFDUElfUFRSKGN4
MjA3MnhfYWNwaV9tYXRjaCksCisJfSwKK307CisKK21vZHVsZV9pMmNfZHJpdmVyKGN4MjA3Mnhf
aTJjX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiQVNvQyBjeDIwNzJ4IENvZGVjIERy
aXZlciIpOworTU9EVUxFX0FVVEhPUigiU2ltb24gSG8gPHNpbW9uLmhvQGNvbmV4YW50LmNvbT4i
KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLS0tIGxpbnV4LTQuMjAvc291bmQvc29jL2NvZGVj
cy9jeDIwNzJ4LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4
LTQuMjAvc291bmQvc29jL2NvZGVjcy9jeDIwNzJ4LmgJMjAxOC0xMi0yNiAwNjo1NToxNy4wMDAw
MDAwMDAgLTA1MDAKQEAgLTAsMCArMSwzMjAgQEAgCisvKgorICogQUxTQSBTb0MgQ1gyMDcyMS9D
WDIwNzIzIGNvZGVjIGRyaXZlcgorICoKKyAqIENvcHlyaWdodDoJKEMpIDIwMTcgQ29uZXhhbnQg
U3lzdGVtcywgSW5jLgorICogQXV0aG9yOglTaW1vbiBIbywgPFNpbW9uLmhvQGNvbmV4YW50LmNv
bT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5l
IE5VTV9PRl9EQUkgMQorI2RlZmluZSBDWDIwNzJYX01DTEtfUExMIDEKKyNkZWZpbmUgQ1gyMDcy
WF9NQ0xLX0VYVEVSTkFMX1BMTCAxCisjZGVmaW5lIENYMjA3MlhfTUNMS19JTlRFUk5BTF9PU0Mg
MgorCisvKiNkZWZpbmUgQ1gyMDcyWF9SQVRFUwkJU05EUlZfUENNX1JBVEVfODAwMF8xOTIwMDAq
LworI2RlZmluZSBDWDIwNzJYX1JBVEVTX0RTUAlTTkRSVl9QQ01fUkFURV80ODAwMAorCisjZGVm
aW5lIENYMjA3MlhfUkVHX01BWCAweDhhM2MKKyNkZWZpbmUgQVVERFJWX1ZFUlNJT04obWFqb3Iw
LCBtYWpvcjEsIG1pbm9yLCBidWlsZCkgXAorCQkoKG1ham9yMCkgPDwgMjQgfCAobWFqb3IxKSA8
PCAxNiB8IChtaW5vcikgPDwgOCB8IChidWlsZCkpCisKKyNkZWZpbmUgQ1gyMDcyWF9WRU5ET1Jf
SUQJCQkJIDB4MDIwMAorI2RlZmluZSBDWDIwNzJYX1JFVklTSU9OX0lECQkJCSAweDAyMDgKKyNk
ZWZpbmUgQ1gyMDcyWF9DVVJSRU5UX0JDTEtfRlJFUVVFTkNZCQkJIDB4MDBkYworI2RlZmluZSBD
WDIwNzJYX0FGR19QT1dFUl9TVEFURQkJCQkgMHgwNDE0CisjZGVmaW5lIENYMjA3MlhfVU1fUkVT
UE9OU0UJCQkJIDB4MDQyMAorI2RlZmluZSBDWDIwNzJYX0dQSU9fREFUQQkJCQkgMHgwNDU0Cisj
ZGVmaW5lIENYMjA3MlhfR1BJT19FTkFCTEUJCQkJIDB4MDQ1OAorI2RlZmluZSBDWDIwNzJYX0dQ
SU9fRElSRUNUSU9OCQkJCSAweDA0NWMKKyNkZWZpbmUgQ1gyMDcyWF9HUElPX1dBS0UJCQkJIDB4
MDQ2MAorI2RlZmluZSBDWDIwNzJYX0dQSU9fVU1fRU5BQkxFCQkJCSAweDA0NjQKKyNkZWZpbmUg
Q1gyMDcyWF9HUElPX1NUSUNLWV9NQVNLCQkJIDB4MDQ2OAorI2RlZmluZSBDWDIwNzJYX0FGR19G
VU5DVElPTl9SRVNFVAkJCSAweDA3RkMKKyNkZWZpbmUgQ1gyMDcyWF9EQUMxX0NPTlZFUlRFUl9G
T1JNQVQJCQkgMHg0M2M4CisjZGVmaW5lIENYMjA3MlhfREFDMV9BTVBfR0FJTl9SSUdIVAkJCSAw
eDQxYzAKKyNkZWZpbmUgQ1gyMDcyWF9EQUMxX0FNUF9HQUlOX0xFRlQJCQkgMHg0MWUwCisjZGVm
aW5lIENYMjA3MlhfREFDMV9QT1dFUl9TVEFURQkJCSAweDQwMTQKKyNkZWZpbmUgQ1gyMDcyWF9E
QUMxX0NPTlZFUlRFUl9TVFJFQU1fQ0hBTk5FTAkJIDB4NDAxOAorI2RlZmluZSBDWDIwNzJYX0RB
QzFfRUFQRF9FTkFCTEUJCQkgMHg0MDMwCisjZGVmaW5lIENYMjA3MlhfREFDMl9DT05WRVJURVJf
Rk9STUFUCQkJIDB4NDdjOAorI2RlZmluZSBDWDIwNzJYX0RBQzJfQU1QX0dBSU5fUklHSFQJCQkg
MHg0NWMwCisjZGVmaW5lIENYMjA3MlhfREFDMl9BTVBfR0FJTl9MRUZUCQkJIDB4NDVlMAorI2Rl
ZmluZSBDWDIwNzJYX0RBQzJfUE9XRVJfU1RBVEUJCQkgMHg0NDE0CisjZGVmaW5lIENYMjA3Mlhf
REFDMl9DT05WRVJURVJfU1RSRUFNX0NIQU5ORUwJCSAweDQ0MTgKKyNkZWZpbmUgQ1gyMDcyWF9B
REMxX0NPTlZFUlRFUl9GT1JNQVQJCQkgMHg0ZmM4CisjZGVmaW5lIENYMjA3MlhfQURDMV9BTVBf
R0FJTl9SSUdIVF8wCQkJIDB4NGQ4MAorI2RlZmluZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fTEVG
VF8wCQkJIDB4NGRhMAorI2RlZmluZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklHSFRfMQkJCSAw
eDRkODQKKyNkZWZpbmUgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX0xFRlRfMQkJCSAweDRkYTQKKyNk
ZWZpbmUgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX1JJR0hUXzIJCQkgMHg0ZDg4CisjZGVmaW5lIENY
MjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzIJCQkgMHg0ZGE4CisjZGVmaW5lIENYMjA3MlhfQURD
MV9BTVBfR0FJTl9SSUdIVF8zCQkJIDB4NGQ4YworI2RlZmluZSBDWDIwNzJYX0FEQzFfQU1QX0dB
SU5fTEVGVF8zCQkJIDB4NGRhYworI2RlZmluZSBDWDIwNzJYX0FEQzFfQU1QX0dBSU5fUklHSFRf
NAkJCSAweDRkOTAKKyNkZWZpbmUgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX0xFRlRfNAkJCSAweDRk
YjAKKyNkZWZpbmUgQ1gyMDcyWF9BREMxX0FNUF9HQUlOX1JJR0hUXzUJCQkgMHg0ZDk0CisjZGVm
aW5lIENYMjA3MlhfQURDMV9BTVBfR0FJTl9MRUZUXzUJCQkgMHg0ZGI0CisjZGVmaW5lIENYMjA3
MlhfQURDMV9BTVBfR0FJTl9SSUdIVF82CQkJIDB4NGQ5OAorI2RlZmluZSBDWDIwNzJYX0FEQzFf
QU1QX0dBSU5fTEVGVF82CQkJIDB4NGRiOAorI2RlZmluZSBDWDIwNzJYX0FEQzFfQ09OTkVDVElP
Tl9TRUxFQ1RfQ09OVFJPTAkJIDB4NGMwNAorI2RlZmluZSBDWDIwNzJYX0FEQzFfUE9XRVJfU1RB
VEUJCQkgMHg0YzE0CisjZGVmaW5lIENYMjA3MlhfQURDMV9DT05WRVJURVJfU1RSRUFNX0NIQU5O
RUwJCSAweDRjMTgKKyNkZWZpbmUgQ1gyMDcyWF9BREMyX0NPTlZFUlRFUl9GT1JNQVQJCQkgMHg1
M2M4CisjZGVmaW5lIENYMjA3MlhfQURDMl9BTVBfR0FJTl9SSUdIVF8wCQkJIDB4NTE4MAorI2Rl
ZmluZSBDWDIwNzJYX0FEQzJfQU1QX0dBSU5fTEVGVF8wCQkJIDB4NTFhMAorI2RlZmluZSBDWDIw
NzJYX0FEQzJfQU1QX0dBSU5fUklHSFRfMQkJCSAweDUxODQKKyNkZWZpbmUgQ1gyMDcyWF9BREMy
X0FNUF9HQUlOX0xFRlRfMQkJCSAweDUxYTQKKyNkZWZpbmUgQ1gyMDcyWF9BREMyX0FNUF9HQUlO
X1JJR0hUXzIJCQkgMHg1MTg4CisjZGVmaW5lIENYMjA3MlhfQURDMl9BTVBfR0FJTl9MRUZUXzIJ
CQkgMHg1MWE4CisjZGVmaW5lIENYMjA3MlhfQURDMl9DT05ORUNUSU9OX1NFTEVDVF9DT05UUk9M
CQkgMHg1MDA0CisjZGVmaW5lIENYMjA3MlhfQURDMl9QT1dFUl9TVEFURQkJCSAweDUwMTQKKyNk
ZWZpbmUgQ1gyMDcyWF9BREMyX0NPTlZFUlRFUl9TVFJFQU1fQ0hBTk5FTAkJIDB4NTAxOAorI2Rl
ZmluZSBDWDIwNzJYX1BPUlRBX0NPTk5FQ1RJT05fU0VMRUNUX0NUUkwJCSAweDU4MDQKKyNkZWZp
bmUgQ1gyMDcyWF9QT1JUQV9QT1dFUl9TVEFURQkJCSAweDU4MTQKKyNkZWZpbmUgQ1gyMDcyWF9Q
T1JUQV9QSU5fQ1RSTAkJCQkgMHg1ODFjCisjZGVmaW5lIENYMjA3MlhfUE9SVEFfVU5TT0xJQ0lU
RURfUkVTUE9OU0UJCSAweDU4MjAKKyNkZWZpbmUgQ1gyMDcyWF9QT1JUQV9QSU5fU0VOU0UJCQkJ
IDB4NTgyNAorI2RlZmluZSBDWDIwNzJYX1BPUlRBX0VBUERfQlRMCQkJCSAweDU4MzAKKyNkZWZp
bmUgQ1gyMDcyWF9QT1JUQl9QT1dFUl9TVEFURQkJCSAweDYwMTQKKyNkZWZpbmUgQ1gyMDcyWF9Q
T1JUQl9QSU5fQ1RSTAkJCQkgMHg2MDFjCisjZGVmaW5lIENYMjA3MlhfUE9SVEJfVU5TT0xJQ0lU
RURfUkVTUE9OU0UJCSAweDYwMjAKKyNkZWZpbmUgQ1gyMDcyWF9QT1JUQl9QSU5fU0VOU0UJCQkJ
IDB4NjAyNAorI2RlZmluZSBDWDIwNzJYX1BPUlRCX0VBUERfQlRMCQkJCSAweDYwMzAKKyNkZWZp
bmUgQ1gyMDcyWF9QT1JUQl9HQUlOX1JJR0hUCQkJIDB4NjE4MAorI2RlZmluZSBDWDIwNzJYX1BP
UlRCX0dBSU5fTEVGVAkJCQkgMHg2MWEwCisjZGVmaW5lIENYMjA3MlhfUE9SVENfUE9XRVJfU1RB
VEUJCQkgMHg2ODE0CisjZGVmaW5lIENYMjA3MlhfUE9SVENfUElOX0NUUkwJCQkJIDB4NjgxYwor
I2RlZmluZSBDWDIwNzJYX1BPUlRDX0dBSU5fUklHSFQJCQkgMHg2OTgwCisjZGVmaW5lIENYMjA3
MlhfUE9SVENfR0FJTl9MRUZUCQkJCSAweDY5YTAKKyNkZWZpbmUgQ1gyMDcyWF9QT1JURF9QT1dF
Ul9TVEFURQkJCSAweDY0MTQKKyNkZWZpbmUgQ1gyMDcyWF9QT1JURF9QSU5fQ1RSTAkJCQkgMHg2
NDFjCisjZGVmaW5lIENYMjA3MlhfUE9SVERfVU5TT0xJQ0lURURfUkVTUE9OU0UJCSAweDY0MjAK
KyNkZWZpbmUgQ1gyMDcyWF9QT1JURF9QSU5fU0VOU0UJCQkJIDB4NjQyNAorI2RlZmluZSBDWDIw
NzJYX1BPUlREX0dBSU5fUklHSFQJCQkgMHg2NTgwCisjZGVmaW5lIENYMjA3MlhfUE9SVERfR0FJ
Tl9MRUZUCQkJCSAweDY1YTAKKyNkZWZpbmUgQ1gyMDcyWF9QT1JURV9DT05ORUNUSU9OX1NFTEVD
VF9DVFJMCQkgMHg3NDA0CisjZGVmaW5lIENYMjA3MlhfUE9SVEVfUE9XRVJfU1RBVEUJCQkgMHg3
NDE0CisjZGVmaW5lIENYMjA3MlhfUE9SVEVfUElOX0NUUkwJCQkJIDB4NzQxYworI2RlZmluZSBD
WDIwNzJYX1BPUlRFX1VOU09MSUNJVEVEX1JFU1BPTlNFCQkgMHg3NDIwCisjZGVmaW5lIENYMjA3
MlhfUE9SVEVfUElOX1NFTlNFCQkJCSAweDc0MjQKKyNkZWZpbmUgQ1gyMDcyWF9QT1JURV9FQVBE
X0JUTAkJCQkgMHg3NDMwCisjZGVmaW5lIENYMjA3MlhfUE9SVEVfR0FJTl9SSUdIVAkJCSAweDc1
ODAKKyNkZWZpbmUgQ1gyMDcyWF9QT1JURV9HQUlOX0xFRlQJCQkJIDB4NzVhMAorI2RlZmluZSBD
WDIwNzJYX1BPUlRGX1BPV0VSX1NUQVRFCQkJIDB4NzgxNAorI2RlZmluZSBDWDIwNzJYX1BPUlRG
X1BJTl9DVFJMCQkJCSAweDc4MWMKKyNkZWZpbmUgQ1gyMDcyWF9QT1JURl9VTlNPTElDSVRFRF9S
RVNQT05TRQkJIDB4NzgyMAorI2RlZmluZSBDWDIwNzJYX1BPUlRGX1BJTl9TRU5TRQkJCQkgMHg3
ODI0CisjZGVmaW5lIENYMjA3MlhfUE9SVEZfR0FJTl9SSUdIVAkJCSAweDc5ODAKKyNkZWZpbmUg
Q1gyMDcyWF9QT1JURl9HQUlOX0xFRlQJCQkJIDB4NzlhMAorI2RlZmluZSBDWDIwNzJYX1BPUlRH
X1BPV0VSX1NUQVRFCQkJIDB4NWMxNAorI2RlZmluZSBDWDIwNzJYX1BPUlRHX1BJTl9DVFJMCQkJ
CSAweDVjMWMKKyNkZWZpbmUgQ1gyMDcyWF9QT1JUR19DT05ORUNUSU9OX1NFTEVDVF9DVFJMCQkg
MHg1YzA0CisjZGVmaW5lIENYMjA3MlhfUE9SVEdfRUFQRF9CVEwJCQkJIDB4NWMzMAorI2RlZmlu
ZSBDWDIwNzJYX1BPUlRNX1BPV0VSX1NUQVRFCQkJIDB4ODgxNAorI2RlZmluZSBDWDIwNzJYX1BP
UlRNX1BJTl9DVFJMCQkJCSAweDg4MWMKKyNkZWZpbmUgQ1gyMDcyWF9QT1JUTV9DT05ORUNUSU9O
X1NFTEVDVF9DVFJMCQkgMHg4ODA0CisjZGVmaW5lIENYMjA3MlhfUE9SVE1fRUFQRF9CVEwJCQkJ
IDB4ODgzMAorI2RlZmluZSBDWDIwNzJYX01JWEVSX1BPV0VSX1NUQVRFCQkJIDB4NTQxNAorI2Rl
ZmluZSBDWDIwNzJYX01JWEVSX0dBSU5fUklHSFRfMAkJCSAweDU1ODAKKyNkZWZpbmUgQ1gyMDcy
WF9NSVhFUl9HQUlOX0xFRlRfMAkJCSAweDU1YTAKKyNkZWZpbmUgQ1gyMDcyWF9NSVhFUl9HQUlO
X1JJR0hUXzEJCQkgMHg1NTg0CisjZGVmaW5lIENYMjA3MlhfTUlYRVJfR0FJTl9MRUZUXzEJCQkg
MHg1NWE0CisjZGVmaW5lIENYMjA3MlhfRVFfRU5BQkxFX0JZUEFTUwkJCSAweDZkMDAKKyNkZWZp
bmUgQ1gyMDcyWF9FUV9CMF9DT0VGRgkJCQkgMHg2ZDAyCisjZGVmaW5lIENYMjA3MlhfRVFfQjFf
Q09FRkYJCQkJIDB4NmQwNAorI2RlZmluZSBDWDIwNzJYX0VRX0IyX0NPRUZGCQkJCSAweDZkMDYK
KyNkZWZpbmUgQ1gyMDcyWF9FUV9BMV9DT0VGRgkJCQkgMHg2ZDA4CisjZGVmaW5lIENYMjA3Mlhf
RVFfQTJfQ09FRkYJCQkJIDB4NmQwYQorI2RlZmluZSBDWDIwNzJYX0VRX0dfQ09FRkYJCQkJIDB4
NmQwYworI2RlZmluZSBDWDIwNzJYX0VRX0JBTkQJCQkJCSAweDZkMGQKKyNkZWZpbmUgQ1gyMDcy
WF9TUEtSX0RSQ19FTkFCTEVfU1RFUAkJCSAweDZkMTAKKyNkZWZpbmUgQ1gyMDcyWF9TUEtSX0RS
Q19DT05UUk9MCQkJIDB4NmQxNAorI2RlZmluZSBDWDIwNzJYX1NQS1JfRFJDX1RFU1QJCQkJIDBY
NkQxOAorI2RlZmluZSBDWDIwNzJYX0RJR0lUQUxfQklPU19URVNUMAkJCSAweDZkODAKKyNkZWZp
bmUgQ1gyMDcyWF9ESUdJVEFMX0JJT1NfVEVTVDIJCQkgMHg2ZDg0CisjZGVmaW5lIENYMjA3Mlhf
STJTUENNX0NPTlRST0wxCQkJCSAweDZlMDAKKyNkZWZpbmUgQ1gyMDcyWF9JMlNQQ01fQ09OVFJP
TDIJCQkJIDB4NmUwNAorI2RlZmluZSBDWDIwNzJYX0kyU1BDTV9DT05UUk9MMwkJCQkgMHg2ZTA4
CisjZGVmaW5lIENYMjA3MlhfSTJTUENNX0NPTlRST0w0CQkJCSAweDZlMGMKKyNkZWZpbmUgQ1gy
MDcyWF9JMlNQQ01fQ09OVFJPTDUJCQkJIDB4NmUxMAorI2RlZmluZSBDWDIwNzJYX0kyU1BDTV9D
T05UUk9MNgkJCQkgMHg2ZTE4CisjZGVmaW5lIENYMjA3MlhfVU1fSU5URVJSVVBUX0NSVExfRQkJ
CSAweDZlMTQKKyNkZWZpbmUgQ1gyMDcyWF9DT0RFQ19URVNUMgkJCQkgMHg3MTA4CisjZGVmaW5l
IENYMjA3MlhfQ09ERUNfVEVTVDkJCQkJIDB4NzEyNAorI2RlZmluZSBDWDIwNzJYX0NPREVDX1RF
U1QyMAkJCQkgMHg3MzEwCisjZGVmaW5lIENYMjA3MlhfQ09ERUNfVEVTVDI2CQkJCSAweDczMjgK
KyNkZWZpbmUgQ1gyMDcyWF9BTkFMT0dfVEVTVDMJCQkJIDB4NzE4YworI2RlZmluZSBDWDIwNzJY
X0FOQUxPR19URVNUNAkJCQkgMHg3MTkwCisjZGVmaW5lIENYMjA3MlhfQU5BTE9HX1RFU1Q1CQkJ
CSAweDcxOTQKKyNkZWZpbmUgQ1gyMDcyWF9BTkFMT0dfVEVTVDYJCQkJIDB4NzE5OAorI2RlZmlu
ZSBDWDIwNzJYX0FOQUxPR19URVNUNwkJCQkgMHg3MTljCisjZGVmaW5lIENYMjA3MlhfQU5BTE9H
X1RFU1Q4CQkJCSAweDcxYTAKKyNkZWZpbmUgQ1gyMDcyWF9BTkFMT0dfVEVTVDkJCQkJIDB4NzFh
NAorI2RlZmluZSBDWDIwNzJYX0FOQUxPR19URVNUMTAJCQkJIDB4NzFhOAorI2RlZmluZSBDWDIw
NzJYX0FOQUxPR19URVNUMTEJCQkJIDB4NzFhYworI2RlZmluZSBDWDIwNzJYX0FOQUxPR19URVNU
MTIJCQkJIDB4NzFiMAorI2RlZmluZSBDWDIwNzJYX0FOQUxPR19URVNUMTMJCQkJIDB4NzFiNAor
I2RlZmluZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDAJCQkJIDB4NzIwMAorI2RlZmluZSBDWDIwNzJY
X0RJR0lUQUxfVEVTVDEJCQkJIDB4NzIwNAorI2RlZmluZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDEx
CQkJCSAweDcyMmMKKyNkZWZpbmUgQ1gyMDcyWF9ESUdJVEFMX1RFU1QxMgkJCQkgMHg3MjMwCisj
ZGVmaW5lIENYMjA3MlhfRElHSVRBTF9URVNUMTUJCQkJIDB4NzIzYworI2RlZmluZSBDWDIwNzJY
X0RJR0lUQUxfVEVTVDE2CQkJCSAweDcwODAKKyNkZWZpbmUgQ1gyMDcyWF9ESUdJVEFMX1RFU1Qx
NwkJCQkgMHg3MDg0CisjZGVmaW5lIENYMjA3MlhfRElHSVRBTF9URVNUMTgJCQkJIDB4NzA4OAor
I2RlZmluZSBDWDIwNzJYX0RJR0lUQUxfVEVTVDE5CQkJCSAweDcwOGMKKyNkZWZpbmUgQ1gyMDcy
WF9ESUdJVEFMX1RFU1QyMAkJCQkgMHg3MDkwCisKKyNkZWZpbmUgSU5WQUxJRF9HUElPIC0xCisj
ZGVmaW5lIE1BWF9FUV9CQU5EIDcKKyNkZWZpbmUgTUFYX0VRX0NPRUZGIDExCisjZGVmaW5lIE1B
WF9EUkNfUkVHUyA5CisjZGVmaW5lIE1JQ19FUV9DT0VGRiAxMAorLyogREFJIGludGVyZmFlIHR5
cGUqLworCisjZGVmaW5lIENYMjA3MlhfREFJX0hJRkkgMQorI2RlZmluZSBDWDIwNzJYX0RBSV9E
U1AgIDIKKy8qNCBjaCwgaW5jbHVkaW5nIG1pYyBhbmQgYWVjKi8KKyNkZWZpbmUgQ1gyMDcyWF9E
QUlfRFNQX1BXTSAzCisKK2VudW0gY3gyMDcyeF9qYWNrX3R5cGVzIHsKKwlDWF9KQUNLX05PTkUg
PSAweDAwMDAsCisJQ1hfSkFDS19IRUFEUEhPTkUgPSAweDAwMDEsCisJQ1hfSkFDS19BUFBMRV9I
RUFEU0VUID0gMHgwMDAyLAorCUNYX0pBQ0tfTk9LSUVfSEVBRFNFVCA9IDB4MDAwMywKK307CisK
K2ludCBjeDIwNzJ4X2VuYWJsZV9kZXRlY3Qoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21w
b25lbnQpOworaW50IGN4MjA3MnhfZ2V0X2phY2tfc3RhdGUoc3RydWN0IHNuZF9zb2NfY29tcG9u
ZW50ICpjb21wb25lbnQpOworCitlbnVtIFJFR19TQU1QTEVfU0laRSB7CisJU0FNUExFX1NJWkVf
OF9CSVRTID0gMCwKKwlTQU1QTEVfU0laRV8xNl9CSVRTID0gMSwKKwlTQU1QTEVfU0laRV8yNF9C
SVRTID0gMiwKKwlTQU1QTEVfU0laRV9SRVNFUlZFRCA9IDMsCit9OworCit1bmlvbiBSRUdfSTJT
UENNX0NUUkxfUkVHMSB7CisJc3RydWN0IHsKKwkJdTMyIHJ4X2RhdGFfb25lX2xpbmU6MTsKKwkJ
dTMyIHJ4X3dzX3BvbDoxOworCQl1MzIgcnhfd3Nfd2lkOjc7CisJCXUzMiByeF9mcm1fbGVuOjU7
CisJCXUzMiByeF9zYV9zaXplOjI7CisJCXUzMiB0eF9kYXRhX29uZV9saW5lOjE7CisJCXUzMiB0
eF93c19wb2w6MTsKKwkJdTMyIHR4X3dzX3dpZDo3OworCQl1MzIgdHhfZnJtX2xlbjo1OworCQl1
MzIgdHhfc2Ffc2l6ZToyOworCX0gcjsKKwl1MzIgdWx2YWw7Cit9OworCit1bmlvbiBSRUdfSTJT
UENNX0NUUkxfUkVHMiB7CisJc3RydWN0IHsKKwkJdTMyIHR4X2VuX2NoMToxOworCQl1MzIgdHhf
ZW5fY2gyOjE7CisJCXUzMiB0eF9lbl9jaDM6MTsKKwkJdTMyIHR4X2VuX2NoNDoxOworCQl1MzIg
dHhfZW5fY2g1OjE7CisJCXUzMiB0eF9lbl9jaDY6MTsKKwkJdTMyIHR4X3Nsb3RfMTo1OworCQl1
MzIgdHhfc2xvdF8yOjU7CisJCXUzMiB0eF9zbG90XzM6NTsKKwkJdTMyIHR4X3Nsb3RfNDo1Owor
CQl1MzIgcmVzOjE7CisJCXUzMiB0eF9kYXRhX25lZ19iY2xrOjE7CisJCXUzMiB0eF9tYXN0ZXI6
MTsKKwkJdTMyIHR4X3RyaV9uOjE7CisJCXUzMiB0eF9lbmRpYW5fc2VsOjE7CisJCXUzMiB0eF9k
c3RhcnRfZGx5OjE7CisJfSByOworCXUzMiB1bHZhbDsKK307CisKK3VuaW9uIFJFR19JMlNQQ01f
Q1RSTF9SRUczIHsKKwlzdHJ1Y3QgeworCQl1MzIgcnhfZW5fY2gxOjE7CisJCXUzMiByeF9lbl9j
aDI6MTsKKwkJdTMyIHJ4X2VuX2NoMzoxOworCQl1MzIgcnhfZW5fY2g0OjE7CisJCXUzMiByeF9l
bl9jaDU6MTsKKwkJdTMyIHJ4X2VuX2NoNjoxOworCQl1MzIgcnhfc2xvdF8xOjU7CisJCXUzMiBy
eF9zbG90XzI6NTsKKwkJdTMyIHJ4X3Nsb3RfMzo1OworCQl1MzIgcnhfc2xvdF80OjU7CisJCXUz
MiByZXM6MTsKKwkJdTMyIHJ4X2RhdGFfbmVnX2JjbGs6MTsKKwkJdTMyIHJ4X21hc3RlcjoxOwor
CQl1MzIgcnhfdHJpX246MTsKKwkJdTMyIHJ4X2VuZGlhbl9zZWw6MTsKKwkJdTMyIHJ4X2RzdGFy
dF9kbHk6MTsKKwl9IHI7CisJdTMyIHVsdmFsOworfTsKKwordW5pb24gUkVHX0kyU1BDTV9DVFJM
X1JFRzQgeworCXN0cnVjdCB7CisJCXUzMiByeF9tdXRlOjE7CisJCXUzMiB0eF9tdXRlOjE7CisJ
CXUzMiByZXNlcnZlZDoxOworCQl1MzIgZGFjXzM0X2luZGVwZW5kZW50OjE7CisJCXUzMiBkYWNf
YmNsa19scmNrX3NoYXJlOjE7CisJCXUzMiBiY2xrX2xyY2tfc2hhcmVfZW46MTsKKwkJdTMyIHJl
c2VydmVkMjoyOworCQl1MzIgcnhfbGFzdF9kYWNfY2hfZW46MTsKKwkJdTMyIHJ4X2xhc3RfZGFj
X2NoOjM7CisJCXUzMiB0eF9sYXN0X2FkY19jaF9lbjoxOworCQl1MzIgdHhfbGFzdF9hZGNfY2g6
MzsKKwkJdTMyIHJ4X3Nsb3RfNTo1OworCQl1MzIgcnhfc2xvdF82OjU7CisJCXUzMiByZXNlcnZl
ZDM6NjsKKwl9IHI7CisJdTMyIHVsdmFsOworfTsKKwordW5pb24gUkVHX0kyU1BDTV9DVFJMX1JF
RzUgeworCXN0cnVjdCB7CisJCXUzMiB0eF9zbG90XzU6NTsKKwkJdTMyIHJlc2VydmVkOjM7CisJ
CXUzMiB0eF9zbG90XzY6NTsKKwkJdTMyIHJlc2VydmVkMjozOworCQl1MzIgcmVzZXJ2ZWQzOjg7
CisJCXUzMiBpMnNfcGNtX2Nsa19kaXY6NzsKKwkJdTMyIGkyc19wY21fY2xrX2Rpdl9jaGFuX2Vu
OjE7CisJfSByOworCXUzMiB1bHZhbDsKK307CisKK3VuaW9uIFJFR19JMlNQQ01fQ1RSTF9SRUc2
IHsKKwlzdHJ1Y3QgeworCQl1MzIgcmVzZXJ2ZWQ6NTsKKwkJdTMyIHJ4X3BhdXNlX2N5Y2xlczoz
OworCQl1MzIgcnhfcGF1c2Vfc3RhcnRfcG9zOjg7CisJCXUzMiByZXNlcnZlZDI6NTsKKwkJdTMy
IHR4X3BhdXNlX2N5Y2xlczozOworCQl1MzIgdHhfcGF1c2Vfc3RhcnRfcG9zOjg7CisJfSByOwor
CXUzMiB1bHZhbDsKK307CisKK3VuaW9uIFJFR19ESUdJVEFMX0JJT1NfVEVTVDIgeworCXN0cnVj
dCB7CisJCXUzMiBwdWxsX2Rvd25fZWFwZDoyOworCQl1MzIgaW5wdXRfZW5fZWFwZF9wYWQ6MTsK
KwkJdTMyIHB1c2hfcHVsbF9tb2RlOjE7CisJCXUzMiBlYXBkX3BhZF9vdXRwdXRfZHJpdmVyOjI7
CisJCXUzMiBwbGxfc291cmNlOjE7CisJCXUzMiBpMnNfYmNsa19lbjoxOworCQl1MzIgaTJzX2Jj
bGtfaW52ZXJ0OjE7CisJCXUzMiBwbGxfcmVmX2Nsb2NrOjE7CisJCXUzMiBjbGFzc19kX3NoaWVs
ZF9jbGs6MTsKKwkJdTMyIGF1ZGlvX3BsbF9ieXBhc3NfbW9kZToxOworCQl1MzIgcmVzZXJ2ZWQ6
NDsKKwl9IHI7CisJdTMyIHVsdmFsOworfTsKLS0tIGxpbnV4LTQuMjAvc291bmQvc29jL2ludGVs
L2JvYXJkcy9LY29uZmlnCTIwMTgtMTItMjMgMTg6NTU6NTkuMDAwMDAwMDAwIC0wNTAwCisrKyBs
aW51eC00LjIwL3NvdW5kL3NvYy9pbnRlbC9ib2FyZHMvS2NvbmZpZwkyMDE4LTEyLTI2IDA2OjU1
OjE3LjAwMDAwMDAwMCAtMDUwMApAQCAtOTIsNiArOTIsMTcgQEAgCiAJICBTYXkgWSBvciBtIGlm
IHlvdSBoYXZlIHN1Y2ggYSBkZXZpY2UuIFRoaXMgaXMgYSByZWNvbW1lbmRlZCBvcHRpb24uCiAJ
ICBJZiB1bnN1cmUgc2VsZWN0ICJOIi4KIAorY29uZmlnIFNORF9TT0NfSU5URUxfQ0hUX0NYMjA3
MlhfTUFDSAorICAgICAgICB0cmlzdGF0ZSAiQmF5dHJhaWwgYW5kIENoZXJyeXRyYWlsIHdpdGgg
Q1gyMDcyWCBjb2RlYyIKKyAgICAgICAgZGVwZW5kcyBvbiBYODZfSU5URUxfTFBTUyAmJiBJMkMg
JiYgQUNQSQorCXNlbGVjdCBTTkRfU09DX0FDUEkKKyAgICAgICAgc2VsZWN0IFNORF9TT0NfQ1gy
MDcyWAorICAgICAgICBoZWxwCisgICAgICAgICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIEFTb0Mg
bWFjaGluZSBkcml2ZXIgZm9yIEludGVsKFIpIENoZXJyeXRyYWlsICYgQnJhc3dlbGwKKyAgICAg
ICAgICBwbGF0Zm9ybXMgd2l0aCBDb25leGFudCBDWDIwNzJYIGF1ZGlvIGNvZGVjLgorICAgICAg
ICAgIFNheSBZIGlmIHlvdSBoYXZlIHN1Y2ggYSBkZXZpY2UuCisgICAgICAgICAgSWYgdW5zdXJl
IHNlbGVjdCAiTiIuCisKIGNvbmZpZyBTTkRfU09DX0lOVEVMX0NIVF9CU1dfUlQ1NjcyX01BQ0gK
IAl0cmlzdGF0ZSAiQ2hlcnJ5dHJhaWwgJiBCcmFzd2VsbCB3aXRoIFJUNTY3MiBjb2RlYyIKIAlk
ZXBlbmRzIG9uIFg4Nl9JTlRFTF9MUFNTICYmIEkyQyAmJiBBQ1BJCi0tLSBsaW51eC00LjIwL3Nv
dW5kL3NvYy9pbnRlbC9ib2FyZHMvTWFrZWZpbGUJMjAxOC0xMi0yMyAxODo1NTo1OS4wMDAwMDAw
MDAgLTA1MDAKKysrIGxpbnV4LTQuMjAvc291bmQvc29jL2ludGVsL2JvYXJkcy9NYWtlZmlsZQky
MDE4LTEyLTI2IDA2OjU1OjE3LjAwMDAwMDAwMCAtMDUwMApAQCAtOSw2ICs5LDcgQEAgCiBzbmQt
c29jLXNzdC1nbGstcnQ1NjgyX21heDk4MzU3YS1vYmpzIDo9IGdsa19ydDU2ODJfbWF4OTgzNTdh
Lm8KIHNuZC1zb2Mtc3N0LWJ5dGNyLXJ0NTY0MC1vYmpzIDo9IGJ5dGNyX3J0NTY0MC5vCiBzbmQt
c29jLXNzdC1ieXRjci1ydDU2NTEtb2JqcyA6PSBieXRjcl9ydDU2NTEubworc25kLXNvYy1zc3Qt
Y2h0LWN4MjA3Mngtb2JqcyA6PSBjaHRfY3gyMDcyeC5vCiBzbmQtc29jLXNzdC1jaHQtYnN3LXJ0
NTY3Mi1vYmpzIDo9IGNodF9ic3dfcnQ1NjcyLm8KIHNuZC1zb2Mtc3N0LWNodC1ic3ctcnQ1NjQ1
LW9ianMgOj0gY2h0X2Jzd19ydDU2NDUubwogc25kLXNvYy1zc3QtY2h0LWJzdy1tYXg5ODA5MF90
aS1vYmpzIDo9IGNodF9ic3dfbWF4OTgwOTBfdGkubwpAQCAtMzUsNiArMzYsNyBAQCAKIG9iai0k
KENPTkZJR19TTkRfU09DX0lOVEVMX0JEV19SVDU2NzdfTUFDSCkgKz0gc25kLXNvYy1zc3QtYmR3
LXJ0NTY3Ny1tYWNoLm8KIG9iai0kKENPTkZJR19TTkRfU09DX0lOVEVMX0JZVENSX1JUNTY0MF9N
QUNIKSArPSBzbmQtc29jLXNzdC1ieXRjci1ydDU2NDAubwogb2JqLSQoQ09ORklHX1NORF9TT0Nf
SU5URUxfQllUQ1JfUlQ1NjUxX01BQ0gpICs9IHNuZC1zb2Mtc3N0LWJ5dGNyLXJ0NTY1MS5vCitv
YmotJChDT05GSUdfU05EX1NPQ19JTlRFTF9DSFRfQ1gyMDcyWF9NQUNIKSArPSBzbmQtc29jLXNz
dC1jaHQtY3gyMDcyeC5vCiBvYmotJChDT05GSUdfU05EX1NPQ19JTlRFTF9DSFRfQlNXX1JUNTY3
Ml9NQUNIKSArPSBzbmQtc29jLXNzdC1jaHQtYnN3LXJ0NTY3Mi5vCiBvYmotJChDT05GSUdfU05E
X1NPQ19JTlRFTF9DSFRfQlNXX1JUNTY0NV9NQUNIKSArPSBzbmQtc29jLXNzdC1jaHQtYnN3LXJ0
NTY0NS5vCiBvYmotJChDT05GSUdfU05EX1NPQ19JTlRFTF9DSFRfQlNXX01BWDk4MDkwX1RJX01B
Q0gpICs9IHNuZC1zb2Mtc3N0LWNodC1ic3ctbWF4OTgwOTBfdGkubwotLS0gbGludXgtNC4yMC9z
b3VuZC9zb2MvaW50ZWwvYm9hcmRzL2NodF9jeDIwNzJ4LmMJMTk2OS0xMi0zMSAxOTowMDowMC4w
MDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTQuMjAvc291bmQvc29jL2ludGVsL2JvYXJkcy9jaHRf
Y3gyMDcyeC5jCTIwMTgtMTItMjYgMDY6NTU6MTcuMDAwMDAwMDAwIC0wNTAwCkBAIC0wLDAgKzEs
MzM2IEBAIAorLyoKKyAqICBjaHRfY3gyMDd4LmMgLSBBU29jIERQQ00gTWFjaGluZSBkcml2ZXIg
Zm9yIENoZXJyeVRyYWlsIHcvIENYMjA3MngKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IElu
dGVsIENvcnAKKyAqICBBdXRob3I6IFBpZXJyZS1Mb3VpcyBCb3NzYXJ0IDxwaWVycmUtbG91aXMu
Ym9zc2FydEBsaW51eC5pbnRlbC5jb20+CisgKgorICogIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgKgor
ICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisgKgorICogIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK
KyAqICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAqLworCisjaW5jbHVkZSA8bGlu
dXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Bs
YXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKyNpbmNsdWRlIDxsaW51
eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8YXNtL3BsYXRm
b3JtX3NzdF9hdWRpby5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgorI2luY2x1ZGUgPHNvdW5k
L3BjbV9wYXJhbXMuaD4KKyNpbmNsdWRlIDxzb3VuZC9zb2MuaD4KKyNpbmNsdWRlIDxzb3VuZC9q
YWNrLmg+CisjaW5jbHVkZSA8c291bmQvc29jLWFjcGkuaD4KKyNpbmNsdWRlICIuLi8uLi9jb2Rl
Y3MvY3gyMDcyeC5oIgorI2luY2x1ZGUgIi4uL2F0b20vc3N0LWF0b20tY29udHJvbHMuaCIKKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0IGNodF9kYXBtX3dpZGdldHNb
XSA9IHsKKwlTTkRfU09DX0RBUE1fSFAoIkhlYWRwaG9uZSIsIE5VTEwpLAorCVNORF9TT0NfREFQ
TV9NSUMoIkhlYWRzZXQgTWljIiwgTlVMTCksCisJU05EX1NPQ19EQVBNX01JQygiSW50IE1pYyIs
IE5VTEwpLAorCVNORF9TT0NfREFQTV9TUEsoIkV4dCBTcGsiLCBOVUxMKSwKK307CisKK3N0YXRp
YyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3JvdXRlIGNodF9hdWRpb19tYXBbXSA9IHsKKwkv
KiBFeHRlcm5hbCBTcGVha2VyczogSEZMLCBIRlIgKi8KKwl7IkhlYWRwaG9uZSIsIE5VTEwsICJQ
T1JUQSJ9LAorCXsiRXh0IFNwayIsIE5VTEwsICJQT1JURyJ9LAorCXsiUE9SVEMiLCBOVUxMLCAi
SW50IE1pYyJ9LAorCXsiUE9SVEQiLCBOVUxMLCAiSGVhZHNldCBNaWMifSwKKworCXsiUGxheWJh
Y2siLCBOVUxMLCAic3NwMiBUeCJ9LAorCXsic3NwMiBUeCIsIE5VTEwsICJjb2RlY19vdXQwIn0s
CisJeyJzc3AyIFR4IiwgTlVMTCwgImNvZGVjX291dDEifSwKKwl7ImNvZGVjX2luMCIsIE5VTEws
ICJzc3AyIFJ4In0sCisJeyJjb2RlY19pbjEiLCBOVUxMLCAic3NwMiBSeCJ9LAorCXsic3NwMiBS
eCIsIE5VTEwsICJDYXB0dXJlIn0sCisJeyJzc3AwIFR4IiwgTlVMTCwgIm1vZGVtX291dCJ9LAor
CXsibW9kZW1faW4iLCBOVUxMLCAic3NwMCBSeCJ9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj
dCBzbmRfa2NvbnRyb2xfbmV3IGNodF9tY19jb250cm9sc1tdID0geworCVNPQ19EQVBNX1BJTl9T
V0lUQ0goIkhlYWRwaG9uZSIpLAorCVNPQ19EQVBNX1BJTl9TV0lUQ0goIkhlYWRzZXQgTWljIiks
CisJU09DX0RBUE1fUElOX1NXSVRDSCgiSW50IE1pYyIpLAorCVNPQ19EQVBNX1BJTl9TV0lUQ0go
IkV4dCBTcGsiKSwKK307CisKK3N0YXRpYyBpbnQgY2h0X2FpZjFfaHdfcGFyYW1zKHN0cnVjdCBz
bmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJICAgICBzdHJ1Y3Qgc25kX3BjbV9od19w
YXJhbXMgKnBhcmFtcykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfc29j
X2phY2sgY2h0X2N4X2hlYWRzZXQ7CisKKy8qIEhlYWRzZXQgamFjayBkZXRlY3Rpb24gREFQTSBw
aW5zICovCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfamFja19waW4gY2h0X2N4X2hlYWRzZXRfcGlu
c1tdID0geworCXsKKwkJLnBpbiA9ICJIZWFkc2V0IE1pYyIsCisJCS5tYXNrID0gU05EX0pBQ0tf
TUlDUk9QSE9ORSwKKwl9LAorCXsKKwkJLnBpbiA9ICJIZWFkcGhvbmUiLAorCQkubWFzayA9IFNO
RF9KQUNLX0hFQURQSE9ORSwKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2dw
aW9fcGFyYW1zIGhlYWRzZXRfZ3Bpb3MgPSB7IDAsIDAsIGZhbHNlIH07CisKK3N0YXRpYyBjb25z
dCBzdHJ1Y3QgYWNwaV9ncGlvX21hcHBpbmcgYWNwaV9jaHRfY3gyMDcyeF9ncGlvc1tdID0gewor
CXsgImhlYWRzZXQtZ3Bpb3MiLCAmaGVhZHNldF9ncGlvcywgMSB9LAorCXt9LAorfTsKKworc3Rh
dGljIGludCBjaHRfY3hfamFja19zdGF0dXNfY2hlY2sodm9pZCAqZGF0YSkKK3sKKwlyZXR1cm4g
Y3gyMDcyeF9nZXRfamFja19zdGF0ZShkYXRhKTsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfc29j
X2phY2tfZ3BpbyBjaHRfY3hfZ3BpbyA9IHsKKwkubmFtZSA9ICJoZWFkc2V0IiwKKwkucmVwb3J0
ID0gU05EX0pBQ0tfSEVBRFNFVCB8IFNORF9KQUNLX0JUTl8wLAorCS5kZWJvdW5jZV90aW1lID0g
MTUwLAorCS53YWtlID0gdHJ1ZSwKKwkuamFja19zdGF0dXNfY2hlY2sgPSBjaHRfY3hfamFja19z
dGF0dXNfY2hlY2ssCit9OworCitzdGF0aWMgaW50IGNodF9jb2RlY19pbml0KHN0cnVjdCBzbmRf
c29jX3BjbV9ydW50aW1lICpydGQpCit7CisJaW50IHJldDsKKwlzdHJ1Y3Qgc25kX3NvY19jYXJk
ICpjYXJkID0gcnRkLT5jYXJkOworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50
ID0gcnRkLT5jb2RlY19kYWktPmNvbXBvbmVudDsKKworCWlmIChkZXZtX2FjcGlfZGV2X2FkZF9k
cml2ZXJfZ3Bpb3MoY29tcG9uZW50LT5kZXYsCisJCQkJCSAgIGFjcGlfY2h0X2N4MjA3MnhfZ3Bp
b3MpKQorCQlkZXZfd2FybihydGQtPmRldiwgIlVuYWJsZSB0byBhZGQgR1BJTyBtYXBwaW5nIHRh
YmxlXG4iKTsKKworCWNhcmQtPmRhcG0uaWRsZV9iaWFzX29mZiA9IHRydWU7CisKKwkvKiBzZXQg
dGhlIGRlZmF1bHQgUExMIHJhdGUsIHRoZSBjbG9jayBpcyBoYW5kbGVkIGJ5IHRoZSBjb2RlYyBk
cml2ZXIgKi8KKwlyZXQgPSBzbmRfc29jX2RhaV9zZXRfc3lzY2xrKHJ0ZC0+Y29kZWNfZGFpLCBD
WDIwNzJYX01DTEtfRVhURVJOQUxfUExMLAorCQkJCSAgICAgMTkyMDAwMDAsIFNORF9TT0NfQ0xP
Q0tfSU4pOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihydGQtPmRldiwgIkNvdWxkIG5vdCBzZXQg
c3lzY2xrXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBzbmRfc29jX2NhcmRfamFj
a19uZXcoY2FyZCwgIkhlYWRzZXQiLAorCQkJCSAgICBTTkRfSkFDS19IRUFEU0VUIHwgU05EX0pB
Q0tfQlROXzAsCisJCQkJICAgICZjaHRfY3hfaGVhZHNldCwKKwkJCQkgICAgY2h0X2N4X2hlYWRz
ZXRfcGlucywKKwkJCQkgICAgQVJSQVlfU0laRShjaHRfY3hfaGVhZHNldF9waW5zKSk7CisJaWYg
KHJldCkKKwkJcmV0dXJuIHJldDsKKworCWNodF9jeF9ncGlvLmdwaW9kX2RldiA9IGNvbXBvbmVu
dC0+ZGV2OworCWNodF9jeF9ncGlvLmRhdGEgPSBjb21wb25lbnQ7CisKKwlyZXQgPSBzbmRfc29j
X2phY2tfYWRkX2dwaW9zKCZjaHRfY3hfaGVhZHNldCwgMSwgJmNodF9jeF9ncGlvKTsKKwlpZiAo
cmV0KSB7CisJCWRldl9lcnIocnRkLT5kZXYsICJBZGRpbmcgamFjayBHUElPIGZhaWxlZFxuIik7
CisJCXJldHVybiByZXQ7CisJfQorCisJY3gyMDcyeF9lbmFibGVfZGV0ZWN0KGNvbXBvbmVudCk7
CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfcGNtX3N0
cmVhbSBjaHRfZGFpX3BhcmFtcyA9IHsKKwkuZm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfUzI0
X0xFLAorCS5yYXRlX21pbiA9IDQ4MDAwLAorCS5yYXRlX21heCA9IDQ4MDAwLAorCS5jaGFubmVs
c19taW4gPSAyLAorCS5jaGFubmVsc19tYXggPSAyLAorfTsKKworc3RhdGljIGludCBjaHRfY29k
ZWNfZml4dXAoc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCwKKwkJCSAgICBzdHJ1Y3Qg
c25kX3BjbV9od19wYXJhbXMgKnBhcmFtcykKK3sKKwlzdHJ1Y3Qgc25kX2ludGVydmFsICpyYXRl
ID0gaHdfcGFyYW1faW50ZXJ2YWwocGFyYW1zLAorCQkJU05EUlZfUENNX0hXX1BBUkFNX1JBVEUp
OworCXN0cnVjdCBzbmRfaW50ZXJ2YWwgKmNoYW5uZWxzID0gaHdfcGFyYW1faW50ZXJ2YWwocGFy
YW1zLAorCQkJCQkJU05EUlZfUENNX0hXX1BBUkFNX0NIQU5ORUxTKTsKKwlpbnQgcmV0OworCisJ
LyogVGhlIERTUCB3aWxsIGNvdmVydCB0aGUgRkUgcmF0ZSB0byA0OGssIHN0ZXJlbywgMjRiaXRz
ICovCisJcmF0ZS0+bWluID0gcmF0ZS0+bWF4ID0gNDgwMDA7CisJY2hhbm5lbHMtPm1pbiA9IGNo
YW5uZWxzLT5tYXggPSAyOworCisJLyogc2V0IFNTUDIgdG8gMjQtYml0ICovCisJcGFyYW1zX3Nl
dF9mb3JtYXQocGFyYW1zLCBTTkRSVl9QQ01fRk9STUFUX1MyNF9MRSk7CisKKwkvKgorCSAqIERl
ZmF1bHQgbW9kZSBmb3IgU1NQIGNvbmZpZ3VyYXRpb24gaXMgVERNIDQgc2xvdCwgb3ZlcnJpZGUg
Y29uZmlnCisJICogd2l0aCBleHBsaWNpdCBzZXR0aW5nIHRvIEkyUyAyY2ggMjQtYml0LiBUaGUg
d29yZCBsZW5ndGggaXMgc2V0IHdpdGgKKwkgKiBkYWlfc2V0X3RkbV9zbG90KCkgc2luY2UgdGhl
cmUgaXMgbm8gb3RoZXIgQVBJIGV4cG9zZWQKKwkgKi8KKwlyZXQgPSBzbmRfc29jX2RhaV9zZXRf
Zm10KHJ0ZC0+Y3B1X2RhaSwKKwkJCQlTTkRfU09DX0RBSUZNVF9JMlMgICAgIHwKKwkJCQlTTkRf
U09DX0RBSUZNVF9OQl9ORiAgIHwKKwkJCQlTTkRfU09DX0RBSUZNVF9DQlNfQ0ZTKTsKKwlpZiAo
cmV0IDwgMCkgeworCQlkZXZfZXJyKHJ0ZC0+ZGV2LCAiY2FuJ3Qgc2V0IGZvcm1hdCB0byBJMlMs
IGVyciAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBzbmRfc29jX2Rh
aV9zZXRfdGRtX3Nsb3QocnRkLT5jcHVfZGFpLCAweDMsIDB4MywgMiwgMjQpOworCWlmIChyZXQg
PCAwKSB7CisJCWRldl9lcnIocnRkLT5kZXYsICJjYW4ndCBzZXQgSTJTIGNvbmZpZywgZXJyICVk
XG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXNuZF9zb2NfZGFpX3NldF9iY2xrX3Jh
dGlvKHJ0ZC0+Y29kZWNfZGFpLCA1MCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBz
dHJ1Y3Qgc25kX3NvY19wY21fc3RyZWFtIGNodF9jeF9kYWlfcGFyYW1zID0geworCS5mb3JtYXRz
ID0gU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUsCisJLnJhdGVfbWluID0gNDgwMDAsCisJLnJhdGVf
bWF4ID0gNDgwMDAsCisJLmNoYW5uZWxzX21pbiA9IDIsCisJLmNoYW5uZWxzX21heCA9IDIsCit9
OworCitzdGF0aWMgaW50IGNodF9haWYxX3N0YXJ0dXAoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFt
ICpzdWJzdHJlYW0pCit7CisJcmV0dXJuIHNuZF9wY21faHdfY29uc3RyYWludF9zaW5nbGUoc3Vi
c3RyZWFtLT5ydW50aW1lLAorCQkJCQlTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwgNDgwMDApOwor
fQorCitzdGF0aWMgc3RydWN0IHNuZF9zb2Nfb3BzIGNodF9haWYxX29wcyA9IHsKKwkuc3RhcnR1
cCA9IGNodF9haWYxX3N0YXJ0dXAsCit9OworCitzdGF0aWMgc3RydWN0IHNuZF9zb2Nfb3BzIGNo
dF9iZV9zc3AyX29wcyA9IHsKKwkuaHdfcGFyYW1zID0gY2h0X2FpZjFfaHdfcGFyYW1zLAorfTsK
Kworc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9saW5rIGNodF9kYWlsaW5rW10gPSB7CisJW01F
UlJfRFBDTV9BVURJT10gPSB7CisJCS5uYW1lID0gIkF1ZGlvIFBvcnQiLAorCQkuc3RyZWFtX25h
bWUgPSAiQXVkaW8iLAorCQkuY3B1X2RhaV9uYW1lID0gIm1lZGlhLWNwdS1kYWkiLAorCQkuY29k
ZWNfZGFpX25hbWUgPSAic25kLXNvYy1kdW1teS1kYWkiLAorCQkuY29kZWNfbmFtZSA9ICJzbmQt
c29jLWR1bW15IiwKKwkJLnBsYXRmb3JtX25hbWUgPSAic3N0LW1mbGQtcGxhdGZvcm0iLAorCQku
bm9uYXRvbWljID0gdHJ1ZSwKKwkJLmR5bmFtaWMgPSAxLAorCQkuZHBjbV9wbGF5YmFjayA9IDEs
CisJCS5kcGNtX2NhcHR1cmUgPSAxLAorCQkub3BzID0gJmNodF9haWYxX29wcywKKwl9LAorCVtN
RVJSX0RQQ01fREVFUF9CVUZGRVJdID0geworCQkubmFtZSA9ICJEZWVwLUJ1ZmZlciBBdWRpbyBQ
b3J0IiwKKwkJLnN0cmVhbV9uYW1lID0gIkRlZXAtQnVmZmVyIEF1ZGlvIiwKKwkJLmNwdV9kYWlf
bmFtZSA9ICJkZWVwYnVmZmVyLWNwdS1kYWkiLAorCQkuY29kZWNfZGFpX25hbWUgPSAic25kLXNv
Yy1kdW1teS1kYWkiLAorCQkuY29kZWNfbmFtZSA9ICJzbmQtc29jLWR1bW15IiwKKwkJLnBsYXRm
b3JtX25hbWUgPSAic3N0LW1mbGQtcGxhdGZvcm0iLAorCQkubm9uYXRvbWljID0gdHJ1ZSwKKwkJ
LmR5bmFtaWMgPSAxLAorCQkuZHBjbV9wbGF5YmFjayA9IDEsCisJCS5vcHMgPSAmY2h0X2FpZjFf
b3BzLAorCX0sCisJW01FUlJfRFBDTV9DT01QUl0gPSB7CisJCS5uYW1lID0gIkNvbXByZXNzZWQg
UG9ydCIsCisJCS5zdHJlYW1fbmFtZSA9ICJDb21wcmVzcyIsCisJCS5jcHVfZGFpX25hbWUgPSAi
Y29tcHJlc3MtY3B1LWRhaSIsCisJCS5jb2RlY19kYWlfbmFtZSA9ICJzbmQtc29jLWR1bW15LWRh
aSIsCisJCS5jb2RlY19uYW1lID0gInNuZC1zb2MtZHVtbXkiLAorCQkucGxhdGZvcm1fbmFtZSA9
ICJzc3QtbWZsZC1wbGF0Zm9ybSIsCisJfSwKKwkvKiBDT0RFQzwtPkNPREVDIGxpbmsgKi8KKwkv
KiBiYWNrIGVuZHMgKi8KKwl7CisJCS5uYW1lID0gIlNTUDItQ29kZWMiLAorCQkuaWQgPSAxLAor
CQkuY3B1X2RhaV9uYW1lID0gInNzcDItcG9ydCIsCisJCS5wbGF0Zm9ybV9uYW1lID0gInNzdC1t
ZmxkLXBsYXRmb3JtIiwKKwkJLm5vX3BjbSA9IDEsCisJCS5jb2RlY19kYWlfbmFtZSA9ICJjeDIw
NzJ4LWhpZmkiLAorCQkuY29kZWNfbmFtZSA9ICJpMmMtMTRGMTA3MjA6MDAiLAorCQkuZGFpX2Zt
dCA9IFNORF9TT0NfREFJRk1UX0kyUyB8IFNORF9TT0NfREFJRk1UX05CX05GCisJCQkJCSAgICAg
IHwgU05EX1NPQ19EQUlGTVRfQ0JTX0NGUywKKwkJLmluaXQgPSBjaHRfY29kZWNfaW5pdCwKKwkJ
LmJlX2h3X3BhcmFtc19maXh1cCA9IGNodF9jb2RlY19maXh1cCwKKwkJLm5vbmF0b21pYyA9IHRy
dWUsCisJCS5kcGNtX3BsYXliYWNrID0gMSwKKwkJLmRwY21fY2FwdHVyZSA9IDEsCisJCS5vcHMg
PSAmY2h0X2JlX3NzcDJfb3BzLAorCX0sCit9OworCisvKiBTb0MgY2FyZCAqLworc3RhdGljIHN0
cnVjdCBzbmRfc29jX2NhcmQgY2h0Y3gyMDcyeF9jYXJkID0geworCS5uYW1lID0gImNodGN4MjA3
MngiLAorCS5kYWlfbGluayA9IGNodF9kYWlsaW5rLAorCS5udW1fbGlua3MgPSBBUlJBWV9TSVpF
KGNodF9kYWlsaW5rKSwKKwkuZGFwbV93aWRnZXRzID0gY2h0X2RhcG1fd2lkZ2V0cywKKwkubnVt
X2RhcG1fd2lkZ2V0cyA9IEFSUkFZX1NJWkUoY2h0X2RhcG1fd2lkZ2V0cyksCisJLmRhcG1fcm91
dGVzID0gY2h0X2F1ZGlvX21hcCwKKwkubnVtX2RhcG1fcm91dGVzID0gQVJSQVlfU0laRShjaHRf
YXVkaW9fbWFwKSwKKwkuY29udHJvbHMgPSBjaHRfbWNfY29udHJvbHMsCisJLm51bV9jb250cm9s
cyA9IEFSUkFZX1NJWkUoY2h0X21jX2NvbnRyb2xzKSwKK307CisKK3N0YXRpYyBjaGFyIGNodF9j
eF9jb2RlY19uYW1lWzE2XTsgLyogaTJjLTxISUQ+OjAwIHdpdGggSElEIGJlaW5nIDggY2hhcnMg
Ki8KKworc3RhdGljIGludCBzbmRfY2h0X21jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug
KnBkZXYpCit7CisJaW50IGk7CisJaW50IGRhaV9pbmRleDsKKwlzdHJ1Y3Qgc25kX3NvY19hY3Bp
X21hY2ggKm1hY2ggPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwljb25zdCBjaGFyICppMmNf
bmFtZSA9IE5VTEw7CisKKwkvKiBmaXggaW5kZXggb2YgY29kZWMgZGFpICovCisJZGFpX2luZGV4
ID0gTUVSUl9EUENNX0NPTVBSICsgMTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjaHRf
ZGFpbGluayk7IGkrKykgeworCQlpZiAoIXN0cmNtcChjaHRfZGFpbGlua1tpXS5jb2RlY19uYW1l
LCAiaTJjLTE0RjEwNzIwOjAwIikpIHsKKwkJCWRhaV9pbmRleCA9IGk7CisJCQlicmVhazsKKwkJ
fQorCX0KKworCS8qIGZpeHVwIGNvZGVjIG5hbWUgYmFzZWQgb24gSElEICovCisJaTJjX25hbWUg
PSBhY3BpX2Rldl9nZXRfZmlyc3RfbWF0Y2hfbmFtZShtYWNoLT5pZCwgTlVMTCwgLTEpOworCWlm
IChpMmNfbmFtZSkgeworCQlzbnByaW50ZihjaHRfY3hfY29kZWNfbmFtZSwgc2l6ZW9mKGNodF9j
eF9jb2RlY19uYW1lKSwKKwkJCSIlcyVzIiwgImkyYy0iLCBpMmNfbmFtZSk7CisJCWNodF9kYWls
aW5rW2RhaV9pbmRleF0uY29kZWNfbmFtZSA9IGNodF9jeF9jb2RlY19uYW1lOworCX0KKworCS8q
IHJlZ2lzdGVyIHRoZSBzb2MgY2FyZCAqLworCWNodGN4MjA3MnhfY2FyZC5kZXYgPSAmcGRldi0+
ZGV2OworCXJldHVybiBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY2FyZCgmcGRldi0+ZGV2LCAmY2h0
Y3gyMDcyeF9jYXJkKTsKK30KKworc3RhdGljIGludCBzbmRfY2h0X21jX3JlbW92ZShzdHJ1Y3Qg
cGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXNuZF9zb2NfamFja19mcmVlX2dwaW9zKCZjaHRf
Y3hfaGVhZHNldCwgMSwgJmNodF9jeF9ncGlvKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0
cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc25kX2NodF9tY19kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsK
KwkJLm5hbWUgPSAiY2h0LWN4MjA3MngiLAorCX0sCisJLnByb2JlID0gc25kX2NodF9tY19wcm9i
ZSwKKwkucmVtb3ZlID0gc25kX2NodF9tY19yZW1vdmUsCit9OworbW9kdWxlX3BsYXRmb3JtX2Ry
aXZlcihzbmRfY2h0X21jX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiQVNvQyBJbnRl
bChSKSBDaGVycnl0cmFpbCBNYWNoaW5lIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiUGllcnJl
LUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4iKTsK
K01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06Y2h0LWN4
MjA3MngiKTsKLS0tIGxpbnV4LTQuMjAvc291bmQvc29jL2ludGVsL2NvbW1vbi9zb2MtYWNwaS1p
bnRlbC1jaHQtbWF0Y2guYwkyMDE4LTEyLTIzIDE4OjU1OjU5LjAwMDAwMDAwMCAtMDUwMAorKysg
bGludXgtNC4yMC9zb3VuZC9zb2MvaW50ZWwvY29tbW9uL3NvYy1hY3BpLWludGVsLWNodC1tYXRj
aC5jCTIwMTgtMTItMjYgMDY6NTU6MTcuMDAwMDAwMDAwIC0wNTAwCkBAIC0xMTgsNiArMTE4LDE1
IEBAIAogCQkuYXNvY19wbGF0X25hbWUgPSAic3N0LW1mbGQtcGxhdGZvcm0iLAogCX0sCiAJewor
CQkuaWQgPSAiMTRGMTA3MjAiLAorCQkuZHJ2X25hbWUgPSAiY2h0LWN4MjA3MngiLAorCQkuZndf
ZmlsZW5hbWUgPSAiaW50ZWwvZndfc3N0XzIyYTguYmluIiwKKwkJLmJvYXJkID0gImNodC1ic3ci
LAorCQkuc29mX2Z3X2ZpbGVuYW1lID0gImludGVsL3JlZWYtY2h0LnJpIiwKKwkJLnNvZl90cGxn
X2ZpbGVuYW1lID0gImludGVsL3JlZWYtY2h0LWN4MjA3MmN4LnRwbGciLAorCQkuYXNvY19wbGF0
X25hbWUgPSAic3N0LW1mbGQtcGxhdGZvcm0iLAorCX0sCisJewogCQkuaWQgPSAiMTA1MDg4MjQi
LAogCQkuZHJ2X25hbWUgPSAiY2h0LWJzdy1uYXU4ODI0IiwKIAkJLmZ3X2ZpbGVuYW1lID0gImlu
dGVsL2Z3X3NzdF8yMmE4LmJpbiIsCi0tLSBsaW51eC00LjIwL2NvbmZpZy14ODZfNjQJMjAxOS0w
My0xOSAwOTo0MTozMS41OTkyNDgyMDAgKzAwMDAKKysrIGxpbnV4LTQuMjAvY29uZmlnLXg4Nl82
NAkyMDE5LTAzLTE1IDA3OjIyOjU1LjI0OTQ2NTYyNSArMDAwMApAQCAtNjIyMCw2ICs2MzMwLDcg
QEAKIENPTkZJR19TTkRfU09DX0lOVEVMX0JST0FEV0VMTF9NQUNIPW0KIENPTkZJR19TTkRfU09D
X0lOVEVMX0JZVENSX1JUNTY0MF9NQUNIPW0KIENPTkZJR19TTkRfU09DX0lOVEVMX0JZVENSX1JU
NTY1MV9NQUNIPW0KK0NPTkZJR19TTkRfU09DX0lOVEVMX0NIVF9DWDIwNzJYX01BQ0g9bQogQ09O
RklHX1NORF9TT0NfSU5URUxfQ0hUX0JTV19SVDU2NzJfTUFDSD1tCiBDT05GSUdfU05EX1NPQ19J
TlRFTF9DSFRfQlNXX1JUNTY0NV9NQUNIPW0KIENPTkZJR19TTkRfU09DX0lOVEVMX0NIVF9CU1df
TUFYOTgwOTBfVElfTUFDSD1tCkBAIC02Mjg3LDYgKzYzOTcsNyBAQAogQ09ORklHX1NORF9TT0Nf
Q1M0MzEzMD1tCiBDT05GSUdfU05EX1NPQ19DUzQzNDk9bQogQ09ORklHX1NORF9TT0NfQ1M1M0wz
MD1tCitDT05GSUdfU05EX1NPQ19DWDIwNzJYPW0KIENPTkZJR19TTkRfU09DX0RBNzIxMz1tCiBD
T05GSUdfU05EX1NPQ19EQTcyMTk9bQogQ09ORklHX1NORF9TT0NfRE1JQz1tCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>