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

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

    <bug>
          <bug_id>29477</bug_id>
          
          <creation_ts>2013-10-15 00:51:26 +0400</creation_ts>
          <short_desc>Падает при приёме удалённого Untitled задания</short_desc>
          <delta_ts>2013-10-15 13:36:59 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>cups</component>
          <version>unstable</version>
          <rep_platform>all</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></keywords>
          <priority>P3</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fr. Br. George">george</reporter>
          <assigned_to name="Anton Farygin">rider</assigned_to>
          <cc>george</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143189</commentid>
    <comment_count>0</comment_count>
      <attachid>5969</attachid>
    <who name="Fr. Br. George">george</who>
    <bug_when>2013-10-15 00:51:26 +0400</bug_when>
    <thetext>Created attachment 5969
Слегка поправленный патч из FC

Патч имени редхата cups-1.6.1-rh-lspp.patch как минимум в одном месте приземлился в cups 1.6.2 очень неудачно (между &quot;if ((attr = ... ) == NULL)&quot; и &quot;else if ((attr-&gt;value_tag != ...)&quot;. Соответственно, else if переехал к другому if-у (который в патче) и не может не вызывать SEGFAULT, когда attr==NULL.

Лечится прикладыванием вместо него актуального для 1.6.2 патча из FC.

И, чтоб два раза не вставать, надо бы перегрузить при сборке STRIPPROG=touch -- это поможет с debuginfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143199</commentid>
    <comment_count>1</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2013-10-15 13:36:59 +0400</bug_when>
    <thetext>cups-1.6.2-alt3.1 -&gt; sisyphus:

* Mon Oct 14 2013 Fr. Br. George &lt;george@altlinux&gt; 1.6.2-alt3.1
- Freshen LSPP patch (closes: #29477)
- Rebuild with debuginfo</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5969</attachid>
            <date>2013-10-15 00:51:26 +0400</date>
            <delta_ts>2013-10-15 00:51:26 +0400</delta_ts>
            <desc>Слегка поправленный патч из FC</desc>
            <filename>cups-1.6.2-fc-lspp.patch</filename>
            <type>text/plain</type>
            <size>65044</size>
            <attacher name="Fr. Br. George">george</attacher>
            
              <data encoding="base64">ZGlmZiAtdXAgY3Vwcy0xLjYuMi9jb25maWcuaC5pbi5sc3BwIGN1cHMtMS42LjIvY29uZmlnLmgu
aW4KLS0tIGN1cHMtMS42LjIvY29uZmlnLmguaW4ubHNwcAkyMDEzLTAzLTE4IDE5OjAwOjMwLjcw
NDQ0ODE1NyArMDEwMAorKysgY3Vwcy0xLjYuMi9jb25maWcuaC5pbgkyMDEzLTAzLTE4IDE5OjAw
OjMwLjcyNDQ0Nzg3OSArMDEwMApAQCAtNzQ2LDYgKzc0NiwxMyBAQCBzdGF0aWMgX19pbmxpbmUg
aW50IF9jdXBzX2FicyhpbnQgaSkgeyByCiAjICBlbmRpZiAvKiBfX0dOVUNfXyB8fCBfX1NURENf
VkVSU0lPTl9fICovCiAjZW5kaWYgLyogIUhBVkVfQUJTICYmICFhYnMgKi8KIAorLyoKKyAqIEFy
ZSB3ZSB0cnlpbmcgdG8gbWVldCBMU1BQIHJlcXVpcmVtZW50cz8KKyAqLworCisjdW5kZWYgV0lU
SF9MU1BQCisKKwogI2VuZGlmIC8qICFfQ1VQU19DT05GSUdfSF8gKi8KIAogLyoKZGlmZiAtdXAg
Y3Vwcy0xLjYuMi9jb25maWctc2NyaXB0cy9jdXBzLWxzcHAubTQubHNwcCBjdXBzLTEuNi4yL2Nv
bmZpZy1zY3JpcHRzL2N1cHMtbHNwcC5tNAotLS0gY3Vwcy0xLjYuMi9jb25maWctc2NyaXB0cy9j
dXBzLWxzcHAubTQubHNwcAkyMDEzLTAzLTE4IDE5OjAwOjMwLjcyNDQ0Nzg3OSArMDEwMAorKysg
Y3Vwcy0xLjYuMi9jb25maWctc2NyaXB0cy9jdXBzLWxzcHAubTQJMjAxMy0wMy0xOCAxOTowMDoz
MC43MjQ0NDc4NzkgKzAxMDAKQEAgLTAsMCArMSwzNiBAQAorZG5sCitkbmwgICBMU1BQIGNvZGUg
Zm9yIHRoZSBDb21tb24gVU5JWCBQcmludGluZyBTeXN0ZW0gKENVUFMpLgorZG5sCitkbmwgICBD
b3B5cmlnaHQgMjAwNS0yMDA2IGJ5IEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55
LCBMLlAuCitkbmwKK2RubCAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitkbmwgICBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorZG5sICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLgorZG5sCitkbmwgICBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwgYnV0CitkbmwgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCitkbmwgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorZG5sICAgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorZG5sCitkbmwgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorZG5sICAgYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwKK2RubCAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IgQm9z
dG9uLCBNQSAwMjExMC0xMzAxIFVTQQorZG5sCisKK2RubCBBcmUgd2UgdHJ5aW5nIHRvIG1lZXQg
TFNQUCByZXF1aXJlbWVudHMKK0FDX0FSR19FTkFCTEUobHNwcCwgWyAgLS1lbmFibGUtbHNwcCAg
ICAgICAgICAgdHVybiBvbiBhdWRpdGluZyBhbmQgbGFiZWwgc3VwcG9ydCwgZGVmYXVsdD1ub10p
CisKK2lmIHRlc3QgeCIkZW5hYmxlX2xzcHAiICE9IHhubzsgdGhlbgorICAgIGNhc2UgIiR1bmFt
ZSIgaW4KKyAgICAgICAgTGludXgpCisgICAgICAgICAgICBBQ19DSEVDS19MSUIoYXVkaXQsYXVk
aXRfbG9nX3VzZXJfbWVzc2FnZSwgW0xJQkFVRElUPSItbGF1ZGl0IiBBQ19TVUJTVChMSUJBVURJ
VCldKQorICAgICAgICAgICAgQUNfQ0hFQ0tfSEVBREVSKGxpYmF1ZGl0LmgpCisgICAgICAgICAg
ICBBQ19DSEVDS19MSUIoc2VsaW51eCxnZXRwZWVyY29uLCBbTElCU0VMSU5VWD0iLWxzZWxpbnV4
IiBBQ19TVUJTVChMSUJTRUxJTlVYKV0pCisgICAgICAgICAgICBBQ19DSEVDS19IRUFERVIoc2Vs
aW51eC9zZWxpbnV4LmgpCisgICAgICAgICAgICBBQ19ERUZJTkUoV0lUSF9MU1BQKQorICAgICAg
ICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgICMgQWxsIG90aGVycworICAgICAgICAg
ICAgOzsKKyAgICBlc2FjCitmaQpkaWZmIC11cCBjdXBzLTEuNi4yL2NvbmZpZ3VyZS5pbi5sc3Bw
IGN1cHMtMS42LjIvY29uZmlndXJlLmluCi0tLSBjdXBzLTEuNi4yL2NvbmZpZ3VyZS5pbi5sc3Bw
CTIwMTMtMDMtMTggMTk6MDA6MzAuNzA1NDQ4MTQzICswMTAwCisrKyBjdXBzLTEuNi4yL2NvbmZp
Z3VyZS5pbgkyMDEzLTAzLTE4IDE5OjAwOjMwLjcyNDQ0Nzg3OSArMDEwMApAQCAtMzcsNiArMzcs
OCBAQCBzaW5jbHVkZShjb25maWctc2NyaXB0cy9jdXBzLXN5c3RlbWQubTQpCiBzaW5jbHVkZShj
b25maWctc2NyaXB0cy9jdXBzLWRlZmF1bHRzLm00KQogc2luY2x1ZGUoY29uZmlnLXNjcmlwdHMv
Y3Vwcy1zY3JpcHRpbmcubTQpCiAKK3NpbmNsdWRlKGNvbmZpZy1zY3JpcHRzL2N1cHMtbHNwcC5t
NCkKKwogSU5TVEFMTF9MQU5HVUFHRVM9IiIKIFVOSU5TVEFMTF9MQU5HVUFHRVM9IiIKIExBTkdG
SUxFUz0iIgpkaWZmIC11cCBjdXBzLTEuNi4yL2ZpbHRlci9jb21tb24uYy5sc3BwIGN1cHMtMS42
LjIvZmlsdGVyL2NvbW1vbi5jCi0tLSBjdXBzLTEuNi4yL2ZpbHRlci9jb21tb24uYy5sc3BwCTIw
MTEtMDUtMjAgMDU6NDk6NDkuMDAwMDAwMDAwICswMjAwCisrKyBjdXBzLTEuNi4yL2ZpbHRlci9j
b21tb24uYwkyMDEzLTAzLTE4IDE5OjAwOjMwLjcyNTQ0Nzg2NSArMDEwMApAQCAtMzAsNiArMzAs
MTIgQEAKICAqIEluY2x1ZGUgbmVjZXNzYXJ5IGhlYWRlcnMuLi4KICAqLwogCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaWZkZWYgV0lUSF9MU1BQCisjZGVmaW5lIF9HTlVfU09VUkNFCisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjZW5kaWYgLyogV0lUSF9MU1BQICovCisKICNpbmNsdWRlICJjb21tb24u
aCIKICNpbmNsdWRlIDxsb2NhbGUuaD4KIApAQCAtMzEyLDYgKzMxOCwxOCBAQCBXcml0ZUxhYmVs
UHJvbG9nKGNvbnN0IGNoYXIgKmxhYmVsLAkvKiBJCiB7CiAgIGNvbnN0IGNoYXIJKmNsYXNzaWZp
Y2F0aW9uOwkvKiBDTEFTU0lGSUNBVElPTiBlbnZpcm9ubWVudCB2YXJpYWJsZSAqLwogICBjb25z
dCBjaGFyCSpwdHI7CQkJLyogVGVtcG9yYXJ5IHN0cmluZyBwb2ludGVyICovCisjaWZkZWYgV0lU
SF9MU1BQCisgIGludCAgICAgICAgICAgaSwgICAgICAgICAgICAgICAgICAgICAgLyogY291bnRl
ciAqLworICAgICAgICAgICAgICAgIG4sICAgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50ZXIg
Ki8KKyAgICAgICAgICAgICAgICBsaW5lcywgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2Yg
bGluZXMgbmVlZGVkICovCisgICAgICAgICAgICAgICAgbGluZV9sZW4sICAgICAgICAgICAgICAg
LyogaW5kZXggaW50byB0bXBfbGFiZWwgKi8KKyAgICAgICAgICAgICAgICBsYWJlbF9sZW4sICAg
ICAgICAgICAgICAvKiBsZW5ndGggb2YgdGhlIGxhYmVsIGluIGNoYXJhY3RlcnMgKi8KKyAgICAg
ICAgICAgICAgICBsYWJlbF9pbmRleCwgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHRoZSBsYWJl
bCAqLworICAgICAgICAgICAgICAgIGxvbmdlc3QsICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBv
ZiB0aGUgbG9uZ2VzdCBsaW5lICovCisgICAgICAgICAgICAgICAgbG9uZ2VzdF9saW5lLCAgICAg
ICAgICAgLyogaW5kZXggdG8gdGhlIGxvbmdlc3QgbGluZSAqLworICAgICAgICAgICAgICAgIG1h
eF93aWR0aDsgICAgICAgICAgICAgIC8qIG1heGltdW0gd2lkdGggaW4gY2hhcmFjdGVycyAqLwor
ICBjaGFyICAgICAgICAgICoqd3JhcHBlZF9sYWJlbDsgICAgICAgIC8qIGxhYmVsIHdpdGggbGlu
ZSBicmVha3MgKi8KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KIAogCiAgLyoKQEAgLTMzNCw2ICsz
NTIsMTI0IEBAIFdyaXRlTGFiZWxQcm9sb2coY29uc3QgY2hhciAqbGFiZWwsCS8qIEkKICAgICBy
ZXR1cm47CiAgIH0KIAorI2lmZGVmIFdJVEhfTFNQUAorICBpZiAoc3RybmNtcChjbGFzc2lmaWNh
dGlvbiwgIkxTUFA6IiwgNSkgPT0gMCAmJiBsYWJlbCA9PSBOVUxMKQorICB7CisgICAvKgorICAg
ICogQmFzZWQgb24gdGhlIDEycHQgZml4ZWQgd2lkdGggZm9udCBiZWxvdyBkZXRlcm1pbmUgdGhl
IG1heF93aWR0aAorICAgICovCisgICAgbWF4X3dpZHRoID0gd2lkdGggLyA4OworICAgIGxvbmdl
c3RfbGluZSA9IDA7CisgICAgbG9uZ2VzdCA9IDA7CisgICAgY2xhc3NpZmljYXRpb24gKz0gNTsg
Ly8gU2tpcCB0aGUgIkxTUFA6IgorICAgIGxhYmVsX2xlbiA9IHN0cmxlbihjbGFzc2lmaWNhdGlv
bik7CisKKyAgICBpZiAobGFiZWxfbGVuID4gbWF4X3dpZHRoKQorICAgIHsKKyAgICAgIGxpbmVz
ID0gMSArIChpbnQpKGxhYmVsX2xlbiAvIG1heF93aWR0aCk7CisgICAgICBsaW5lX2xlbiA9IChp
bnQpKGxhYmVsX2xlbiAvIGxpbmVzKTsKKyAgICAgIHdyYXBwZWRfbGFiZWwgPSBtYWxsb2Moc2l6
ZW9mKCp3cmFwcGVkX2xhYmVsKSAqIGxpbmVzKTsKKyAgICAgIGxhYmVsX2luZGV4ID0gaSA9IG4g
PSAwOworICAgICAgd2hpbGUgKGNsYXNzaWZpY2F0aW9uW2xhYmVsX2luZGV4XSkKKyAgICAgIHsK
KyAgICAgICAgaWYgKChsYWJlbF9pbmRleCArIGxpbmVfbGVuKSA+IGxhYmVsX2xlbikKKyAgICAg
ICAgICBicmVhazsKKyAgICAgICAgc3dpdGNoIChjbGFzc2lmaWNhdGlvbltsYWJlbF9pbmRleCAr
IGxpbmVfbGVuICsgaV0pCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAg
ICBjYXNlICcsJzoKKyAgICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgIGkrKzsKKyAgICAg
ICAgICAgIHdyYXBwZWRfbGFiZWxbbisrXSA9IHN0cm5kdXAoJmNsYXNzaWZpY2F0aW9uW2xhYmVs
X2luZGV4XSwgKGxpbmVfbGVuICsgaSkpOworICAgICAgICAgICAgbGFiZWxfaW5kZXggKz0gbGlu
ZV9sZW4gKyBpOworICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKChpICsgbGluZV9sZW4pID09IG1heF93aWR0aCkKKyAgICAgICAg
eworICAgICAgICAgIHdyYXBwZWRfbGFiZWxbbisrXSA9IHN0cm5kdXAoJihjbGFzc2lmaWNhdGlv
bltsYWJlbF9pbmRleF0pLCAobGluZV9sZW4gKyBpKSk7CisgICAgICAgICAgbGFiZWxfaW5kZXgg
PSBsYWJlbF9pbmRleCArIGxpbmVfbGVuICsgaTsKKyAgICAgICAgICBpID0gMDsKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgd3JhcHBlZF9sYWJlbFtuXSA9IHN0cm5kdXAoJmNsYXNzaWZpY2F0
aW9uW2xhYmVsX2luZGV4XSwgbGFiZWxfbGVuIC0gbGFiZWxfaW5kZXgpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgbGluZXMgPSAxOworICAgICAgd3JhcHBlZF9sYWJlbCA9IG1hbGxv
YyhzaXplb2YoKndyYXBwZWRfbGFiZWwpKTsKKyAgICAgIHdyYXBwZWRfbGFiZWxbMF0gPSAoY2hh
ciopY2xhc3NpZmljYXRpb247CisgICAgfQorCisgICAgZm9yIChuID0gMDsgbiA8IGxpbmVzOyBu
KysgKQorICAgIHsKKyAgICAgIHByaW50ZigidXNlcmRpY3QvRVNQcCVjKCIsICgnYScgKyBuKSk7
CisgICAgICBmb3IgKHB0ciA9IHdyYXBwZWRfbGFiZWxbbl0sIGkgPSAwOyAqcHRyOyBwdHIgKyss
IGkrKykKKyAgICAgICAgaWYgKCpwdHIgPCAzMiB8fCAqcHRyID4gMTI2KQorICAgICAgICAgIHBy
aW50ZigiXFwlMDNvIiwgKnB0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
IGlmICgqcHRyID09ICcoJyB8fCAqcHRyID09ICcpJyB8fCAqcHRyID09ICdcXCcpCisgICAgICAg
ICAgICBwdXRjaGFyKCdcXCcpOworCisgICAgICAgICAgcHJpbnRmKCIlYyIsICpwdHIpOworICAg
ICAgICB9CisgICAgICBpZiAoaSA+IGxvbmdlc3QpCisgICAgICB7CisgICAgICAgIGxvbmdlc3Qg
PSBpOworICAgICAgICBsb25nZXN0X2xpbmUgPSBuOworICAgICAgfQorICAgICAgcHJpbnRmKCIp
cHV0XG4iKTsKKyAgICB9CisKKyAgIC8qCisgICAgKiBGb3IgTFNQUCB1c2UgYSBmaXhlZCB3aWR0
aCBmb250IHNvIHRoYXQgbGluZSB3cmFwcGluZyBjYW4gYmUgY2FsY3VsYXRlZAorICAgICovCisK
KyAgICBwdXRzKCJ1c2VyZGljdC9FU1BsZiAvTmltYnVzLU1vbm8gZmluZGZvbnQgMTIgc2NhbGVm
b250IHB1dCIpOworCisgICAvKgorICAgICogRmluYWxseSwgdGhlIHByb2NlZHVyZSB0byB3cml0
ZSB0aGUgbGFiZWxzIG9uIHRoZSBwYWdlLi4uCisgICAgKi8KKworICAgIHByaW50ZigidXNlcmRp
Y3QvRVNQd2x7XG4iCisgICAgICAgICAgICIgIEVTUGxmIHNldGZvbnRcbiIpOworICAgIHByaW50
ZigiICBFU1BwJWMgc3RyaW5nd2lkdGggcG9wIGR1cCAxMiBhZGQgZXhjaCAtMC41IG11bCAlLjBm
IGFkZFxuICIsCisgICAgICAgICAgICdhJyArIGxvbmdlc3RfbGluZSwgd2lkdGggKiAwLjVmKTsK
KyAgICBmb3IgKG4gPSAxOyBuIDwgbGluZXM7IG4rKykKKyAgICAgIHByaW50ZigiIGR1cCIpOwor
ICAgIHByaW50ZigiXG4gIDEgc2V0Z3JheVxuIik7CisgICAgcHJpbnRmKCIgIGR1cCA2IHN1YiAl
LjBmICVkIGluZGV4ICUuMGYgRVNQcmZcbiIsCisgICAgICAgICAgIChib3R0b20gLSAyLjApLCAo
MiArIGxpbmVzKSwgNi4wICsgKDE2LjAgKiBsaW5lcykpOworICAgIHByaW50ZigiICBkdXAgNiBz
dWIgJS4wZiAlZCBpbmRleCAlLjBmIEVTUHJmXG4iLAorICAgICAgICAgICAodG9wIC0gNi4wIC0g
KDE2LjAgKiBsaW5lcykpLCAoMiArIGxpbmVzKSwgNC4wICsgKDE2LjAgKiBsaW5lcykpOworICAg
IHByaW50ZigiICAwIHNldGdyYXlcbiIpOworICAgIHByaW50ZigiICBkdXAgNiBzdWIgJS4wZiAl
ZCBpbmRleCAlLjBmIEVTUHJzXG4iLAorICAgICAgICAgICAoYm90dG9tIC0gMi4wKSwgKDIgKyBs
aW5lcyksIDYuMCArICgxNi4wICogbGluZXMpKTsKKyAgICBwcmludGYoIiAgZHVwIDYgc3ViICUu
MGYgJWQgaW5kZXggJS4wZiBFU1Byc1xuIiwKKyAgICAgICAgICAgKHRvcCAtIDYuMCAtICgxNi4w
ICogbGluZXMpKSwgKDIgKyBsaW5lcyksIDQuMCArICgxNi4wICogbGluZXMpKTsKKyAgICBmb3Ig
KG4gPSAwOyBuIDwgbGluZXM7IG4gKyspCisgICAgeworICAgICAgcHJpbnRmKCIgIGR1cCAlLjBm
IG1vdmV0byBFU1BwJWMgc2hvd1xuIiwKKyAgICAgICAgICAgICBib3R0b20gKyA2LjAgKyAoKGxp
bmVzIC0gKG4rMSkpICogMTYuMCksICdhJyArIG4pOworICAgICAgcHJpbnRmKCIgICUuMGYgbW92
ZXRvIEVTUHAlYyBzaG93XG4iLCB0b3AgKyAyLjAgLSAoKG4gKyAxKSAqIDE2LjApLCAnYScgKyBu
KTsKKyAgICB9CisgICAgcHJpbnRmKCIgIHBvcFxuIgorICAgICAgICAgICAifWJpbmQgcHV0XG4i
KTsKKworICAgLyoKKyAgICAqIERvIHNvbWUgY2xlYW4gdXAgYXQgdGhlIGVuZCBvZiB0aGUgTFNQ
UCBzcGVjaWFsIGNhc2UKKyAgICAqLworICAgIGZyZWUod3JhcHBlZF9sYWJlbCk7CisKKyAgfQor
ICBlbHNlCisgIHsKKyNlbmRpZiAvKiAhV0lUSF9MU1BQICovCisgIAogIC8qCiAgICogU2V0IHRo
ZSBjbGFzc2lmaWNhdGlvbiArIHBhZ2UgbGFiZWwgc3RyaW5nLi4uCiAgICovCkBAIC00MTQsNyAr
NTUwLDEwIEBAIFdyaXRlTGFiZWxQcm9sb2coY29uc3QgY2hhciAqbGFiZWwsCS8qIEkKICAgcHJp
bnRmKCIgICUuMGYgbW92ZXRvIEVTUHBsIHNob3dcbiIsIHRvcCAtIDE0LjApOwogICBwdXRzKCJw
b3AiKTsKICAgcHV0cygifWJpbmQgcHV0Iik7CisgIH0KKyNpZmRlZiBXSVRIX0xTUFAKIH0KKyNl
bmRpZiAvKiBXSVRIX0xTUFAgKi8KIAogCiAvKgpkaWZmIC11cCBjdXBzLTEuNi4yL2ZpbHRlci9w
c3RvcHMuYy5sc3BwIGN1cHMtMS42LjIvZmlsdGVyL3BzdG9wcy5jCi0tLSBjdXBzLTEuNi4yL2Zp
bHRlci9wc3RvcHMuYy5sc3BwCTIwMTItMDQtMjMgMjE6MTk6MTkuMDAwMDAwMDAwICswMjAwCisr
KyBjdXBzLTEuNi4yL2ZpbHRlci9wc3RvcHMuYwkyMDEzLTAzLTE4IDE5OjAwOjMwLjcyNjQ0Nzg1
MiArMDEwMApAQCAtMzIwMiw2ICszMjAyLDE4IEBAIHdyaXRlX2xhYmVsX3Byb2xvZyhwc3RvcHNf
ZG9jX3QgKmRvYywJLyoKIHsKICAgY29uc3QgY2hhcgkqY2xhc3NpZmljYXRpb247CS8qIENMQVNT
SUZJQ0FUSU9OIGVudmlyb25tZW50IHZhcmlhYmxlICovCiAgIGNvbnN0IGNoYXIJKnB0cjsJCQkv
KiBUZW1wb3Jhcnkgc3RyaW5nIHBvaW50ZXIgKi8KKyNpZmRlZiBXSVRIX0xTUFAKKyAgaW50ICAg
ICAgICAgICBpLCAgICAgICAgICAgICAgICAgICAgICAvKiBjb3VudGVyICovCisgICAgICAgICAg
ICAgICAgbiwgICAgICAgICAgICAgICAgICAgICAgLyogY291bnRlciAqLworICAgICAgICAgICAg
ICAgIGxpbmVzLCAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsaW5lcyBuZWVkZWQgKi8K
KyAgICAgICAgICAgICAgICBsaW5lX2xlbiwgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHRt
cF9sYWJlbCAqLworICAgICAgICAgICAgICAgIGxhYmVsX2xlbiwgICAgICAgICAgICAgIC8qIGxl
bmd0aCBvZiB0aGUgbGFiZWwgaW4gY2hhcmFjdGVycyAqLworICAgICAgICAgICAgICAgIGxhYmVs
X2luZGV4LCAgICAgICAgICAgIC8qIGluZGV4IGludG8gdGhlIGxhYmVsICovCisgICAgICAgICAg
ICAgICAgbG9uZ2VzdCwgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGxp
bmUgKi8KKyAgICAgICAgICAgICAgICBsb25nZXN0X2xpbmUsICAgICAgICAgICAvKiBpbmRleCB0
byB0aGUgbG9uZ2VzdCBsaW5lICovCisgICAgICAgICAgICAgICAgbWF4X3dpZHRoOyAgICAgICAg
ICAgICAgLyogbWF4aW11bSB3aWR0aCBpbiBjaGFyYWN0ZXJzICovCisgIGNoYXIgICAgICAgICAg
Kip3cmFwcGVkX2xhYmVsOyAgICAgICAgLyogbGFiZWwgd2l0aCBsaW5lIGJyZWFrcyAqLworI2Vu
ZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAKICAvKgpAQCAtMzIyNCw2ICszMjM2LDEyNCBAQCB3cml0
ZV9sYWJlbF9wcm9sb2cocHN0b3BzX2RvY190ICpkb2MsCS8qCiAgICAgcmV0dXJuOwogICB9CiAK
KyNpZmRlZiBXSVRIX0xTUFAKKyAgaWYgKHN0cm5jbXAoY2xhc3NpZmljYXRpb24sICJMU1BQOiIs
IDUpID09IDAgJiYgbGFiZWwgPT0gTlVMTCkKKyAgeworICAgLyoKKyAgICAqIEJhc2VkIG9uIHRo
ZSAxMnB0IGZpeGVkIHdpZHRoIGZvbnQgYmVsb3cgZGV0ZXJtaW5lIHRoZSBtYXhfd2lkdGgKKyAg
ICAqLworICAgIG1heF93aWR0aCA9IHdpZHRoIC8gODsKKyAgICBsb25nZXN0X2xpbmUgPSAwOwor
ICAgIGxvbmdlc3QgPSAwOworICAgIGNsYXNzaWZpY2F0aW9uICs9IDU7IC8vIFNraXAgdGhlICJM
U1BQOiIKKyAgICBsYWJlbF9sZW4gPSBzdHJsZW4oY2xhc3NpZmljYXRpb24pOworCisgICAgaWYg
KGxhYmVsX2xlbiA+IG1heF93aWR0aCkKKyAgICB7CisgICAgICBsaW5lcyA9IDEgKyAoaW50KShs
YWJlbF9sZW4gLyBtYXhfd2lkdGgpOworICAgICAgbGluZV9sZW4gPSAoaW50KShsYWJlbF9sZW4g
LyBsaW5lcyk7CisgICAgICB3cmFwcGVkX2xhYmVsID0gbWFsbG9jKHNpemVvZigqd3JhcHBlZF9s
YWJlbCkgKiBsaW5lcyk7CisgICAgICBsYWJlbF9pbmRleCA9IGkgPSBuID0gMDsKKyAgICAgIHdo
aWxlIChjbGFzc2lmaWNhdGlvbltsYWJlbF9pbmRleF0pCisgICAgICB7CisgICAgICAgIGlmICgo
bGFiZWxfaW5kZXggKyBsaW5lX2xlbikgPiBsYWJlbF9sZW4pCisgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHN3aXRjaCAoY2xhc3NpZmljYXRpb25bbGFiZWxfaW5kZXggKyBsaW5lX2xlbiArIGld
KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSAnOic6CisgICAgICAgICAgY2FzZSAnLCc6Cisg
ICAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB3cmFwcGVk
X2xhYmVsW24rK10gPSBzdHJuZHVwKCZjbGFzc2lmaWNhdGlvbltsYWJlbF9pbmRleF0sIChsaW5l
X2xlbiArIGkpKTsKKyAgICAgICAgICAgIGxhYmVsX2luZGV4ICs9IGxpbmVfbGVuICsgaTsKKyAg
ICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGlmICgoaSArIGxpbmVfbGVuKSA9PSBtYXhfd2lkdGgpCisgICAgICAgIHsKKyAgICAgICAgICB3
cmFwcGVkX2xhYmVsW24rK10gPSBzdHJuZHVwKCYoY2xhc3NpZmljYXRpb25bbGFiZWxfaW5kZXhd
KSwgKGxpbmVfbGVuICsgaSkpOworICAgICAgICAgIGxhYmVsX2luZGV4ID0gbGFiZWxfaW5kZXgg
KyBsaW5lX2xlbiArIGk7CisgICAgICAgICAgaSA9IDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIHdyYXBwZWRfbGFiZWxbbl0gPSBzdHJuZHVwKCZjbGFzc2lmaWNhdGlvbltsYWJlbF9pbmRl
eF0sIGxhYmVsX2xlbiAtIGxhYmVsX2luZGV4KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgIGxpbmVzID0gMTsKKyAgICAgIHdyYXBwZWRfbGFiZWwgPSBtYWxsb2Moc2l6ZW9mKCp3cmFw
cGVkX2xhYmVsKSk7CisgICAgICB3cmFwcGVkX2xhYmVsWzBdID0gKGNoYXIqKWNsYXNzaWZpY2F0
aW9uOworICAgIH0KKworICAgIGZvciAobiA9IDA7IG4gPCBsaW5lczsgbisrICkKKyAgICB7Cisg
ICAgICBwcmludGYoInVzZXJkaWN0L0VTUHAlYygiLCAoJ2EnICsgbikpOworICAgICAgZm9yIChw
dHIgPSB3cmFwcGVkX2xhYmVsW25dLCBpID0gMDsgKnB0cjsgcHRyICsrLCBpKyspCisgICAgICAg
IGlmICgqcHRyIDwgMzIgfHwgKnB0ciA+IDEyNikKKyAgICAgICAgICBwcmludGYoIlxcJTAzbyIs
ICpwdHIpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoKnB0ciA9PSAn
KCcgfHwgKnB0ciA9PSAnKScgfHwgKnB0ciA9PSAnXFwnKQorICAgICAgICAgICAgcHV0Y2hhcign
XFwnKTsKKworICAgICAgICAgIHByaW50ZigiJWMiLCAqcHRyKTsKKyAgICAgICAgfQorICAgICAg
aWYgKGkgPiBsb25nZXN0KQorICAgICAgeworICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAg
bG9uZ2VzdF9saW5lID0gbjsKKyAgICAgIH0KKyAgICAgIHByaW50ZigiKXB1dFxuIik7CisgICAg
fQorCisgICAvKgorICAgICogRm9yIExTUFAgdXNlIGEgZml4ZWQgd2lkdGggZm9udCBzbyB0aGF0
IGxpbmUgd3JhcHBpbmcgY2FuIGJlIGNhbGN1bGF0ZWQKKyAgICAqLworCisgICAgcHV0cygidXNl
cmRpY3QvRVNQbGYgL05pbWJ1cy1Nb25vIGZpbmRmb250IDEyIHNjYWxlZm9udCBwdXQiKTsKKwor
ICAgLyoKKyAgICAqIEZpbmFsbHksIHRoZSBwcm9jZWR1cmUgdG8gd3JpdGUgdGhlIGxhYmVscyBv
biB0aGUgcGFnZS4uLgorICAgICovCisKKyAgICBwcmludGYoInVzZXJkaWN0L0VTUHdse1xuIgor
ICAgICAgICAgICAiICBFU1BsZiBzZXRmb250XG4iKTsKKyAgICBwcmludGYoIiAgRVNQcCVjIHN0
cmluZ3dpZHRoIHBvcCBkdXAgMTIgYWRkIGV4Y2ggLTAuNSBtdWwgJS4wZiBhZGRcbiAiLAorICAg
ICAgICAgICAnYScgKyBsb25nZXN0X2xpbmUsIHdpZHRoICogMC41Zik7CisgICAgZm9yIChuID0g
MTsgbiA8IGxpbmVzOyBuKyspCisgICAgICBwcmludGYoIiBkdXAiKTsKKyAgICBwcmludGYoIlxu
ICAxIHNldGdyYXlcbiIpOworICAgIHByaW50ZigiICBkdXAgNiBzdWIgJS4wZiAlZCBpbmRleCAl
LjBmIEVTUHJmXG4iLAorICAgICAgICAgICAoYm90dG9tIC0gMi4wKSwgKDIgKyBsaW5lcyksIDYu
MCArICgxNi4wICogbGluZXMpKTsKKyAgICBwcmludGYoIiAgZHVwIDYgc3ViICUuMGYgJWQgaW5k
ZXggJS4wZiBFU1ByZlxuIiwKKyAgICAgICAgICAgKHRvcCAtIDYuMCAtICgxNi4wICogbGluZXMp
KSwgKDIgKyBsaW5lcyksIDQuMCArICgxNi4wICogbGluZXMpKTsKKyAgICBwcmludGYoIiAgMCBz
ZXRncmF5XG4iKTsKKyAgICBwcmludGYoIiAgZHVwIDYgc3ViICUuMGYgJWQgaW5kZXggJS4wZiBF
U1Byc1xuIiwKKyAgICAgICAgICAgKGJvdHRvbSAtIDIuMCksICgyICsgbGluZXMpLCA2LjAgKyAo
MTYuMCAqIGxpbmVzKSk7CisgICAgcHJpbnRmKCIgIGR1cCA2IHN1YiAlLjBmICVkIGluZGV4ICUu
MGYgRVNQcnNcbiIsCisgICAgICAgICAgICh0b3AgLSA2LjAgLSAoMTYuMCAqIGxpbmVzKSksICgy
ICsgbGluZXMpLCA0LjAgKyAoMTYuMCAqIGxpbmVzKSk7CisgICAgZm9yIChuID0gMDsgbiA8IGxp
bmVzOyBuICsrKQorICAgIHsKKyAgICAgIHByaW50ZigiICBkdXAgJS4wZiBtb3ZldG8gRVNQcCVj
IHNob3dcbiIsCisgICAgICAgICAgICAgYm90dG9tICsgNi4wICsgKChsaW5lcyAtIChuKzEpKSAq
IDE2LjApLCAnYScgKyBuKTsKKyAgICAgIHByaW50ZigiICAlLjBmIG1vdmV0byBFU1BwJWMgc2hv
d1xuIiwgdG9wICsgMi4wIC0gKChuICsgMSkgKiAxNi4wKSwgJ2EnICsgbik7CisgICAgfQorICAg
IHByaW50ZigiICBwb3BcbiIKKyAgICAgICAgICAgIn1iaW5kIHB1dFxuIik7CisKKyAgIC8qCisg
ICAgKiBEbyBzb21lIGNsZWFuIHVwIGF0IHRoZSBlbmQgb2YgdGhlIExTUFAgc3BlY2lhbCBjYXNl
CisgICAgKi8KKyAgICBmcmVlKHdyYXBwZWRfbGFiZWwpOworCisgIH0KKyAgZWxzZQorICB7Cisj
ZW5kaWYgLyogIVdJVEhfTFNQUCAqLworCiAgLyoKICAgKiBTZXQgdGhlIGNsYXNzaWZpY2F0aW9u
ICsgcGFnZSBsYWJlbCBzdHJpbmcuLi4KICAgKi8KQEAgLTMzMDIsNyArMzQzMiwxMCBAQCB3cml0
ZV9sYWJlbF9wcm9sb2cocHN0b3BzX2RvY190ICpkb2MsCS8qCiAgIGRvY19wcmludGYoZG9jLCAi
ICAlLjBmIG1vdmV0byBFU1BwbCBzaG93XG4iLCB0b3AgLSAxNC4wKTsKICAgZG9jX3B1dHMoZG9j
LCAicG9wXG4iKTsKICAgZG9jX3B1dHMoZG9jLCAifWJpbmQgcHV0XG4iKTsKKyAgfQorI2lmZGVm
IFdJVEhfTFNQUAogfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAKIC8qCmRpZmYgLXVwIGN1
cHMtMS42LjIvTWFrZWRlZnMuaW4ubHNwcCBjdXBzLTEuNi4yL01ha2VkZWZzLmluCi0tLSBjdXBz
LTEuNi4yL01ha2VkZWZzLmluLmxzcHAJMjAxMy0wMy0xOCAxOTowMDozMC43MDY0NDgxMjkgKzAx
MDAKKysrIGN1cHMtMS42LjIvTWFrZWRlZnMuaW4JMjAxMy0wMy0xOCAxOTowMDozMC43MjY0NDc4
NTIgKzAxMDAKQEAgLTE0Niw3ICsxNDYsNyBAQCBMREZMQUdTCQk9CS1MLi4vY2dpLWJpbiAtTC4u
L2N1cHMgLUwuLi9mCiAJCQlATERGTEFHU0AgQFJFTFJPRkxBR1NAIEBQSUVGTEFHU0AgJChPUFRJ
TSkKIExJTktDVVBTCT0JQExJTktDVVBTQCAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NE
TElCUykgJChMSUJaKQogTElOS0NVUFNJTUFHRQk9CUBMSU5LQ1VQU0lNQUdFQAotTElCUwkJPQkk
KExJTktDVVBTKSAkKENPTU1PTkxJQlMpCitMSUJTCQk9CSQoTElOS0NVUFMpICQoQ09NTU9OTElC
UykgQExJQkFVRElUQCBATElCU0VMSU5VWEAKIE9QVElNCQk9CUBPUFRJTUAKIE9QVElPTlMJCT0K
IFBBTUxJQlMJCT0JQFBBTUxJQlNACmRpZmYgLXVwIGN1cHMtMS42LjIvc2NoZWR1bGVyL2NsaWVu
dC5jLmxzcHAgY3Vwcy0xLjYuMi9zY2hlZHVsZXIvY2xpZW50LmMKLS0tIGN1cHMtMS42LjIvc2No
ZWR1bGVyL2NsaWVudC5jLmxzcHAJMjAxMy0wMS0yMSAxNjoyOTo0Ny4wMDAwMDAwMDAgKzAxMDAK
KysrIGN1cHMtMS42LjIvc2NoZWR1bGVyL2NsaWVudC5jCTIwMTMtMDMtMTggMTk6MDA6MzAuNzI3
NDQ3ODM4ICswMTAwCkBAIC00MSw2ICs0MSw3IEBACiAgKiAgIHZhbGlkX2hvc3QoKQkgICAgLSBJ
cyB0aGUgSG9zdDogZmllbGQgdmFsaWQ/CiAgKiAgIHdyaXRlX2ZpbGUoKQkgICAgLSBTZW5kIGEg
ZmlsZSB2aWEgSFRUUC4KICAqICAgd3JpdGVfcGlwZSgpCSAgICAtIEZsYWcgdGhhdCBkYXRhIGlz
IGF2YWlsYWJsZSBvbiB0aGUgQ0dJIHBpcGUuCisgKiAgIGNsaWVudF9waWRfdG9fYXVpZCgpICAg
LSBHZXQgdGhlIGF1ZGl0IGxvZ2luIHVpZCBvZiB0aGUgY2xpZW50LgogICovCiAKIC8qCkBAIC00
OSwxMCArNTAsMTYgQEAKIAogI2luY2x1ZGUgImN1cHNkLmgiCiAKKyNkZWZpbmUgX0dOVV9TT1VS
Q0UKICNpZmRlZiBIQVZFX1RDUERfSAogIyAgaW5jbHVkZSA8dGNwZC5oPgogI2VuZGlmIC8qIEhB
VkVfVENQRF9IICovCiAKKyNpZmRlZiBXSVRIX0xTUFAKKyNpbmNsdWRlIDxzZWxpbnV4L3NlbGlu
dXguaD4KKyNpbmNsdWRlIDxzZWxpbnV4L2NvbnRleHQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor
I2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAvKgogICogTG9jYWwgZ2xvYmFscy4uLgpAQCAtMzcx
LDYgKzM3OCw1NyBAQCBjdXBzZEFjY2VwdENsaWVudChjdXBzZF9saXN0ZW5lcl90ICpsaXMpCiAg
IH0KICNlbmRpZiAvKiBIQVZFX1RDUERfSCAqLwogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmIChp
c19sc3BwX2NvbmZpZygpKQorICB7CisgICAgc3RydWN0IHVjcmVkIGNyOworICAgIHVuc2lnbmVk
IGludCBjbD1zaXplb2YoY3IpOworCisgICAgaWYgKGdldHNvY2tvcHQoY29uLT5odHRwLmZkLCBT
T0xfU09DS0VULCBTT19QRUVSQ1JFRCwgJmNyLCAmY2wpID09IDApCisgICAgeworICAgICAvKgor
ICAgICAgKiBjbGllbnRfcGlkX3RvX2F1aWQoKSBjYW4gYmUgcmFjZXkKKyAgICAgICogSW4gdGhp
cyBjYXNlIHRoZSBwaWQgaXMgYmFzZWQgb24gYSBzb2NrZXQgY29ubmVjdGVkIHRvIHRoZSBjbGll
bnQKKyAgICAgICovCisgICAgICBpZiAoKGNvbi0+YXVpZCA9IGNsaWVudF9waWRfdG9fYXVpZChj
ci5waWQpKSA9PSAtMSkKKyAgICAgIHsKKyAgICAgICAgY2xvc2UoY29uLT5odHRwLmZkKTsKKyAg
ICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwgImN1cHNkQWNjZXB0Q2xpZW50
OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGRldGVybWluZSBjbGllbnQg
YXVpZCBmb3IgY2xpZW50IHBpZD0lZCIsIGNyLnBpZCk7CisgICAgICAgIGZyZWUoY29uKTsKKyAg
ICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19J
TkZPLCAiY3Vwc2RBY2NlcHRDbGllbnQ6IHBlZXIncyBwaWQ9JWQsIHVpZD0lZCwgZ2lkPSVkLCBh
dWlkPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBjci5waWQsIGNyLnVpZCwgY3IuZ2lkLCBj
b24tPmF1aWQpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgY2xvc2UoY29uLT5odHRw
LmZkKTsKKyAgICAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfRVJST1IsICJjdXBzZEFjY2Vw
dENsaWVudDogZ2V0c29ja29wdCgpIGZhaWxlZCIpOworICAgICAgZnJlZShjb24pOworICAgICAg
cmV0dXJuOyAKKyAgICB9CisKKyAgIC8qCisgICAgKiBnZXQgdGhlIGNvbnRleHQgb2YgdGhlIHBl
ZXIgY29ubmVjdGlvbgorICAgICovCisgICAgaWYgKGdldHBlZXJjb24oY29uLT5odHRwLmZkLCAm
Y29uLT5zY29uKSkKKyAgICB7CisgICAgICBjbG9zZShjb24tPmh0dHAuZmQpOworICAgICAgY3Vw
c2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwgImN1cHNkQWNjZXB0Q2xpZW50OiBnZXRwZWVy
Y29uKCkgZmFpbGVkIik7CisgICAgICBmcmVlKGNvbik7CisgICAgICByZXR1cm47IAorICAgIH0K
KworICAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfSU5GTywgImN1cHNkQWNjZXB0Q2xpZW50
OiBjbGllbnQgY29udGV4dD0lcyIsIGNvbi0+c2Nvbik7CisgIH0KKyAgZWxzZQorICB7CisgICAg
Y3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19ERUJVRywgImN1cHNkQWNjZXB0Q2xpZW50OiBza2lw
cGluZyBnZXRwZWVyY29uKCkiKTsKKyAgICBjdXBzZFNldFN0cmluZygmY29uLT5zY29uLCBVTktO
T1dOX1NMKTsKKyAgfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLworCiAjaWZkZWYgQUZfTE9DQUwK
ICAgaWYgKGNvbi0+aHR0cC5ob3N0YWRkci0+YWRkci5zYV9mYW1pbHkgPT0gQUZfTE9DQUwpCiAg
ICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19ERUJVRywgIltDbGllbnQgJWRdIEFjY2VwdGVk
IGZyb20gJXMgKERvbWFpbikiLApAQCAtNjc4LDYgKzczNiwxMyBAQCBjdXBzZFJlYWRDbGllbnQo
Y3Vwc2RfY2xpZW50X3QgKmNvbikJLyoKICAgbWltZV90eXBlX3QJCSp0eXBlOwkJLyogTUlNRSB0
eXBlIG9mIGZpbGUgKi8KICAgY3Vwc2RfcHJpbnRlcl90CSpwOwkJLyogUHJpbnRlciAqLwogICBz
dGF0aWMgdW5zaWduZWQJcmVxdWVzdF9pZCA9IDA7CS8qIFJlcXVlc3QgSUQgZm9yIHRlbXAgZmls
ZXMgKi8KKyNpZmRlZiBXSVRIX0xTUFAKKyAgc2VjdXJpdHlfY29udGV4dF90CXNwb29sY29uOwkv
KiBjb250ZXh0IG9mIHRoZSBqb2IgZmlsZSAqLworICBjb250ZXh0X3QJCWNsaWNvbjsJCS8qIGNv
bnRleF90IGNvbnRhaW5lciBmb3IgY29uLT5zY29uICovCisgIGNvbnRleHRfdAkJdG1wY29uOwkJ
LyogdGVtcCBjb250ZXh0IHRvIHN3YXAgdGhlIGxldmVsICovCisgIGNoYXIJCQkqY2xpcmFuZ2U7
CS8qIFNFTGludXggc2Vuc2l0aXZpdHkgcmFuZ2UgKi8KKyAgY2hhcgkJCSpjbGljbGVhcmFuY2U7
CS8qIFNFTGludXggbG93IGVuZCBjbGVhcmFuY2UgKi8KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8K
IAogCiAgIHN0YXR1cyA9IEhUVFBfQ09OVElOVUU7CkBAIC0yMTM0LDYgKzIxOTksNjcgQEAgY3Vw
c2RSZWFkQ2xpZW50KGN1cHNkX2NsaWVudF90ICpjb24pCS8qCiAJICAgIGZjaG1vZChjb24tPmZp
bGUsIDA2NDApOwogCSAgICBmY2hvd24oY29uLT5maWxlLCBSdW5Vc2VyLCBHcm91cCk7CiAgICAg
ICAgICAgICBmY250bChjb24tPmZpbGUsIEZfU0VURkQsIGZjbnRsKGNvbi0+ZmlsZSwgRl9HRVRG
RCkgfCBGRF9DTE9FWEVDKTsKKyNpZmRlZiBXSVRIX0xTUFAKKwkgICAgaWYgKHN0cm5jbXAoY29u
LT5zY29uLCBVTktOT1dOX1NMLCBzdHJsZW4oVU5LTk9XTl9TTCkpICE9IDApCisJICAgIHsKKwkg
ICAgICBpZiAoZ2V0ZmlsZWNvbihjb24tPmZpbGVuYW1lLCAmc3Bvb2xjb24pID09IC0xKQorCSAg
ICAgIHsKKwkJY3Vwc2RTZW5kRXJyb3IoY29uLCBIVFRQX1NFUlZFUl9FUlJPUiwgQ1VQU0RfQVVU
SF9OT05FKTsKKwkJcmV0dXJuIChjdXBzZENsb3NlQ2xpZW50KGNvbikpOworCSAgICAgIH0KKwkg
ICAgICBjbGljb24gPSBjb250ZXh0X25ldyhjb24tPnNjb24pOworCSAgICAgIHRtcGNvbiA9IGNv
bnRleHRfbmV3KHNwb29sY29uKTsKKwkgICAgICBmcmVlY29uKHNwb29sY29uKTsKKwkgICAgICBp
ZiAoIWNsaWNvbiB8fCAhdG1wY29uKQorCSAgICAgIHsKKwkJY3Vwc2RTZW5kRXJyb3IoY29uLCBI
VFRQX1NFUlZFUl9FUlJPUiwgQ1VQU0RfQVVUSF9OT05FKTsKKwkJaWYgKGNsaWNvbikKKwkJICBj
b250ZXh0X2ZyZWUoY2xpY29uKTsKKwkJaWYgKHRtcGNvbikKKwkJICBjb250ZXh0X2ZyZWUodG1w
Y29uKTsKKwkJcmV0dXJuIChjdXBzZENsb3NlQ2xpZW50KGNvbikpOworCSAgICAgIH0KKwkgICAg
ICBjbGlyYW5nZSA9IGNvbnRleHRfcmFuZ2VfZ2V0KGNsaWNvbik7CisJICAgICAgaWYgKGNsaXJh
bmdlKQorCSAgICAgIHsKKwkJY2xpcmFuZ2UgPSBzdHJkdXAoY2xpcmFuZ2UpOworCQlpZiAoKGNs
aWNsZWFyYW5jZSA9IHN0cnRvayhjbGlyYW5nZSwgIi0iKSkgIT0gTlVMTCkKKwkJeworCQkgIGlm
IChjb250ZXh0X3JhbmdlX3NldCh0bXBjb24sIGNsaWNsZWFyYW5jZSkgPT0gLTEpCisJCSAgewor
CQkgICAgY3Vwc2RTZW5kRXJyb3IoY29uLCBIVFRQX1NFUlZFUl9FUlJPUiwgQ1VQU0RfQVVUSF9O
T05FKTsKKwkJICAgIGZyZWUoY2xpcmFuZ2UpOworCQkgICAgY29udGV4dF9mcmVlKHRtcGNvbik7
CisJCSAgICBjb250ZXh0X2ZyZWUoY2xpY29uKTsKKwkJICAgIHJldHVybiAoY3Vwc2RDbG9zZUNs
aWVudChjb24pKTsKKwkJICB9CisJCX0KKwkJZWxzZQorCQl7CisJCSAgaWYgKGNvbnRleHRfcmFu
Z2Vfc2V0KHRtcGNvbiwgKGNvbnRleHRfcmFuZ2VfZ2V0KGNsaWNvbikpKSA9PSAtMSkKKwkJICB7
CisJCSAgICBjdXBzZFNlbmRFcnJvcihjb24sIEhUVFBfU0VSVkVSX0VSUk9SLCBDVVBTRF9BVVRI
X05PTkUpOworCQkgICAgZnJlZShjbGlyYW5nZSk7CisJCSAgICBjb250ZXh0X2ZyZWUodG1wY29u
KTsKKwkJICAgIGNvbnRleHRfZnJlZShjbGljb24pOworCQkgICAgcmV0dXJuIChjdXBzZENsb3Nl
Q2xpZW50KGNvbikpOworCQkgIH0KKwkJfQorCQlmcmVlKGNsaXJhbmdlKTsKKwkgICAgICB9CisJ
ICAgICAgaWYgKHNldGZpbGVjb24oY29uLT5maWxlbmFtZSwgY29udGV4dF9zdHIodG1wY29uKSkg
PT0gLTEpCisJICAgICAgeworCQljdXBzZFNlbmRFcnJvcihjb24sIEhUVFBfU0VSVkVSX0VSUk9S
LCBDVVBTRF9BVVRIX05PTkUpOworCQljb250ZXh0X2ZyZWUodG1wY29uKTsKKwkJY29udGV4dF9m
cmVlKGNsaWNvbik7CisJCXJldHVybiAoY3Vwc2RDbG9zZUNsaWVudChjb24pKTsKKwkgICAgICB9
CisJICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19ERUJVRzIsICJjdXBzZFJlYWRDbGll
bnQ6ICVzIHNldCB0byAlcyIsIAorCQkJICAgICAgY29uLT5maWxlbmFtZSwgY29udGV4dF9zdHIo
dG1wY29uKSk7CisJICAgICAgY29udGV4dF9mcmVlKHRtcGNvbik7CisJICAgICAgY29udGV4dF9m
cmVlKGNsaWNvbik7CisJICAgIH0KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KIAkgIH0KIAogCSAg
aWYgKGNvbi0+aHR0cC5zdGF0ZSAhPSBIVFRQX1BPU1RfU0VORCkKQEAgLTM1NzIsNiArMzY5OCw0
OSBAQCBpc19wYXRoX2Fic29sdXRlKGNvbnN0IGNoYXIgKnBhdGgpCS8qIEkKICAgcmV0dXJuICgx
KTsKIH0KIAorI2lmZGVmIFdJVEhfTFNQUAorLyoKKyAqICdjbGllbnRfcGlkX3RvX2F1aWQoKScg
LSBVc2luZyB0aGUgY2xpZW50J3MgcGlkLCByZWFkIC9wcm9jIGFuZCBkZXRlcm1pbmUgdGhlIGxv
Z2ludWlkLgorICovCisKK3VpZF90IGNsaWVudF9waWRfdG9fYXVpZChwaWRfdCBjbGlwaWQpCit7
CisgIHVpZF90IHVpZDsKKyAgaW50IGxlbiwgaW47CisgIGNoYXIgYnVmWzE2XSA9IHswfTsKKyAg
Y2hhciBmbmFtZVszMl0gPSB7MH07CisKKworIC8qCisgICogSG9wZWZ1bGx5IHRoaXMgcGlkIGlz
IHN0aWxsIHRoZSBvbmUgd2UgYXJlIGludGVyZXN0ZWQgaW4uCisgICovCisgIHNucHJpbnRmKGZu
YW1lLCAzMiwgIi9wcm9jLyVkL2xvZ2ludWlkIiwgY2xpcGlkKTsKKyAgaW4gPSBvcGVuKGZuYW1l
LCBPX05PRk9MTE9XfE9fUkRPTkxZKTsKKworICBpZiAoaW4gPCAwKQorICAgIHJldHVybiAtMTsK
KworICBlcnJubyA9IDA7CisKKyAgZG8geworICAgIGxlbiA9IHJlYWQoaW4sIGJ1Ziwgc2l6ZW9m
KGJ1ZikpOworICB9IHdoaWxlIChsZW4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKKworICBjbG9z
ZShpbik7CisKKyAgaWYgKGxlbiA8IDAgfHwgbGVuID49IHNpemVvZihidWYpKQorICAgIHJldHVy
biAtMTsKKworICBlcnJubyA9IDA7CisgIGJ1ZltsZW5dID0gMDsKKyAgdWlkID0gc3RydG9sKGJ1
ZiwgMCwgMTApOworCisgIGlmIChlcnJubyAhPSAwKQorICAgIHJldHVybiAtMTsKKyAgZWxzZQor
ICAgIHJldHVybiB1aWQ7Cit9CisjZW5kaWYgLyogV0lUSF9MU1BQICovCiAKIC8qCiAgKiAncGlw
ZV9jb21tYW5kKCknIC0gUGlwZSB0aGUgb3V0cHV0IG9mIGEgY29tbWFuZCB0byB0aGUgcmVtb3Rl
IGNsaWVudC4KZGlmZiAtdXAgY3Vwcy0xLjYuMi9zY2hlZHVsZXIvY2xpZW50LmgubHNwcCBjdXBz
LTEuNi4yL3NjaGVkdWxlci9jbGllbnQuaAotLS0gY3Vwcy0xLjYuMi9zY2hlZHVsZXIvY2xpZW50
LmgubHNwcAkyMDEzLTAzLTE4IDE5OjAwOjMwLjcwNjQ0ODEyOSArMDEwMAorKysgY3Vwcy0xLjYu
Mi9zY2hlZHVsZXIvY2xpZW50LmgJMjAxMy0wMy0xOCAxOTowMDozMC43Mjc0NDc4MzggKzAxMDAK
QEAgLTE4LDYgKzE4LDEzIEBACiAjZW5kaWYgLyogSEFWRV9BVVRIT1JJWkFUSU9OX0ggKi8KIAog
CisvKiBDb3B5cmlnaHQgKEMpIDIwMDUgVHJ1c3RlZCBDb21wdXRlciBTb2x1dGlvbnMsIEluYy4g
Ki8KKy8qIChjKSBDb3B5cmlnaHQgMjAwNS0yMDA2IEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVu
dCBDb21wYW55LCBMLlAuICovCisKKyNpZmRlZiBXSVRIX0xTUFAKKyNpbmNsdWRlIDxzZWxpbnV4
L3NlbGludXguaD4KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KKwogLyoKICAqIEhUVFAgY2xpZW50
IHN0cnVjdHVyZS4uLgogICovCkBAIC02Myw2ICs3MCwxMCBAQCBzdHJ1Y3QgY3Vwc2RfY2xpZW50
X3MKICNpZmRlZiBIQVZFX0FVVEhPUklaQVRJT05fSAogICBBdXRob3JpemF0aW9uUmVmCWF1dGhy
ZWY7CS8qIEF1dGhvcml6YXRpb24gcmVmICovCiAjZW5kaWYgLyogSEFWRV9BVVRIT1JJWkFUSU9O
X0ggKi8KKyNpZmRlZiBXSVRIX0xTUFAKKyAgc2VjdXJpdHlfY29udGV4dF90CXNjb247CQkvKiBT
ZWN1cml0eSBjb250ZXh0IG9mIGNvbm5lY3Rpb24gKi8KKyAgdWlkX3QJCQlhdWlkOwkJLyogQXVk
aXQgbG9naW51aWQgb2YgdGhlIGNsaWVudCAqLworI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogfTsK
IAogI2RlZmluZSBIVFRQKGNvbikgJigoY29uKS0+aHR0cCkKQEAgLTEzNSw2ICsxNDYsOSBAQCBl
eHRlcm4gdm9pZAljdXBzZFN0YXJ0TGlzdGVuaW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQJY3Vwc2RT
dG9wTGlzdGVuaW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQJY3Vwc2RVcGRhdGVDR0kodm9pZCk7CiBl
eHRlcm4gdm9pZAljdXBzZFdyaXRlQ2xpZW50KGN1cHNkX2NsaWVudF90ICpjb24pOworI2lmZGVm
IFdJVEhfTFNQUAorZXh0ZXJuIHVpZF90CWNsaWVudF9waWRfdG9fYXVpZChwaWRfdCBjbGlwaWQp
OworI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAjaWZkZWYgSEFWRV9TU0wKIGV4dGVybiBpbnQJ
Y3Vwc2RFbmRUTFMoY3Vwc2RfY2xpZW50X3QgKmNvbik7CmRpZmYgLXVwIGN1cHMtMS42LjIvc2No
ZWR1bGVyL2NvbmYuYy5sc3BwIGN1cHMtMS42LjIvc2NoZWR1bGVyL2NvbmYuYwotLS0gY3Vwcy0x
LjYuMi9zY2hlZHVsZXIvY29uZi5jLmxzcHAJMjAxMy0wMy0xOCAxOTowMDozMC42NDM0NDkwMDMg
KzAxMDAKKysrIGN1cHMtMS42LjIvc2NoZWR1bGVyL2NvbmYuYwkyMDEzLTAzLTE4IDE5OjAwOjMw
LjcyODQ0NzgyNCArMDEwMApAQCAtMzQsNiArMzQsNyBAQAogICogICByZWFkX2xvY2F0aW9uKCkJ
ICAgICAgLSBSZWFkIGEgPExvY2F0aW9uIHBhdGg+IGRlZmluaXRpb24uCiAgKiAgIHJlYWRfcG9s
aWN5KCkJICAgICAgLSBSZWFkIGEgPFBvbGljeSBuYW1lPiBkZWZpbml0aW9uLgogICogICBzZXRf
cG9saWN5X2RlZmF1bHRzKCkgICAgLSBTZXQgZGVmYXVsdCBwb2xpY3kgdmFsdWVzIGFzIG5lZWRl
ZC4KKyAqICAgaXNfbHNwcF9jb25maWcoKSAgICAgICAgIC0gSXMgdGhlIHN5c3RlbSBjb25maWd1
cmVkIGZvciBMU1BQCiAgKi8KIAogLyoKQEAgLTU5LDYgKzYwLDkgQEAKICMgIGRlZmluZSBJTkFE
RFJfTk9ORQkweGZmZmZmZmZmCiAjZW5kaWYgLyogIUlOQUREUl9OT05FICovCiAKKyNpZmRlZiBX
SVRIX0xTUFAKKyMgIGluY2x1ZGUgPGxpYmF1ZGl0Lmg+CisjZW5kaWYgLyogV0lUSF9MU1BQICov
CiAKIC8qCiAgKiBDb25maWd1cmF0aW9uIHZhcmlhYmxlIHN0cnVjdHVyZS4uLgpAQCAtMTY0LDYg
KzE2OCwxMCBAQCBzdGF0aWMgY29uc3QgY3Vwc2RfdmFyX3QJdmFyaWFibGVzW10gPQogIyAgaWYg
ZGVmaW5lZChIQVZFX0xJQlNTTCkgfHwgZGVmaW5lZChIQVZFX0dOVVRMUykKICAgeyAiU2VydmVy
S2V5IiwJCSZTZXJ2ZXJLZXksCQlDVVBTRF9WQVJUWVBFX1BBVEhOQU1FIH0sCiAjICBlbmRpZiAv
KiBIQVZFX0xJQlNTTCB8fCBIQVZFX0dOVVRMUyAqLworI2lmZGVmIFdJVEhfTFNQUAorICB7ICJB
dWRpdExvZyIsCQkJJkF1ZGl0TG9nLAkJQ1VQU0RfVkFSVFlQRV9JTlRFR0VSIH0sCisgIHsgIlBl
clBhZ2VMYWJlbHMiLAkJJlBlclBhZ2VMYWJlbHMsCQlDVVBTRF9WQVJUWVBFX0JPT0xFQU4gfSwK
KyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KICNlbmRpZiAvKiBIQVZFX1NTTCAqLwogICB7ICJTZXJ2
ZXJOYW1lIiwJCSZTZXJ2ZXJOYW1lLAkJQ1VQU0RfVkFSVFlQRV9TVFJJTkcgfSwKICAgeyAiU2Vy
dmVyUm9vdCIsCQkmU2VydmVyUm9vdCwJCUNVUFNEX1ZBUlRZUEVfUEFUSE5BTUUgfSwKQEAgLTUz
Nyw2ICs1NDUsOSBAQCBjdXBzZFJlYWRDb25maWd1cmF0aW9uKHZvaWQpCiAgIGNvbnN0IGNoYXIJ
KnRtcGRpcjsJCS8qIFRNUERJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSAqLwogICBzdHJ1Y3Qgc3Rh
dAl0bXBpbmZvOwkJLyogVGVtcG9yYXJ5IGRpcmVjdG9yeSBpbmZvICovCiAgIGN1cHNkX3BvbGlj
eV90ICpwOwkJCS8qIFBvbGljeSAqLworI2lmZGVmIFdJVEhfTFNQUAorICBjaGFyCQkqYXVkaXRf
bWVzc2FnZTsJCS8qIEF1ZGl0IG1lc3NhZ2Ugc3RyaW5nICovCisjZW5kaWYgLyogV0lUSF9MU1BQ
ICovCiAKIAogIC8qCkBAIC04NTEsNiArODYyLDI1IEBAIGN1cHNkUmVhZENvbmZpZ3VyYXRpb24o
dm9pZCkKIAogICBSdW5Vc2VyID0gZ2V0dWlkKCk7CiAKKyNpZmRlZiBXSVRIX0xTUFAKKyAgaWYg
KEF1ZGl0TG9nICE9IC0xKQorICB7CisgICAvKgorICAgICogQ2xhc3NpZnlPdmVycmlkZSBpcyBz
ZXQgZHVyaW5nIHJlYWRfY29uZmlndXJhdGlvbiwgaWYgaXRzIE9OLCByZXBvcnQgaXQgbm93Cisg
ICAgKi8KKyAgICBpZiAoQ2xhc3NpZnlPdmVycmlkZSkKKyAgICAgIGF1ZGl0X2xvZ191c2VyX21l
c3NhZ2UoQXVkaXRMb2csIEFVRElUX1VTWVNfQ09ORklHLAorICAgICAgICAgICAgICAgICJbQ29u
ZmlnXSBDbGFzc2lmeU92ZXJyaWRlPWVuYWJsZWQgVXNlcnMgY2FuIG92ZXJyaWRlIHByaW50IGJh
bm5lcnMiLAorICAgICAgICAgICAgICAgIFNlcnZlck5hbWUsIE5VTEwsIE5VTEwsIDEpOworICAg
LyoKKyAgICAqIFBlclBhZ2VMYWJlbCBpcyBzZXQgZHVyaW5nIHJlYWRfY29uZmlndXJhdGlvbiwg
aWYgaXRzIE9GRiwgcmVwb3J0IGl0IG5vdworICAgICovCisgICAgaWYgKCFQZXJQYWdlTGFiZWxz
KQorICAgICAgYXVkaXRfbG9nX3VzZXJfbWVzc2FnZShBdWRpdExvZywgQVVESVRfVVNZU19DT05G
SUcsCisgICAgICAgICAgICAgICAgIltDb25maWddIFBlclBhZ2VMYWJlbHM9ZGlzYWJsZWQiLCBT
ZXJ2ZXJOYW1lLCBOVUxMLCBOVUxMLCAxKTsKKyAgfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwor
CiAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfSU5GTywgIlJlbW90ZSBhY2Nlc3MgaXMgJXMu
IiwKICAgICAgICAgICAgICAgICAgIFJlbW90ZVBvcnQgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQi
KTsKIApAQCAtMTI1Myw3ICsxMjgzLDE5IEBAIGN1cHNkUmVhZENvbmZpZ3VyYXRpb24odm9pZCkK
ICAgICBjdXBzZENsZWFyU3RyaW5nKCZDbGFzc2lmaWNhdGlvbik7CiAKICAgaWYgKENsYXNzaWZp
Y2F0aW9uKQorICB7CiAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19JTkZPLCAiU2VjdXJp
dHkgc2V0IHRvIFwiJXNcIiIsIENsYXNzaWZpY2F0aW9uKTsKKyNpZmRlZiBXSVRIX0xTUFAKKyAg
ICBpZiAoQXVkaXRMb2cgIT0gLTEpCisgICAgeworICAgICAgYXVkaXRfbWVzc2FnZSA9IE5VTEw7
CisgICAgICBjdXBzZFNldFN0cmluZ2YoJmF1ZGl0X21lc3NhZ2UsICJbQ29uZmlnXSBDbGFzc2lm
aWNhdGlvbj0lcyIsIENsYXNzaWZpY2F0aW9uKTsKKyAgICAgIGF1ZGl0X2xvZ191c2VyX21lc3Nh
Z2UoQXVkaXRMb2csIEFVRElUX0xBQkVMX0xFVkVMX0NIQU5HRSwgYXVkaXRfbWVzc2FnZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVyTmFtZSwgTlVMTCwgTlVMTCwgMSk7Cisg
ICAgICBjdXBzZENsZWFyU3RyaW5nKCZhdWRpdF9tZXNzYWdlKTsKKyAgICB9CisjZW5kaWYgLyog
V0lUSF9MU1BQICovCisgIH0KIAogIC8qCiAgICogQ2hlY2sgdGhlIE1heENsaWVudHMgc2V0dGlu
ZywgYW5kIHRoZW4gYWxsb2NhdGUgbWVtb3J5IGZvciBpdC4uLgpAQCAtMzYzOSw2ICszNjgxLDE4
IEBAIHJlYWRfbG9jYXRpb24oY3Vwc19maWxlX3QgKmZwLAkJLyogSSAtIEMKICAgcmV0dXJuICgo
RmF0YWxFcnJvcnMgJiBDVVBTRF9GQVRBTF9DT05GSUcpID8gMCA6IGxpbmVudW0pOwogfQogCisj
aWZkZWYgV0lUSF9MU1BQCitpbnQgaXNfbHNwcF9jb25maWcoKQoreworICBpZiAoQ2xhc3NpZmlj
YXRpb24gIT0gTlVMTCkKKyAgICByZXR1cm4gKChfY3Vwc19zdHJjYXNlY21wKENsYXNzaWZpY2F0
aW9uLCBNTFNfQ09ORklHKSA9PSAwKSAKKyAgICAgICAgICAgIHx8IChfY3Vwc19zdHJjYXNlY21w
KENsYXNzaWZpY2F0aW9uLCBURV9DT05GSUcpID09IDApCisgICAgICAgICAgICB8fCAoX2N1cHNf
c3RyY2FzZWNtcChDbGFzc2lmaWNhdGlvbiwgU0VMSU5VWF9DT05GSUcpID09IDApKTsKKyAgZWxz
ZQorICAgIHJldHVybiAwOworfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLworCiAKIC8qCiAgKiAn
cmVhZF9wb2xpY3koKScgLSBSZWFkIGEgPFBvbGljeSBuYW1lPiBkZWZpbml0aW9uLgpkaWZmIC11
cCBjdXBzLTEuNi4yL3NjaGVkdWxlci9jb25mLmgubHNwcCBjdXBzLTEuNi4yL3NjaGVkdWxlci9j
b25mLmgKLS0tIGN1cHMtMS42LjIvc2NoZWR1bGVyL2NvbmYuaC5sc3BwCTIwMTMtMDMtMTggMTk6
MDA6MzAuNjQzNDQ5MDAzICswMTAwCisrKyBjdXBzLTEuNi4yL3NjaGVkdWxlci9jb25mLmgJMjAx
My0wMy0xOCAxOTowMDozMC43Mjk0NDc4MTAgKzAxMDAKQEAgLTI0OSw2ICsyNDksMTMgQEAgVkFS
IGludAkJCVNTTE9wdGlvbnMJCVZBTFVFKENVUFNEX1NTTF9OTwogCQkJCQkvKiBTU0wvVExTIG9w
dGlvbnMgKi8KICNlbmRpZiAvKiBIQVZFX1NTTCAqLwogCisjaWZkZWYgV0lUSF9MU1BQCitWQVIg
aW50CQkJQXVkaXRMb2cJCVZBTFVFKC0xKSwKKwkJCQkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciBh
dWRpdCAqLworCQkJUGVyUGFnZUxhYmVscwkJVkFMVUUoVFJVRSk7CisJCQkJCS8qIFB1dCB0aGUg
bGFiZWwgb24gZWFjaCBwYWdlICovCisjZW5kaWYgLyogV0lUSF9MU1BQICovCisKICNpZmRlZiBI
QVZFX0xBVU5DSEQKIFZBUiBpbnQJCQlMYXVuY2hkVGltZW91dAkJVkFMVUUoMTApOwogCQkJCQkv
KiBUaW1lIGFmdGVyIHdoaWNoIGFuIGlkbGUgY3Vwc2Qgd2lsbCBleGl0ICovCkBAIC0yNjcsNiAr
Mjc0LDkgQEAgaW50CQkJSGF2ZVNlcnZlckNyZWRzCQlWQUxVRSgwKTsKIGdzc19jcmVkX2lkX3QJ
CVNlcnZlckNyZWRzOwkvKiBTZXJ2ZXIncyBHU1MgY3JlZGVudGlhbHMgKi8KICNlbmRpZiAvKiBI
QVZFX0dTU0FQSSAqLwogCisjaWZkZWYgV0lUSF9MU1BQCitleHRlcm4gaW50CQlpc19sc3BwX2Nv
bmZpZyh2b2lkKTsKKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KIAogLyoKICAqIFByb3RvdHlwZXMu
Li4KZGlmZiAtdXAgY3Vwcy0xLjYuMi9zY2hlZHVsZXIvY3Vwc2QuaC5sc3BwIGN1cHMtMS42LjIv
c2NoZWR1bGVyL2N1cHNkLmgKLS0tIGN1cHMtMS42LjIvc2NoZWR1bGVyL2N1cHNkLmgubHNwcAky
MDEyLTEyLTE3IDIzOjE3OjA4LjAwMDAwMDAwMCArMDEwMAorKysgY3Vwcy0xLjYuMi9zY2hlZHVs
ZXIvY3Vwc2QuaAkyMDEzLTAzLTE4IDE5OjAwOjMwLjcyOTQ0NzgxMCArMDEwMApAQCAtMTMsNiAr
MTMsOCBAQAogICogICBmaWxlIGlzIG1pc3Npbmcgb3IgZGFtYWdlZCwgc2VlIHRoZSBsaWNlbnNl
IGF0ICJodHRwOi8vd3d3LmN1cHMub3JnLyIuCiAgKi8KIAorLyogQ29weXJpZ2h0IChDKSAyMDA1
IFRydXN0ZWQgQ29tcHV0ZXIgU29sdXRpb25zLCBJbmMuICovCisvKiAoYykgQ29weXJpZ2h0IDIw
MDUtMjAwNiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLiAqLwogCiAv
KgogICogSW5jbHVkZSBuZWNlc3NhcnkgaGVhZGVycy4KQEAgLTM3LDEzICszOSwyMCBAQAogIyAg
aW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYgLyogV0lOMzIgKi8KIAorI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2lmZGVmIFdJVEhfTFNQUAorIyAgZGVmaW5lIE1MU19DT05GSUcgIm1scyIKKyMgIGRl
ZmluZSBURV9DT05GSUcgInRlIgorIyAgZGVmaW5lIFNFTElOVVhfQ09ORklHICJTRUxpbnV4Igor
IyAgZGVmaW5lIFVOS05PV05fU0wgIlVOS05PV04gU0wiCisjZW5kaWYgLyogV0lUSF9MU1BQICov
CisKICNpbmNsdWRlICJtaW1lLmgiCiAKICNpZiBkZWZpbmVkKEhBVkVfQ0RTQVNTTCkKICMgIGlu
Y2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYgLyogSEFWRV9D
RFNBU1NMICovCiAKLQogLyoKICAqIFNvbWUgT1MncyBkb24ndCBoYXZlIGhzdHJlcnJvcigpLCBt
b3N0IG5vdGFibHkgU29sYXJpcy4uLgogICovCmRpZmYgLXVwIGN1cHMtMS42LjIvc2NoZWR1bGVy
L2lwcC5jLmxzcHAgY3Vwcy0xLjYuMi9zY2hlZHVsZXIvaXBwLmMKLS0tIGN1cHMtMS42LjIvc2No
ZWR1bGVyL2lwcC5jLmxzcHAJMjAxMy0wMy0xOCAxOTowMDozMC42Njg0NDg2NTYgKzAxMDAKKysr
IGN1cHMtMS42LjIvc2NoZWR1bGVyL2lwcC5jCTIwMTMtMDMtMTggMTk6MDU6MDAuNDE2NzA2NDcy
ICswMTAwCkBAIC0zNSw2ICszNSw3IEBACiAgKiAgIGNhbmNlbF9hbGxfam9icygpICAgICAgICAg
ICAtIENhbmNlbCBhbGwgb3Igc2VsZWN0ZWQgcHJpbnQgam9icy4KICAqICAgY2FuY2VsX2pvYigp
ICAgICAgICAgICAgICAgIC0gQ2FuY2VsIGEgcHJpbnQgam9iLgogICogICBjYW5jZWxfc3Vic2Ny
aXB0aW9uKCkgICAgICAgLSBDYW5jZWwgYSBzdWJzY3JpcHRpb24uCisgKiAgIGNoZWNrX2NvbnRl
eHQoKSAgICAgICAgICAgICAtIENoZWNrIHRoZSBTRUxpbnV4IGNvbnRleHQgZm9yIGEgdXNlciBh
bmQgam9iCiAgKiAgIGNoZWNrX3Jzc19yZWNpcGllbnQoKSAgICAgICAtIENoZWNrIHRoYXQgd2Ug
ZG8gbm90IGhhdmUgYSBkdXBsaWNhdGUgUlNTCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZlZWQgVVJJLgogICogICBjaGVja19xdW90YXMoKSAgICAgICAgICAgICAgLSBDaGVj
ayBxdW90YXMgZm9yIGEgcHJpbnRlciBhbmQgdXNlci4KQEAgLTk5LDYgKzEwMCw5IEBACiAgKiAg
IHZhbGlkYXRlX3VzZXIoKSAgICAgICAgICAgICAtIFZhbGlkYXRlIHRoZSB1c2VyIGZvciB0aGUg
cmVxdWVzdC4KICAqLwogCisvKiBDb3B5cmlnaHQgKEMpIDIwMDUgVHJ1c3RlZCBDb21wdXRlciBT
b2x1dGlvbnMsIEluYy4gKi8KKy8qIChjKSBDb3B5cmlnaHQgMjAwNS0yMDA2IEhld2xldHQtUGFj
a2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuICovCisKIC8qCiAgKiBJbmNsdWRlIG5lY2Vz
c2FyeSBoZWFkZXJzLi4uCiAgKi8KQEAgLTEyMiw2ICsxMjYsMTQgQEAgZXh0ZXJuIGludCBtYnJf
Y2hlY2tfbWVtYmVyc2hpcF9ieV9pZCh1dQogIyAgZW5kaWYgLyogSEFWRV9NRU1CRVJTSElQUFJJ
Vl9IICovCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAKKyNpZmRlZiBXSVRIX0xTUFAKKyNpbmNs
dWRlIDxsaWJhdWRpdC5oPgorI2luY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgorI2luY2x1ZGUg
PHNlbGludXgvY29udGV4dC5oPgorI2luY2x1ZGUgPHNlbGludXgvYXZjLmg+CisjaW5jbHVkZSA8
c2VsaW51eC9mbGFzay5oPgorI2luY2x1ZGUgPHNlbGludXgvYXZfcGVybWlzc2lvbnMuaD4KKyNl
bmRpZiAvKiBXSVRIX0xTUFAgKi8KIAogLyoKICAqIExvY2FsIGZ1bmN0aW9ucy4uLgpAQCAtMTQ2
LDYgKzE1OCw5IEBAIHN0YXRpYyB2b2lkCWNhbmNlbF9hbGxfam9icyhjdXBzZF9jbGllbnQKIHN0
YXRpYyB2b2lkCWNhbmNlbF9qb2IoY3Vwc2RfY2xpZW50X3QgKmNvbiwgaXBwX2F0dHJpYnV0ZV90
ICp1cmkpOwogc3RhdGljIHZvaWQJY2FuY2VsX3N1YnNjcmlwdGlvbihjdXBzZF9jbGllbnRfdCAq
Y29uLCBpbnQgaWQpOwogc3RhdGljIGludAljaGVja19yc3NfcmVjaXBpZW50KGNvbnN0IGNoYXIg
KnJlY2lwaWVudCk7CisjaWZkZWYgV0lUSF9MU1BQCitzdGF0aWMgaW50CWNoZWNrX2NvbnRleHQo
Y3Vwc2RfY2xpZW50X3QgKmNvbiwgY3Vwc2Rfam9iX3QgKmpvYik7CisjZW5kaWYgLyogV0lUSF9M
U1BQICovCiBzdGF0aWMgaW50CWNoZWNrX3F1b3RhcyhjdXBzZF9jbGllbnRfdCAqY29uLCBjdXBz
ZF9wcmludGVyX3QgKnApOwogc3RhdGljIHZvaWQJY2xvc2Vfam9iKGN1cHNkX2NsaWVudF90ICpj
b24sIGlwcF9hdHRyaWJ1dGVfdCAqdXJpKTsKIHN0YXRpYyB2b2lkCWNvcHlfYXR0cnMoaXBwX3Qg
KnRvLCBpcHBfdCAqZnJvbSwgY3Vwc19hcnJheV90ICpyYSwKQEAgLTEzMDAsNiArMTMxNSwyMSBA
QCBhZGRfam9iKGN1cHNkX2NsaWVudF90ICAqY29uLAkJLyogSSAtIENsCiAgICAgInRpbWUtYXQt
Y3JlYXRpb24iLAogICAgICJ0aW1lLWF0LXByb2Nlc3NpbmciCiAgIH07CisjaWZkZWYgV0lUSF9M
U1BQCisgIGNoYXIJCSphdWRpdF9tZXNzYWdlOwkJLyogQXVkaXQgbWVzc2FnZSBzdHJpbmcgKi8K
KyAgY2hhcgkJKnByaW50ZXJmaWxlOwkJLyogZGV2aWNlIGZpbGUgcG9pbnRlZCB0byBieSB0aGUg
cHJpbnRlciAqLworICBjaGFyCQkqdXNlcmhlYWRlciA9IE5VTEw7CS8qIFVzZXIgc3VwcGxpZWQg
am9iLXNoZWV0c1swXSAqLworICBjaGFyCQkqdXNlcmZvb3RlciA9IE5VTEw7CS8qIFVzZXIgc3Vw
cGxpZWQgam9iLXNoZWV0c1sxXSAqLworICBpbnQJCW92ZXJyaWRlID0gMDsJCS8qIFdhcyBhIGJh
bm5lciBvdmVycm9kZSBvbiBhIGpvYiAqLworICBzZWN1cml0eV9pZF90CWNsaXNpZDsJCQkvKiBT
RUxpbnV4IFNJRCBmb3IgdGhlIGNsaWVudCAqLworICBzZWN1cml0eV9pZF90CXBzaWQ7CQkJLyog
U0VMaW51eCBTSUQgZm9yIHRoZSBwcmludGVyICovCisgIGNvbnRleHRfdAlwcmludGVyY29uOwkJ
LyogUHJpbnRlcidzIGNvbnRleHQgc3RyaW5nICovCisgIHN0cnVjdCBzdGF0CXByaW50ZXJzdGF0
OwkJLyogUHJpbnRlcidzIHN0YXQgYnVmZmVyICovCisgIHNlY3VyaXR5X2NvbnRleHRfdAlkZXZj
b247CQkvKiBQcmludGVyJ3MgU0VMaW51eCBjb250ZXh0ICovCisgIHN0cnVjdCBhdmNfZW50cnlf
cmVmCWF2Y3JlZjsJCS8qIFBvaW50ZXIgdG8gdGhlIGFjY2VzcyB2ZWN0b3IgY2FjaGUgKi8KKyAg
c2VjdXJpdHlfY2xhc3NfdAl0Y2xhc3M7CQkvKiBPYmplY3QgY2xhc3MgZm9yIHRoZSBTRUxpbnV4
IGNoZWNrICovCisgIGFjY2Vzc192ZWN0b3JfdAlhdnI7CQkvKiBBY2Nlc3MgbWV0aG9kIGJlaW5n
IHJlcXVlc3RlZCAqLworI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAKICAgY3Vwc2RMb2dNZXNz
YWdlKENVUFNEX0xPR19ERUJVRzIsICJhZGRfam9iKCVwWyVkXSwgJXAoJXMpLCAlcCglcy8lcykp
IiwKQEAgLTE2NDAsNiArMTY3MCwxMDYgQEAgYWRkX2pvYihjdXBzZF9jbGllbnRfdCAgKmNvbiwJ
CS8qIEkgLSBDbAogICAgIH0KICAgfQogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmIChpc19sc3Bw
X2NvbmZpZygpKQorICB7CisgICAgaWYgKCFjb24tPnNjb24gfHwgc3RybmNtcChjb24tPnNjb24s
IFVOS05PV05fU0wsIHN0cmxlbihVTktOT1dOX1NMKSkgPT0gMCkKKyAgICB7CisgICAgICBjdXBz
ZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLCAiYWRkX2pvYjogbWlzc2luZyBjbGFzc2lmaWNh
dGlvbiBmb3IgY29ubmVjdGlvbiBcJyVzXCchIiwgcHJpbnRlci0+bmFtZSk7CisgICAgICBzZW5k
X2lwcF9zdGF0dXMoY29uLCBJUFBfSU5URVJOQUxfRVJST1IsIF8oIk1pc3NpbmcgcmVxdWlyZWQg
c2VjdXJpdHkgYXR0cmlidXRlcy4iKSk7CisgICAgICByZXR1cm4gKE5VTEwpOworICAgIH0KKwor
ICAgLyoKKyAgICAqIFBlcmZvcm0gYW4gYWNjZXNzIGNoZWNrIHNvIHRoYXQgaWYgdGhlIHVzZXIg
Z2V0cyBmZWVkYmFjayBhdCBlbnF1ZXVlIHRpbWUKKyAgICAqLworCisgICAgcHJpbnRlcmZpbGUg
PSBzdHJzdHIocHJpbnRlci0+ZGV2aWNlX3VyaSwgIi9kZXYvIik7CisgICAgaWYgKHByaW50ZXJm
aWxlID09IE5VTEwgJiYgKHN0cm5jbXAocHJpbnRlci0+ZGV2aWNlX3VyaSwgImZpbGU6LyIsIDYp
ID09IDApKQorICAgICAgcHJpbnRlcmZpbGUgPSBwcmludGVyLT5kZXZpY2VfdXJpICsgc3RybGVu
KCJmaWxlOiIpOworCisgICAgaWYgKHByaW50ZXJmaWxlICE9IE5VTEwpCisgICAgeworICAgICAg
Y3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19ERUJVRywgImFkZF9qb2I6IEF0dGVtcHRpbmcgYW4g
YWNjZXNzIGNoZWNrIG9uIHByaW50ZXIgZGV2aWNlICVzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICBwcmludGVyZmlsZSk7CisKKyAgICAgIGlmIChsc3RhdChwcmludGVyZmlsZSwgJnByaW50ZXJz
dGF0KSA8IDApCisgICAgICB7CisJaWYgKGVycm5vICE9IEVOT0VOVCkKKwl7CisJICBzZW5kX2lw
cF9zdGF0dXMoY29uLCBJUFBfTk9UX0FVVEhPUklaRUQsIF8oIlVuYWJsZSB0byBzdGF0IHRoZSBw
cmludGVyIikpOworCSAgcmV0dXJuIChOVUxMKTsKKwl9CisJLyoKKwkgKiBUaGUgcHJpbnRlciBk
b2VzIG5vdCBleGlzdCwgc28gZm9yIG5vdyBhc3N1bWUgaXQncyBhIEZpbGVEZXZpY2UKKwkgKi8K
Kwl0Y2xhc3MgPSBTRUNDTEFTU19GSUxFOworCWF2ciA9IEZJTEVfX1dSSVRFOworICAgICAgfQor
ICAgICAgZWxzZSBpZiAoU19JU0NIUihwcmludGVyc3RhdC5zdF9tb2RlKSkKKyAgICAgIHsKKwl0
Y2xhc3MgPSBTRUNDTEFTU19DSFJfRklMRTsKKwlhdnIgPSBDSFJfRklMRV9fV1JJVEU7CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChTX0lTUkVHKHByaW50ZXJzdGF0LnN0X21vZGUpKQorICAgICAg
eworCXRjbGFzcyA9IFNFQ0NMQVNTX0ZJTEU7CisJYXZyID0gRklMRV9fV1JJVEU7CisgICAgICB9
CisgICAgICBlbHNlCisgICAgICB7CisJc2VuZF9pcHBfc3RhdHVzKGNvbiwgSVBQX05PVF9BVVRI
T1JJWkVELCBfKCJQcmludGVyIGlzIG5vdCBhIGNoYXJhY3RlciBkZXZpY2Ugb3IgcmVndWxhciBm
aWxlIikpOworCXJldHVybiAoTlVMTCk7CisgICAgICB9CisgICAgICBzdGF0aWMgYXZjX2luaXRp
YWxpemVkID0gMDsKKyAgICAgIGlmICghYXZjX2luaXRpYWxpemVkKyspCisgICAgICAgICAgYXZj
X2luaXQoImN1cHNkX2VucXVldWVfIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICBh
dmNfZW50cnlfcmVmX2luaXQoJmF2Y3JlZik7CisgICAgICBpZiAoYXZjX2NvbnRleHRfdG9fc2lk
KGNvbi0+c2NvbiwgJmNsaXNpZCkgIT0gMCkKKyAgICAgIHsKKyAgICAgICAgc2VuZF9pcHBfc3Rh
dHVzKGNvbiwgSVBQX05PVF9BVVRIT1JJWkVELCBfKCJVbmFibGUgdG8gZ2V0IHRoZSBTRUxpbnV4
IHNpZCBvZiB0aGUgY2xpZW50IikpOworICAgICAgICByZXR1cm4gKE5VTEwpOworICAgICAgfQor
ICAgICAgaWYgKGdldGZpbGVjb24ocHJpbnRlcmZpbGUsICZkZXZjb24pID09IC0xKQorICAgICAg
eworICAgICAgICBzZW5kX2lwcF9zdGF0dXMoY29uLCBJUFBfTk9UX0FVVEhPUklaRUQsIF8oIlVu
YWJsZSB0byBnZXQgdGhlIFNFTGludXggY29udGV4dCBvZiB0aGUgcHJpbnRlciIpKTsKKyAgICAg
ICAgcmV0dXJuIChOVUxMKTsKKyAgICAgIH0KKyAgICAgIHByaW50ZXJjb24gPSBjb250ZXh0X25l
dyhkZXZjb24pOworICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19ERUJVRywgImFkZF9q
b2I6IHByaW50ZXIgY29udGV4dCAlcyBjbGllbnQgY29udGV4dCAlcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dF9zdHIocHJpbnRlcmNvbiksIGNvbi0+c2Nvbik7CisgICAgICBjb250
ZXh0X2ZyZWUocHJpbnRlcmNvbik7CisKKyAgICAgIGlmIChhdmNfY29udGV4dF90b19zaWQoZGV2
Y29uLCAmcHNpZCkgIT0gMCkKKyAgICAgIHsKKyAgICAgICAgc2VuZF9pcHBfc3RhdHVzKGNvbiwg
SVBQX05PVF9BVVRIT1JJWkVELCBfKCJVbmFibGUgdG8gZ2V0IHRoZSBTRUxpbnV4IHNpZCBvZiB0
aGUgcHJpbnRlciIpKTsKKyAgICAgICAgZnJlZWNvbihkZXZjb24pOworICAgICAgICByZXR1cm4g
KE5VTEwpOworICAgICAgfQorICAgICAgZnJlZWNvbihkZXZjb24pOworICAgICAgaWYgKGF2Y19o
YXNfcGVybShjbGlzaWQsIHBzaWQsIHRjbGFzcywgYXZyLCAmYXZjcmVmLCBOVUxMKSAhPSAwKQor
ICAgICAgeworICAgICAgIC8qCisgICAgICAgICogVGhlIGFjY2VzcyBjaGVjayBmYWlsZWQsIHNv
IGNhbmNlbCB0aGUgam9iIGFuZCBzZW5kIGFuIGF1ZGl0IG1lc3NhZ2UKKyAgICAgICAgKi8KKyAg
ICAgICAgaWYgKEF1ZGl0TG9nICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgYXVkaXRfbWVz
c2FnZSA9IE5VTEw7CisgICAgICAgICAgY3Vwc2RTZXRTdHJpbmdmKCZhdWRpdF9tZXNzYWdlLCAi
am9iPT8gYXVpZD0ldSBhY2N0PSVzIG9iaj0lcyByZWZ1c2VkIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIHVuYWJsZSB0byBhY2Nlc3MgcHJpbnRlcj0lcyIsIGNvbi0+YXVpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uLT51c2VybmFtZSwgY29uLT5zY29uLCBwcmludGVyLT5u
YW1lKTsKKyAgICAgICAgICBhdWRpdF9sb2dfdXNlcl9tZXNzYWdlKEF1ZGl0TG9nLCBBVURJVF9V
U0VSX0xBQkVMRURfRVhQT1JULCBhdWRpdF9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VydmVyTmFtZSwgTlVMTCwgTlVMTCwgMCk7CisgICAgICAgICAgY3Vwc2RD
bGVhclN0cmluZygmYXVkaXRfbWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBzZW5kX2lw
cF9zdGF0dXMoY29uLCBJUFBfTk9UX0FVVEhPUklaRUQsIF8oIlNFTGludXggcHJvaGliaXRzIGFj
Y2VzcyB0byB0aGUgcHJpbnRlciIpKTsKKyAgICAgICAgcmV0dXJuIChOVUxMKTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KKwogICBpZiAoKGpvYiA9IGN1cHNk
QWRkSm9iKHByaW9yaXR5LCBwcmludGVyLT5uYW1lKSkgPT0gTlVMTCkKICAgewogICAgIHNlbmRf
aXBwX3N0YXR1cyhjb24sIElQUF9JTlRFUk5BTF9FUlJPUiwKQEAgLTE2NDgsNiArMTc3OCwzMiBA
QCBhZGRfam9iKGN1cHNkX2NsaWVudF90ICAqY29uLAkJLyogSSAtIENsCiAgICAgcmV0dXJuIChO
VUxMKTsKICAgfQogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmIChpc19sc3BwX2NvbmZpZygpKQor
ICB7CisgICAvKgorICAgICogZHVwbGljYXRlIHRoZSBzZWN1cml0eSBjb250ZXh0IGFuZCBhdWlk
IG9mIHRoZSBjb25uZWN0aW9uIGludG8gdGhlIGpvYiBzdHJ1Y3R1cmUKKyAgICAqLworICAgIGpv
Yi0+c2NvbiA9IHN0cmR1cChjb24tPnNjb24pOworICAgIGpvYi0+YXVpZCA9IGNvbi0+YXVpZDsK
KworICAgLyogCisgICAgKiBhZGQgdGhlIHNlY3VyaXR5IGNvbnRleHQgdG8gdGhlIHJlcXVlc3Qg
c28gdGhhdCBvbiBhIHJlc3RhcnQgdGhlIHNlY3VyaXR5CisgICAgKiBhdHRyaWJ1dGVzIHdpbGwg
YmUgYWJsZSB0byBiZSByZXN0b3JlZAorICAgICovCisgICAgaXBwQWRkU3RyaW5nKGNvbi0+cmVx
dWVzdCwgSVBQX1RBR19KT0IsIElQUF9UQUdfTkFNRSwgInNlY3VyaXR5LWNvbnRleHQiLCAKKwkJ
IE5VTEwsIGpvYi0+c2Nvbik7CisgIH0KKyAgZWxzZQorICB7CisgICAvKgorICAgICogRmlsbCBp
biB0aGUgc2VjdXJpdHkgY29udGV4dCBvZiB0aGUgam9iIGFzIHVubGFiZWxlZAorICAgICovCisg
ICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19ERUJVRywgImFkZF9qb2I6IHNldHRpbmcgY29u
dGV4dCBvZiBqb2IgdG8gJXMiLCBVTktOT1dOX1NMKTsKKyAgICBjdXBzZFNldFN0cmluZygmam9i
LT5zY29uLCBVTktOT1dOX1NMKTsKKyAgfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLworCiAgIGpv
Yi0+ZHR5cGUgICA9IHByaW50ZXItPnR5cGUgJiAoQ1VQU19QUklOVEVSX0NMQVNTIHwgQ1VQU19Q
UklOVEVSX1JFTU9URSk7CiAgIGpvYi0+YXR0cnMgICA9IGNvbi0+cmVxdWVzdDsKICAgam9iLT5k
aXJ0eSAgID0gMTsKQEAgLTE4NTcsNiArMjAxMywyOSBAQCBhZGRfam9iKGN1cHNkX2NsaWVudF90
ICAqY29uLAkJLyogSSAtIENsCiAgICAgICBhdHRyLT52YWx1ZXNbMF0uc3RyaW5nLnRleHQgPSBf
Y3Vwc1N0clJldGFpbihwcmludGVyLT5qb2Jfc2hlZXRzWzBdKTsKICAgICAgIGF0dHItPnZhbHVl
c1sxXS5zdHJpbmcudGV4dCA9IF9jdXBzU3RyUmV0YWluKHByaW50ZXItPmpvYl9zaGVldHNbMV0p
OwogICAgIH0KKyNpZmRlZiBXSVRIX0xTUFAKKyAgICBlbHNlCisgICAgeworICAgICAvKgorICAg
ICAgKiBUaGUgb3B0aW9uIHdhcyBwcmVzZW50LCBzbyBjYXB0dXJlIHRoZSB1c2VyIHN1cHBsaWVk
IHN0cmluZ3MKKyAgICAgICovCisgICAgICB1c2VyaGVhZGVyID0gc3RyZHVwKGF0dHItPnZhbHVl
c1swXS5zdHJpbmcudGV4dCk7CisKKyAgICAgIGlmIChhdHRyLT5udW1fdmFsdWVzID4gMSkKKyAg
ICAgICAgdXNlcmZvb3RlciA9IHN0cmR1cChhdHRyLT52YWx1ZXNbMV0uc3RyaW5nLnRleHQpOwor
ICAKKyAgICAgIGlmIChDbGFzc2lmaWNhdGlvbiAhPSBOVUxMICYmIChzdHJjbXAodXNlcmhlYWRl
ciwgQ2xhc3NpZmljYXRpb24pID09IDApCisgICAgICAgICAgJiYgdXNlcmZvb3RlciAmJihzdHJj
bXAodXNlcmZvb3RlciwgQ2xhc3NpZmljYXRpb24pID09IDApKQorICAgICAgeworICAgICAgIC8q
CisgICAgICAgICogU2luY2UgYm90aCB2YWx1ZXMgYXJlIENsYXNzaWZpY2F0aW9uLCB0aGUgdXNl
ciBpcyBub3QgdHJ5aW5nIHRvIE92ZXJyaWRlCisgICAgICAgICovCisgICAgICAgIGZyZWUodXNl
cmhlYWRlcik7CisgICAgICAgIGlmICh1c2VyZm9vdGVyKSBmcmVlKHVzZXJmb290ZXIpOworICAg
ICAgICB1c2VyaGVhZGVyID0gdXNlcmZvb3RlciA9IE5VTEw7CisgICAgICB9CisgICAgfQorI2Vu
ZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAgICAgam9iLT5qb2Jfc2hlZXRzID0gYXR0cjsKIApAQCAt
MTg4Nyw2ICsyMDY2LDkgQEAgYWRkX2pvYihjdXBzZF9jbGllbnRfdCAgKmNvbiwJCS8qIEkgLSBD
bAogCSAgICAgICAgICAgICAgICAJCSAgICAgImpvYi1zaGVldHM9XCIlcyxub25lXCIsICIKIAkJ
CQkJICAgICAiam9iLW9yaWdpbmF0aW5nLXVzZXItbmFtZT1cIiVzXCIiLAogCSAgICAgICAgICAg
ICAgQ2xhc3NpZmljYXRpb24sIGpvYi0+dXNlcm5hbWUpOworI2lmZGVmIFdJVEhfTFNQUAorCSAg
b3ZlcnJpZGUgPSAxOworI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCX0KIAllbHNlIGlmIChhdHRy
LT5udW1fdmFsdWVzID09IDIgJiYKIAkgICAgICAgICBzdHJjbXAoYXR0ci0+dmFsdWVzWzBdLnN0
cmluZy50ZXh0LApAQCAtMTkwNSw2ICsyMDg3LDkgQEAgYWRkX2pvYihjdXBzZF9jbGllbnRfdCAg
KmNvbiwJCS8qIEkgLSBDbAogCQkJCQkgICAgICJqb2Itb3JpZ2luYXRpbmctdXNlci1uYW1lPVwi
JXNcIiIsCiAJCSAgICAgIGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCwKIAkJICAgICAgYXR0
ci0+dmFsdWVzWzFdLnN0cmluZy50ZXh0LCBqb2ItPnVzZXJuYW1lKTsKKyNpZmRlZiBXSVRIX0xT
UFAKKwkgIG92ZXJyaWRlID0gMTsKKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KIAl9CiAJZWxzZSBp
ZiAoc3RyY21wKGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCwgQ2xhc3NpZmljYXRpb24pICYm
CiAJICAgICAgICAgc3RyY21wKGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCwgIm5vbmUiKSAm
JgpAQCAtMTkyNSw2ICsyMTEwLDkgQEAgYWRkX2pvYihjdXBzZF9jbGllbnRfdCAgKmNvbiwJCS8q
IEkgLSBDbAogCQkJImpvYi1vcmlnaW5hdGluZy11c2VyLW5hbWU9XCIlc1wiIiwKIAkJCWF0dHIt
PnZhbHVlc1swXS5zdHJpbmcudGV4dCwKIAkJCWF0dHItPnZhbHVlc1sxXS5zdHJpbmcudGV4dCwg
am9iLT51c2VybmFtZSk7CisjaWZkZWYgV0lUSF9MU1BQCisJICBvdmVycmlkZSA9IDE7CisjZW5k
aWYgLyogV0lUSF9MU1BQICovCiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGVsc2UgaWYgKHN0
cmNtcChhdHRyLT52YWx1ZXNbMF0uc3RyaW5nLnRleHQsIENsYXNzaWZpY2F0aW9uKSAmJgpAQCAt
MTk2NSw4ICsyMTUzLDUyIEBAIGFkZF9qb2IoY3Vwc2RfY2xpZW50X3QgICpjb24sCQkvKiBJIC0g
Q2wKIAkJICAgICAgImpvYi1zaGVldHM9XCIlc1wiLCAiCiAJCSAgICAgICJqb2Itb3JpZ2luYXRp
bmctdXNlci1uYW1lPVwiJXNcIiIsCiAJCSAgICAgIENsYXNzaWZpY2F0aW9uLCBqb2ItPnVzZXJu
YW1lKTsKKyNpZmRlZiBXSVRIX0xTUFAKKwlvdmVycmlkZSA9IDE7CisjZW5kaWYgLyogV0lUSF9M
U1BQICovCisgICAgICB9CisjaWZkZWYgV0lUSF9MU1BQCisgICAgICBpZiAoaXNfbHNwcF9jb25m
aWcoKSAmJiBBdWRpdExvZyAhPSAtMSkKKyAgICAgIHsKKyAgICAgICAgYXVkaXRfbWVzc2FnZSA9
IE5VTEw7CisKKyAgICAgICAgaWYgKHVzZXJoZWFkZXIgfHwgdXNlcmZvb3RlcikKKyAgICAgICAg
eworICAgICAgICAgIGlmICghb3ZlcnJpZGUpCisgICAgICAgICAgeworICAgICAgICAgICAvKgor
ICAgICAgICAgICAgKiBUaGUgdXNlciBvdmVycm9kZSB0aGUgYmFubmVyLCBzbyBhdWRpdCBpdAor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGN1cHNkU2V0U3RyaW5nZigmYXVkaXRfbWVzc2Fn
ZSwgImpvYj0lZCB1c2VyIHN1cHBsaWVkIGpvYi1zaGVldHM9JXMsJXMiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiB1c2luZyBiYW5uZXJzPSVzLCVzIiwgam9iLT5pZCwgdXNlcmhlYWRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyZm9vdGVyLCBhdHRyLT52YWx1ZXNb
MF0uc3RyaW5nLnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF0dHItPm51bV92
YWx1ZXMgPiAxKSA/IGF0dHItPnZhbHVlc1sxXS5zdHJpbmcudGV4dCA6ICIobnVsbCkiKTsKKyAg
ICAgICAgICAgIGF1ZGl0X2xvZ191c2VyX21lc3NhZ2UoQXVkaXRMb2csIEFVRElUX0xBQkVMX09W
RVJSSURFLCBhdWRpdF9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZXJ2ZXJOYW1lLCBOVUxMLCBOVUxMLCAxKTsKKwkgIH0KKyAgICAgICAgICBlbHNlCisgICAg
ICAgICAgeworICAgICAgICAgICAvKgorICAgICAgICAgICAgKiBUaGUgdXNlciB0cmllZCB0byBv
dmVycmlkZSB0aGUgYmFubmVyLCBhdWRpdCB0aGUgZmFpbHVyZQorICAgICAgICAgICAgKi8KKyAg
ICAgICAgICAgIGN1cHNkU2V0U3RyaW5nZigmYXVkaXRfbWVzc2FnZSwgImpvYj0lZCB1c2VyIHN1
cHBsaWVkIGpvYi1zaGVldHM9JXMsJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBp
Z25vcmVkIGJhbm5lcnM9JXMsJXMiLCBqb2ItPmlkLCB1c2VyaGVhZGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZXJmb290ZXIsIGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXR0ci0+bnVtX3ZhbHVlcyA+IDEpID8gYXR0
ci0+dmFsdWVzWzFdLnN0cmluZy50ZXh0IDogIihudWxsKSIpOworICAgICAgICAgICAgYXVkaXRf
bG9nX3VzZXJfbWVzc2FnZShBdWRpdExvZywgQVVESVRfTEFCRUxfT1ZFUlJJREUsIGF1ZGl0X21l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlck5hbWUsIE5V
TEwsIE5VTEwsIDApOworCSAgfQorICAgICAgICAgIGN1cHNkQ2xlYXJTdHJpbmcoJmF1ZGl0X21l
c3NhZ2UpOworCX0KICAgICAgIH0KKworICAgICAgaWYgKHVzZXJoZWFkZXIpCisgICAgICAgIGZy
ZWUodXNlcmhlYWRlcik7CisgICAgICBpZiAodXNlcmZvb3RlcikKKyAgICAgICAgZnJlZSh1c2Vy
Zm9vdGVyKTsKKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KICAgICB9CisgICAgCiAKICAgIC8qCiAg
ICAgKiBTZWUgaWYgd2UgbmVlZCB0byBhZGQgdGhlIHN0YXJ0aW5nIHNoZWV0Li4uCkBAIC0zNzMw
LDYgKzM5NjIsMTExIEBAIGNoZWNrX3Jzc19yZWNpcGllbnQoCiB9CiAKIAorI2lmZGVmIFdJVEhf
TFNQUAorLyoKKyAqICdjaGVja19jb250ZXh0KCknIC0gQ2hlY2sgU0VMaW51eCBzZWN1cml0eSBj
b250ZXh0IG9mIGEgdXNlciBhbmQgam9iCisgKi8KKworc3RhdGljIGludAkJCQkvKiBPIC0gMSBp
ZiBPSywgMCBpZiBub3QsIC0xIG9uIGVycm9yICovCitjaGVja19jb250ZXh0KGN1cHNkX2NsaWVu
dF90ICpjb24sCS8qIEkgLSBDbGllbnQgY29ubmVjdGlvbiAqLworICAgICAgICAgICAgIGN1cHNk
X2pvYl90ICAgICpqb2IpCS8qIEkgLSBKb2IgKi8KK3sKKyAgaW50CQkJZW5mb3JjaW5nOwkvKiBp
cyBTRUxpbnV4IGluIGVuZm9yY2luZyBtb2RlICovCisgIGNoYXIJCQlmaWxlbmFtZVsxMDI0XTsg
LyogRmlsZW5hbWUgb2YgdGhlIHNwb29sIGZpbGUgKi8KKyAgc2VjdXJpdHlfaWRfdAkJY2xpc2lk
OwkJLyogU0VMaW51eCBTSUQgb2YgdGhlIGNsaWVudCAqLworICBzZWN1cml0eV9pZF90CQlqb2Jz
aWQ7CQkvKiBTRUxpbnV4IFNJRCBvZiB0aGUgam9iICovCisgIHNlY3VyaXR5X2lkX3QJCWZpbGVz
aWQ7CS8qIFNFTGludXggU0lEIG9mIHRoZSBzcG9vbCBmaWxlICovCisgIHN0cnVjdCBhdmNfZW50
cnlfcmVmCWF2Y3JlZjsJCS8qIEFWQyBlbnRyeSBjYWNoZSBwb2ludGVyICovCisgIHNlY3VyaXR5
X2NsYXNzX3QJdGNsYXNzOwkJLyogU0VMaW51eCBzZWN1cml0eSBjbGFzcyAqLworICBhY2Nlc3Nf
dmVjdG9yX3QJYXZyOwkJLyogU0VMaW51eCBhY2Nlc3MgYmVpbmcgcXVlcmllZCAqLworICBzZWN1
cml0eV9jb250ZXh0X3QJc3Bvb2xmaWxlY29uOwkvKiBTRUxpbnV4IGNvbnRleHQgb2YgdGhlIHNw
b29sIGZpbGUgKi8KKworCisgLyoKKyAgKiBWYWxpZGF0ZSB0aGUgaW5wdXQgdG8gYmUgc3VyZSB0
aGVyZSBhcmUgY29udGV4dHMgdG8gd29yayB3aXRoLi4uCisgICovCisKKyAgaWYgKGNvbi0+c2Nv
biA9PSBOVUxMIHx8IGpvYi0+c2NvbiA9PSBOVUxMCisgICAgICB8fCBzdHJuY21wKGNvbi0+c2Nv
biwgVU5LTk9XTl9TTCwgc3RybGVuKFVOS05PV05fU0wpKSA9PSAwCisgICAgICB8fCBzdHJuY21w
KGpvYi0+c2NvbiwgVU5LTk9XTl9TTCwgc3RybGVuKFVOS05PV05fU0wpKSA9PSAwKQorICAgIHJl
dHVybiAtMTsKKworICBpZiAoKGVuZm9yY2luZyA9IHNlY3VyaXR5X2dldGVuZm9yY2UoKSkgPT0g
LTEpCisgIHsKKyAgICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLCAiRXJyb3Igd2hp
bGUgZGV0ZXJtaW5pbmcgU0VMaW51eCBlbmZvcmNlbWVudCIpOworICAgIHJldHVybiAtMTsKKyAg
fQorICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0RFQlVHLCAiY2hlY2tfY29udGV4dDogY2xp
ZW50IGNvbnRleHQgJXMgam9iIGNvbnRleHQgJXMiLCBjb24tPnNjb24sIGpvYi0+c2Nvbik7CisK
KworIC8qCisgICogSW5pdGlhbGl6ZSB0aGUgYXZjIGVuZ2luZS4uLgorICAqLworCisgIHN0YXRp
YyBhdmNfaW5pdGlhbGl6ZWQgPSAwOworICBpZiAoISBhdmNfaW5pdGlhbGl6ZWQrKykKKyAgewor
ICAgIGlmIChhdmNfaW5pdCgiY3Vwc2QiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSA8IDApCisg
ICAgeworICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwgImNoZWNrX2NvbnRl
eHQ6IHVuYWJsZSBhdmNfaW5pdCIpOworICAgICAgcmV0dXJuIC0xOworICAgIH0gCisgIH0gCisg
IGlmIChhdmNfY29udGV4dF90b19zaWQoY29uLT5zY29uLCAmY2xpc2lkKSAhPSAwKQorICB7Cisg
ICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwgImNoZWNrX2NvbnRleHQ6IHVuYWJs
ZSB0byBjb252ZXJ0ICVzIHRvIFNFTGludXggc2lkIiwgY29uLT5zY29uKTsKKyAgICByZXR1cm4g
LTE7CisgIH0KKyAgaWYgKGF2Y19jb250ZXh0X3RvX3NpZChqb2ItPnNjb24sICZqb2JzaWQpICE9
IDApCisgIHsKKyAgICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLCAiY2hlY2tfY29u
dGV4dDogdW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gU0VMaW51eCBzaWQiLCBqb2ItPnNjb24pOwor
ICAgIHJldHVybiAtMTsKKyAgfQorICBhdmNfZW50cnlfcmVmX2luaXQoJmF2Y3JlZik7CisgIHRj
bGFzcyA9IFNFQ0NMQVNTX0ZJTEU7CisgIGF2ciA9IEZJTEVfX1JFQUQ7CisKKyAvKgorICAqIFBl
cmZvcm0gdGhlIGNoZWNrIHdpdGggdGhlIGNsaWVudCBhcyB0aGUgc3ViamVjdCwgZmlyc3Qgd2l0
aCB0aGUgam9iIGFzIHRoZSBvYmplY3QKKyAgKiAgIGlmIHRoYXQgZmFpbHMgdGhlbiB3aXRoIHRo
ZSBzcG9vbCBmaWxlIGFzIHRoZSBvYmplY3QuLi4KKyAgKi8KKworICBpZiAoYXZjX2hhc19wZXJt
X25vYXVkaXQoY2xpc2lkLCBqb2JzaWQsIHRjbGFzcywgYXZyLCAmYXZjcmVmLCBOVUxMKSAhPSAw
KQorICB7CisgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19JTkZPLCAiY2hlY2tfY29udGV4
dDogU0VMaW51eCBkZW5pZWQgYWNjZXNzIGJhc2VkIG9uIHRoZSBjbGllbnQgY29udGV4dCIpOwor
CisgICAgc25wcmludGYoZmlsZW5hbWUsIHNpemVvZihmaWxlbmFtZSksICIlcy9jJTA1ZCIsIFJl
cXVlc3RSb290LCBqb2ItPmlkKTsKKyAgICBpZiAoZ2V0ZmlsZWNvbihmaWxlbmFtZSwgJnNwb29s
ZmlsZWNvbikgPT0gLTEpCisgICAgeworICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19F
UlJPUiwgImNoZWNrX2NvbnRleHQ6IFVuYWJsZSB0byBnZXQgc3Bvb2xmaWxlIGNvbnRleHQiKTsK
KyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGF2Y19jb250ZXh0X3RvX3NpZChzcG9v
bGZpbGVjb24sICZmaWxlc2lkKSAhPSAwKQorICAgIHsKKyAgICAgIGN1cHNkTG9nTWVzc2FnZShD
VVBTRF9MT0dfRVJST1IsICJjaGVja19jb250ZXh0OiBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSBT
RUxpbnV4IHNpZCBmb3IgdGhlIHNwb29sIGZpbGUiKTsKKyAgICAgIGZyZWVjb24oc3Bvb2xmaWxl
Y29uKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZnJlZWNvbihzcG9vbGZpbGVjb24p
OworICAgIGlmIChhdmNfaGFzX3Blcm1fbm9hdWRpdChjbGlzaWQsIGZpbGVzaWQsIHRjbGFzcywg
YXZyLCAmYXZjcmVmLCBOVUxMKSAhPSAwKQorICAgIHsKKyAgICAgIGN1cHNkTG9nTWVzc2FnZShD
VVBTRF9MT0dfSU5GTywgImNoZWNrX2NvbnRleHQ6IFNFTGludXggZGVuaWVkIGFjY2VzcyB0byB0
aGUgc3Bvb2wgZmlsZSIpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN1cHNkTG9nTWVz
c2FnZShDVVBTRF9MT0dfSU5GTywgImNoZWNrX2NvbnRleHQ6IFNFTGludXggYWxsb3dlZCBhY2Nl
c3MgdG8gdGhlIHNwb29sIGZpbGUiKTsKKyAgICByZXR1cm4gMTsKKyAgfQorICBlbHNlCisgICAg
aWYgKGVuZm9yY2luZyA9PSAwKQorICAgICAgICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0lO
Rk8sICJjaGVja19jb250ZXh0OiBhbGxvd2luZyBvcGVyYXRpb24gZHVlIHRvIHBlcm1pc3NpdmUg
bW9kZSIpOworICAgIGVsc2UKKyAgICAgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19JTkZP
LCAiY2hlY2tfY29udGV4dDogU0VMaW51eCBhbGxvd2VkIGFjY2VzcyBiYXNlZCBvbiB0aGUgY2xp
ZW50IGNvbnRleHQiKTsKKworICByZXR1cm4gMTsKK30KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8K
KworCiAvKgogICogJ2NoZWNrX3F1b3RhcygpJyAtIENoZWNrIHF1b3RhcyBmb3IgYSBwcmludGVy
IGFuZCB1c2VyLgogICovCkBAIC00MTgyLDYgKzQ1MTksMTUgQEAgY29weV9iYW5uZXIoY3Vwc2Rf
Y2xpZW50X3QgKmNvbiwJLyogSSAtCiAgIGNoYXIJCWF0dHJuYW1lWzI1NV0sCQkvKiBOYW1lIG9m
IGF0dHJpYnV0ZSAqLwogCQkqczsJCQkvKiBQb2ludGVyIGludG8gbmFtZSAqLwogICBpcHBfYXR0
cmlidXRlX3QgKmF0dHI7CQkvKiBBdHRyaWJ1dGUgKi8KKyNpZmRlZiBXSVRIX0xTUFAKKyAgY29u
c3QgY2hhcgkqbWxzX2xhYmVsOwkJLyogU0wgb2YgcHJpbnQgam9iICovCisgIGNoYXIJCSpqb2Jy
YW5nZTsJCS8qIFNFTGludXggc2Vuc2l0aXZpdHkgcmFuZ2UgKi8KKyAgY2hhcgkJKmpvYmNsZWFy
YW5jZTsJCS8qIFNFTGludXggbG93IGVuZCBjbGVhcmFuY2UgKi8KKyAgY29udGV4dF90CWpvYmNv
bjsJCQkvKiBTRUxpbnV4IGNvbnRleHQgb2YgdGhlIGpvYiAqLworICBjb250ZXh0X3QJdG1wY29u
OwkJCS8qIFRlbXAgY29udGV4dCB0byBzZXQgdGhlIGxldmVsICovCisgIHNlY3VyaXR5X2NvbnRl
eHRfdAlzcG9vbGNvbjsJLyogQ29udGV4dCBvZiB0aGUgZmlsZSBpbiB0aGUgc3Bvb2wgKi8KKyNl
bmRpZiAvKiBXSVRIX0xTUFAgKi8KKwogCiAKICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19E
RUJVRzIsCkBAIC00MjE3LDYgKzQ1NjMsODIgQEAgY29weV9iYW5uZXIoY3Vwc2RfY2xpZW50X3Qg
KmNvbiwJLyogSSAtCiAKICAgZmNobW9kKGN1cHNGaWxlTnVtYmVyKG91dCksIDA2NDApOwogICBm
Y2hvd24oY3Vwc0ZpbGVOdW1iZXIob3V0KSwgUnVuVXNlciwgR3JvdXApOworI2lmZGVmIFdJVEhf
TFNQUAorICBpZiAoam9iLT5zY29uICE9IE5VTEwgJiYKKyAgICAgIHN0cm5jbXAoam9iLT5zY29u
LCBVTktOT1dOX1NMLCBzdHJsZW4oVU5LTk9XTl9TTCkpICE9IDApCisgIHsKKyAgICBpZiAoZ2V0
ZmlsZWNvbihmaWxlbmFtZSwgJnNwb29sY29uKSA9PSAtMSkKKyAgICB7CisgICAgICBjdXBzZExv
Z01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJjb3B5X2Jh
bm5lcjogVW5hYmxlIHRvIGdldCB0aGUgY29udGV4dCBvZiB0aGUgYmFubmVyIGZpbGUgJXMgLSAl
cyIsCisgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7Cisg
ICAgICBqb2ItPm51bV9maWxlcyAtLTsKKyAgICAgIHJldHVybiAoMCk7CisgICAgfQorICAgIHRt
cGNvbiA9IGNvbnRleHRfbmV3KHNwb29sY29uKTsKKyAgICBqb2Jjb24gPSBjb250ZXh0X25ldyhq
b2ItPnNjb24pOworICAgIGZyZWVjb24oc3Bvb2xjb24pOworICAgIGlmICghdG1wY29uIHx8ICFq
b2Jjb24pCisgICAgeworICAgICAgaWYgKHRtcGNvbikKKyAgICAgICAgY29udGV4dF9mcmVlKHRt
cGNvbik7CisgICAgICBpZiAoam9iY29uKQorICAgICAgICBjb250ZXh0X2ZyZWUoam9iY29uKTsK
KyAgICAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAg
ICAgICAgImNvcHlfYmFubmVyOiBVbmFibGUgdG8gZ2V0IHRoZSBTRUxpbnV4IGNvbnRleHRzIik7
CisgICAgICBqb2ItPm51bV9maWxlcyAtLTsKKyAgICAgIHJldHVybiAoMCk7CisgICAgfQorICAg
IGpvYnJhbmdlID0gY29udGV4dF9yYW5nZV9nZXQoam9iY29uKTsKKyAgICBpZiAoam9icmFuZ2Up
CisgICAgeworICAgICAgam9icmFuZ2UgPSBzdHJkdXAoam9icmFuZ2UpOworICAgICAgaWYgKChq
b2JjbGVhcmFuY2UgPSBzdHJ0b2soam9icmFuZ2UsICItIikpICE9IE5VTEwpCisgICAgICB7CisJ
aWYgKGNvbnRleHRfcmFuZ2Vfc2V0KHRtcGNvbiwgam9iY2xlYXJhbmNlKSA9PSAtMSkKKwl7CisJ
ICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLAorCQkJICAiY29weV9iYW5uZXI6IFVu
YWJsZSB0byBzZXQgdGhlIGxldmVsIG9mIHRoZSBjb250ZXh0IGZvciBmaWxlICVzIC0gJXMiLAor
CQkJICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkgIGZyZWUoam9icmFuZ2UpOworCSAg
Y29udGV4dF9mcmVlKGpvYmNvbik7CisJICBjb250ZXh0X2ZyZWUodG1wY29uKTsKKwkgIGpvYi0+
bnVtX2ZpbGVzIC0tOworCSAgcmV0dXJuICgwKTsKKwl9CisgICAgICB9CisgICAgICBlbHNlCisg
ICAgICB7CisJaWYgKGNvbnRleHRfcmFuZ2Vfc2V0KHRtcGNvbiwgKGNvbnRleHRfcmFuZ2VfZ2V0
KGpvYmNvbikpKSA9PSAtMSkKKwl7CisJICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9S
LAorCQkJICAiY29weV9iYW5uZXI6IFVuYWJsZSB0byBzZXQgdGhlIGxldmVsIG9mIHRoZSBjb250
ZXh0IGZvciBmaWxlICVzIC0gJXMiLAorCQkJICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK
KwkgIGZyZWUoam9icmFuZ2UpOworCSAgY29udGV4dF9mcmVlKGpvYmNvbik7CisJICBjb250ZXh0
X2ZyZWUodG1wY29uKTsKKwkgIGpvYi0+bnVtX2ZpbGVzIC0tOworCSAgcmV0dXJuICgwKTsKKwl9
CisgICAgICB9CisgICAgICBmcmVlKGpvYnJhbmdlKTsKKyAgICB9CisgICAgaWYgKHNldGZpbGVj
b24oZmlsZW5hbWUsIGNvbnRleHRfc3RyKHRtcGNvbikpID09IC0xKQorICAgIHsKKyAgICAgIGN1
cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgImNv
cHlfYmFubmVyOiBVbmFibGUgdG8gc2V0IHRoZSBjb250ZXh0IG9mIHRoZSBiYW5uZXIgZmlsZSAl
cyAtICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8p
KTsKKyAgICAgIGNvbnRleHRfZnJlZShqb2Jjb24pOworICAgICAgY29udGV4dF9mcmVlKHRtcGNv
bik7CisgICAgICBqb2ItPm51bV9maWxlcyAtLTsKKyAgICAgIHJldHVybiAoMCk7CisgICAgfQor
ICAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfREVCVUcyLCAiY29weV9iYW5uZXI6ICVzIHNl
dCB0byAlcyIsCisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBjb250ZXh0X3N0cih0bXBj
b24pKTsKKyAgICBjb250ZXh0X2ZyZWUoam9iY29uKTsKKyAgICBjb250ZXh0X2ZyZWUodG1wY29u
KTsKKyAgfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAgLyoKICAgKiBUcnkgdGhlIGxvY2Fs
aXplZCBiYW5uZXIgZmlsZSB1bmRlciB0aGUgc3ViZGlyZWN0b3J5Li4uCkBAIC00MzExLDYgKzQ3
MzMsMjQgQEAgY29weV9iYW5uZXIoY3Vwc2RfY2xpZW50X3QgKmNvbiwJLyogSSAtCiAgICAgICBl
bHNlCiAgICAgICAgIHMgPSBhdHRybmFtZTsKIAorI2lmZGVmIFdJVEhfTFNQUAorICAgICAgaWYg
KHN0cmNtcChzLCAibWxzLWxhYmVsIikgPT0gMCkKKyAgICAgIHsKKyAgICAgICAgaWYgKGpvYi0+
c2NvbiAhPSBOVUxMICYmIHN0cm5jbXAoam9iLT5zY29uLCBVTktOT1dOX1NMLCBzdHJsZW4oVU5L
Tk9XTl9TTCkpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICBqb2Jjb24gPSBjb250ZXh0X25l
dyhqb2ItPnNjb24pOworICAgICAgICAgIGlmIChfY3Vwc19zdHJjYXNlY21wKG5hbWUsIE1MU19D
T05GSUcpID09IDApCisgICAgICAgICAgICBtbHNfbGFiZWwgPSBjb250ZXh0X3JhbmdlX2dldChq
b2Jjb24pOworICAgICAgICAgIGVsc2UgaWYgKF9jdXBzX3N0cmNhc2VjbXAobmFtZSwgVEVfQ09O
RklHKSA9PSAwKQorICAgICAgICAgICAgbWxzX2xhYmVsID0gY29udGV4dF90eXBlX2dldChqb2Jj
b24pOworICAgICAgICAgIGVsc2UgLy8gZGVmYXVsdCB0byB1c2luZyB0aGUgd2hvbGUgY29udGV4
dCBzdHJpbmcKKyAgICAgICAgICAgIG1sc19sYWJlbCA9IGNvbnRleHRfc3RyKGpvYmNvbik7Cisg
ICAgICAgICAgY3Vwc0ZpbGVQdXRzKG91dCwgbWxzX2xhYmVsKTsKKyAgICAgICAgICBjb250ZXh0
X2ZyZWUoam9iY29uKTsKKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyNl
bmRpZiAvKiBXSVRIX0xTUFAgKi8KICAgICAgIGlmICghc3RyY21wKHMsICJwcmludGVyLW5hbWUi
KSkKICAgICAgIHsKICAgICAgICAgY3Vwc0ZpbGVQdXRzKG91dCwgam9iLT5kZXN0KTsKQEAgLTYz
ODgsNiArNjgyOCwyMiBAQCBnZXRfam9iX2F0dHJzKGN1cHNkX2NsaWVudF90ICAqY29uLAkvKiBJ
CiAKICAgZXhjbHVkZSA9IGN1cHNkR2V0UHJpdmF0ZUF0dHJzKHBvbGljeSwgY29uLCBwcmludGVy
LCBqb2ItPnVzZXJuYW1lKTsKIAorCisjaWZkZWYgV0lUSF9MU1BQCisgLyoKKyAgKiBDaGVjayBT
RUxpbnV4Li4uCisgICovCisgIGlmIChpc19sc3BwX2NvbmZpZygpICYmIGNoZWNrX2NvbnRleHQo
Y29uLCBqb2IpICE9IDEpCisgIHsKKyAgIC8qCisgICAgKiBVbmZvcnR1bmF0ZWx5IHdlIGhhdmUg
dG8gbGllIHRvIHRoZSB1c2VyLi4uCisgICAgKi8KKyAgICBzZW5kX2lwcF9zdGF0dXMoY29uLCBJ
UFBfTk9UX0ZPVU5ELCBfKCJKb2IgIyVkIGRvZXMgbm90IGV4aXN0ISIpLCBqb2JpZCk7CisgICAg
cmV0dXJuOworICB9CisjZW5kaWYgLyogV0lUSF9MU1BQICovCisKKwogIC8qCiAgICogQ29weSBh
dHRyaWJ1dGVzLi4uCiAgICovCkBAIC02NzQxLDYgKzcxOTcsMTEgQEAgZ2V0X2pvYnMoY3Vwc2Rf
Y2xpZW50X3QgICpjb24sCQkvKiBJIC0gQwogICAgICAgaWYgKHVzZXJuYW1lWzBdICYmIF9jdXBz
X3N0cmNhc2VjbXAodXNlcm5hbWUsIGpvYi0+dXNlcm5hbWUpKQogCWNvbnRpbnVlOwogCisjaWZk
ZWYgV0lUSF9MU1BQCisgICAgICBpZiAoaXNfbHNwcF9jb25maWcoKSAmJiBjaGVja19jb250ZXh0
KGNvbiwgam9iKSAhPSAxKQorCWNvbnRpbnVlOworI2VuZGlmIC8qIFdJVEhfTFNQUCAqLworCiAg
ICAgICBpZiAoY291bnQgPiAwKQogCWlwcEFkZFNlcGFyYXRvcihjb24tPnJlc3BvbnNlKTsKIApA
QCAtMTEzMDMsNiArMTE3NjQsMTEgQEAgdmFsaWRhdGVfdXNlcihjdXBzZF9qb2JfdCAgICAqam9i
LAkvKiBJCiAKICAgc3RybGNweSh1c2VybmFtZSwgZ2V0X3VzZXJuYW1lKGNvbiksIHVzZXJsZW4p
OwogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmIChpc19sc3BwX2NvbmZpZygpICYmIGNoZWNrX2Nv
bnRleHQoY29uLCBqb2IpICE9IDEpCisgICAgcmV0dXJuIDA7CisjZW5kaWYgLyogV0lUSF9MU1BQ
ICovCisKICAvKgogICAqIENoZWNrIHRoZSB1c2VybmFtZSBhZ2FpbnN0IHRoZSBvd25lci4uLgog
ICAqLwpkaWZmIC11cCBjdXBzLTEuNi4yL3NjaGVkdWxlci9qb2IuYy5sc3BwIGN1cHMtMS42LjIv
c2NoZWR1bGVyL2pvYi5jCi0tLSBjdXBzLTEuNi4yL3NjaGVkdWxlci9qb2IuYy5sc3BwCTIwMTMt
MDMtMTggMTk6MDA6MzAuNjg2NDQ4NDA2ICswMTAwCisrKyBjdXBzLTEuNi4yL3NjaGVkdWxlci9q
b2IuYwkyMDEzLTAzLTE4IDE5OjAwOjMwLjczNTQ0NzcyNyArMDEwMApAQCAtNjgsNiArNjgsOSBA
QAogICogICB1cGRhdGVfam9iX2F0dHJzKCkgCS0gVXBkYXRlIHRoZSBqb2ItcHJpbnRlci0qIGF0
dHJpYnV0ZXMuCiAgKi8KIAorLyogQ29weXJpZ2h0IChDKSAyMDA1IFRydXN0ZWQgQ29tcHV0ZXIg
U29sdXRpb25zLCBJbmMuICovCisvKiAoYykgQ29weXJpZ2h0IDIwMDUtMjAwNiBIZXdsZXR0LVBh
Y2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLiAqLworCiAvKgogICogSW5jbHVkZSBuZWNl
c3NhcnkgaGVhZGVycy4uLgogICovCkBAIC04Myw2ICs4NiwxNCBAQAogIyAgZW5kaWYgLyogSEFW
RV9JT0tJVF9QV1JfTUdUX0lPUE1MSUJQUklWQVRFX0ggKi8KICNlbmRpZiAvKiBfX0FQUExFX18g
Ki8KIAorI2lmZGVmIFdJVEhfTFNQUAorI2luY2x1ZGUgPGxpYmF1ZGl0Lmg+CisjaW5jbHVkZSA8
c2VsaW51eC9zZWxpbnV4Lmg+CisjaW5jbHVkZSA8c2VsaW51eC9jb250ZXh0Lmg+CisjaW5jbHVk
ZSA8c2VsaW51eC9hdmMuaD4KKyNpbmNsdWRlIDxzZWxpbnV4L2ZsYXNrLmg+CisjaW5jbHVkZSA8
c2VsaW51eC9hdl9wZXJtaXNzaW9ucy5oPgorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAvKgog
ICogRGVzaWduIE5vdGVzIGZvciBKb2IgTWFuYWdlbWVudApAQCAtNTgwLDYgKzU5MSwxNCBAQCBj
dXBzZENvbnRpbnVlSm9iKGN1cHNkX2pvYl90ICpqb2IpCS8qIEkKIAkJCQkJLyogUFJJTlRFUl9T
VEFURV9SRUFTT05TIGVudiB2YXIgKi8KIAkJCXJpcF9tYXhfY2FjaGVbMjU1XTsKIAkJCQkJLyog
UklQX01BWF9DQUNIRSBlbnYgdmFyaWFibGUgKi8KKyNpZmRlZiBXSVRIX0xTUFAKKyAgY2hhcgkJ
CSphdWRpdF9tZXNzYWdlID0gTlVMTDsJLyogQXVkaXQgbWVzc2FnZSBzdHJpbmcgKi8KKyAgY29u
dGV4dF90CQlqb2Jjb247CQkvKiBTRUxpbnV4IGNvbnRleHQgb2YgdGhlIGpvYiAqLworICBjaGFy
CQkJKmxhYmVsX3RlbXBsYXRlID0gTlVMTDsJLyogU0wgdG8gcHV0IGluIGNsYXNzaWZpY2F0aW9u
CisJCQkJCQkgICBlbnYgdmFyICovCisgIGNvbnN0IGNoYXIJCSptbHNfbGFiZWwgPSBOVUxMOwkv
KiBTTCB0byBwdXQgaW4gY2xhc3NpZmljYXRpb24KKwkJCQkJCSAgIGVudiB2YXIgKi8KKyNlbmRp
ZiAvKiBXSVRIX0xTUFAgKi8KIAogCiAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfREVCVUcy
LApAQCAtMTA3MSw2ICsxMDkwLDY3IEBAIGN1cHNkQ29udGludWVKb2IoY3Vwc2Rfam9iX3QgKmpv
YikJLyogSQogICAgIH0KICAgfQogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmIChpc19sc3BwX2Nv
bmZpZygpKQorICB7CisgICAgaWYgKCFqb2ItPnNjb24gfHwgc3RybmNtcChqb2ItPnNjb24sIFVO
S05PV05fU0wsIHN0cmxlbihVTktOT1dOX1NMKSkgPT0gMCkKKyAgICB7CisgICAgICBpZiAoQXVk
aXRMb2cgIT0gLTEpCisgICAgICB7CisgICAgICAgIGF1ZGl0X21lc3NhZ2UgPSBOVUxMOworICAg
ICAgICBjdXBzZFNldFN0cmluZ2YoJmF1ZGl0X21lc3NhZ2UsICJqb2I9JWQgYXVpZD0ldSBhY2N0
PSVzIHByaW50ZXI9JXMgdGl0bGU9JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgam9iLT5p
ZCwgam9iLT5hdWlkLCBqb2ItPnVzZXJuYW1lLCBqb2ItPnByaW50ZXItPm5hbWUsIHRpdGxlKTsK
KyAgICAgICAgYXVkaXRfbG9nX3VzZXJfbWVzc2FnZShBdWRpdExvZywgQVVESVRfVVNFUl9VTkxB
QkVMRURfRVhQT1JULCBhdWRpdF9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlcnZlck5hbWUsIE5VTEwsIE5VTEwsIDEpOworICAgICAgICBjdXBzZENsZWFyU3RyaW5n
KCZhdWRpdF9tZXNzYWdlKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSAKKyAgICB7CisgICAg
ICBqb2Jjb24gPSBjb250ZXh0X25ldyhqb2ItPnNjb24pOworCisgICAgICBpZiAoKGF0dHIgPSBp
cHBGaW5kQXR0cmlidXRlKGpvYi0+YXR0cnMsICJqb2Itc2hlZXRzIiwgSVBQX1RBR19OQU1FKSkg
PT0gTlVMTCkKKyAgICAgICAgbGFiZWxfdGVtcGxhdGUgPSBzdHJkdXAoQ2xhc3NpZmljYXRpb24p
OworICAgICAgZWxzZSBpZiAoYXR0ci0+bnVtX3ZhbHVlcyA+IDEgJiYKKyAgICAgICAgICAgICAg
IHN0cmNtcChhdHRyLT52YWx1ZXNbMV0uc3RyaW5nLnRleHQsICJub25lIikgIT0gMCkKKyAgICAg
ICAgbGFiZWxfdGVtcGxhdGUgPSBzdHJkdXAoYXR0ci0+dmFsdWVzWzFdLnN0cmluZy50ZXh0KTsK
KyAgICAgIGVsc2UKKyAgICAgICAgbGFiZWxfdGVtcGxhdGUgPSBzdHJkdXAoYXR0ci0+dmFsdWVz
WzBdLnN0cmluZy50ZXh0KTsKKworICAgICAgaWYgKF9jdXBzX3N0cmNhc2VjbXAobGFiZWxfdGVt
cGxhdGUsIE1MU19DT05GSUcpID09IDApCisgICAgICAgIG1sc19sYWJlbCA9IGNvbnRleHRfcmFu
Z2VfZ2V0KGpvYmNvbik7CisgICAgICBlbHNlIGlmIChfY3Vwc19zdHJjYXNlY21wKGxhYmVsX3Rl
bXBsYXRlLCBURV9DT05GSUcpID09IDApCisgICAgICAgIG1sc19sYWJlbCA9IGNvbnRleHRfdHlw
ZV9nZXQoam9iY29uKTsKKyAgICAgIGVsc2UgaWYgKF9jdXBzX3N0cmNhc2VjbXAobGFiZWxfdGVt
cGxhdGUsIFNFTElOVVhfQ09ORklHKSA9PSAwKQorICAgICAgICBtbHNfbGFiZWwgPSBjb250ZXh0
X3N0cihqb2Jjb24pOworICAgICAgZWxzZQorICAgICAgICBtbHNfbGFiZWwgPSBsYWJlbF90ZW1w
bGF0ZTsKKworICAgICAgaWYgKG1sc19sYWJlbCAmJiAoUGVyUGFnZUxhYmVscyB8fCBiYW5uZXJf
cGFnZSkpCisgICAgICB7CisgICAgICAgIHNucHJpbnRmKGNsYXNzaWZpY2F0aW9uLCBzaXplb2Yo
Y2xhc3NpZmljYXRpb24pLCAiQ0xBU1NJRklDQVRJT049TFNQUDolcyIsIG1sc19sYWJlbCk7Cisg
ICAgICAgIGVudnBbZW52YyArK10gPSBjbGFzc2lmaWNhdGlvbjsKKyAgICAgIH0KKworICAgICAg
aWYgKChBdWRpdExvZyAhPSAtMSkgJiYgIWJhbm5lcl9wYWdlKQorICAgICAgeworICAgICAgICBh
dWRpdF9tZXNzYWdlID0gTlVMTDsKKyAgICAgICAgY3Vwc2RTZXRTdHJpbmdmKCZhdWRpdF9tZXNz
YWdlLCAiam9iPSVkIGF1aWQ9JXUgYWNjdD0lcyBwcmludGVyPSVzIHRpdGxlPSVzIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIiBvYmo9JXMgbGFiZWw9JXMiLCBqb2ItPmlkLCBqb2ItPmF1aWQs
IGpvYi0+dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBqb2ItPnByaW50ZXItPm5h
bWUsIHRpdGxlLCBqb2ItPnNjb24sIG1sc19sYWJlbD9tbHNfbGFiZWw6Im5vbmUiKTsKKyAgICAg
ICAgYXVkaXRfbG9nX3VzZXJfbWVzc2FnZShBdWRpdExvZywgQVVESVRfVVNFUl9MQUJFTEVEX0VY
UE9SVCwgYXVkaXRfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2
ZXJOYW1lLCBOVUxMLCBOVUxMLCAxKTsKKyAgICAgICAgY3Vwc2RDbGVhclN0cmluZygmYXVkaXRf
bWVzc2FnZSk7CisgICAgICB9CisgICAgICBjb250ZXh0X2ZyZWUoam9iY29uKTsKKyAgICAgIGZy
ZWUobGFiZWxfdGVtcGxhdGUpOworICAgIH0KKyAgfQorICBlbHNlCisgICAvKgorICAgICogRmFs
bCB0aHJvdWdoIHRvIHRoZSBub24tTFNQUCBiZWhhdmlvcgorICAgICovCisjZW5kaWYgLyogV0lU
SF9MU1BQICovCiAgIGlmIChDbGFzc2lmaWNhdGlvbiAmJiAhYmFubmVyX3BhZ2UpCiAgIHsKICAg
ICBpZiAoKGF0dHIgPSBpcHBGaW5kQXR0cmlidXRlKGpvYi0+YXR0cnMsICJqb2Itc2hlZXRzIiwK
QEAgLTE4NDUsNiArMTkyNSwyMCBAQCBjdXBzZExvYWRKb2IoY3Vwc2Rfam9iX3QgKmpvYikJCS8q
IEkgLSBKCiAgICAgICBpcHBTZXRTdHJpbmcoam9iLT5hdHRycywgJmpvYi0+cmVhc29ucywgMCwg
Im5vbmUiKTsKICAgfQogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmICgoYXR0ciA9IGlwcEZpbmRB
dHRyaWJ1dGUoam9iLT5hdHRycywgInNlY3VyaXR5LWNvbnRleHQiLCBJUFBfVEFHX05BTUUpKSAh
PSBOVUxMKQorICAgIGN1cHNkU2V0U3RyaW5nKCZqb2ItPnNjb24sIGF0dHItPnZhbHVlc1swXS5z
dHJpbmcudGV4dCk7CisgIGVsc2UgaWYgKGlzX2xzcHBfY29uZmlnKCkpCisgIHsKKyAgIC8qCisg
ICAgKiBUaGVyZSB3YXMgbm8gc2VjdXJpdHkgY29udGV4dCBzbyBkZWxldGUgdGhlIGpvYgorICAg
ICovCisgICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwgIkxvYWRBbGxKb2JzOiBN
aXNzaW5nIG9yIGJhZCBzZWN1cml0eS1jb250ZXh0IGF0dHJpYnV0ZSBpbiBjb250cm9sIGZpbGUg
XCIlc1wiISIsCisgICAgICAgICAgICAgICAgICAgIGpvYmZpbGUpOworICAgIGdvdG8gZXJyb3I7
CisgIH0KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KKwogICBqb2ItPnNoZWV0cyAgICAgPSBpcHBG
aW5kQXR0cmlidXRlKGpvYi0+YXR0cnMsICJqb2ItbWVkaWEtc2hlZXRzLWNvbXBsZXRlZCIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBQX1RBR19JTlRFR0VSKTsKICAg
am9iLT5qb2Jfc2hlZXRzID0gaXBwRmluZEF0dHJpYnV0ZShqb2ItPmF0dHJzLCAiam9iLXNoZWV0
cyIsIElQUF9UQUdfTkFNRSk7CkBAIC0yMjM1LDYgKzIzMjksMTQgQEAgY3Vwc2RTYXZlSm9iKGN1
cHNkX2pvYl90ICpqb2IpCQkvKiBJIC0gSgogewogICBjaGFyCQlmaWxlbmFtZVsxMDI0XTsJCS8q
IEpvYiBjb250cm9sIGZpbGVuYW1lICovCiAgIGN1cHNfZmlsZV90CSpmcDsJCQkvKiBKb2IgZmls
ZSAqLworI2lmZGVmIFdJVEhfTFNQUAorICBzZWN1cml0eV9jb250ZXh0X3QJc3Bvb2xjb247CS8q
IGNvbnRleHQgb2YgdGhlIGpvYiBjb250cm9sIGZpbGUgKi8KKyAgY29udGV4dF90CQlqb2Jjb247
CQkvKiBjb250ZXhfdCBjb250YWluZXIgZm9yIGpvYi0+c2NvbiAqLworICBjb250ZXh0X3QJCXRt
cGNvbjsJCS8qIFRlbXAgY29udGV4dCB0byBzd2FwIHRoZSBsZXZlbCAqLworICBjaGFyCQkJKmpv
YmNsZWFyYW5jZTsJLyogU0VMaW51eCBsb3cgZW5kIGNsZWFyYW5jZSAqLworICBjb25zdCBjaGFy
CQkqam9icmFuZ2U7CS8qIFNFTGludXggc2Vuc2l0aXZpdHkgcmFuZ2UgKi8KKyAgY2hhcgkJCSpq
b2JyYW5nZV9jb3B5OwkvKiBTRUxpbnV4IHNlbnNpdGl2aXR5IHJhbmdlICovCisjZW5kaWYgLyog
V0lUSF9MU1BQICovCiAKIAogICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0RFQlVHMiwgImN1
cHNkU2F2ZUpvYihqb2I9JXAoJWQpKTogam9iLT5hdHRycz0lcCIsCkBAIC0yMjQ3LDYgKzIzNDks
NzYgQEAgY3Vwc2RTYXZlSm9iKGN1cHNkX2pvYl90ICpqb2IpCQkvKiBJIC0gSgogCiAgIGZjaG93
bihjdXBzRmlsZU51bWJlcihmcCksIFJ1blVzZXIsIEdyb3VwKTsKIAorI2lmZGVmIFdJVEhfTFNQ
UAorICBpZiAoam9iLT5zY29uICYmIHN0cm5jbXAoam9iLT5zY29uLCBVTktOT1dOX1NMLCBzdHJs
ZW4oVU5LTk9XTl9TTCkpICE9IDApCisgIHsKKyAgICBpZiAoZ2V0ZmlsZWNvbihmaWxlbmFtZSwg
JnNwb29sY29uKSA9PSAtMSkKKyAgICB7CisgICAgICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9H
X0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gZ2V0IGNvbnRleHQgb2Yg
am9iIGNvbnRyb2wgZmlsZSBcIiVzXCIgLSAlcy4iLAorICAgICAgICAgICAgICAgICAgICAgIGZp
bGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBqb2Jj
b24gPSBjb250ZXh0X25ldyhqb2ItPnNjb24pOworICAgIHRtcGNvbiA9IGNvbnRleHRfbmV3KHNw
b29sY29uKTsKKyAgICBmcmVlY29uKHNwb29sY29uKTsKKyAgICBpZiAoIWpvYmNvbiB8fCAhdG1w
Y29uKQorICAgIHsKKyAgICAgIGlmIChqb2Jjb24pCisgICAgICAgIGNvbnRleHRfZnJlZShqb2Jj
b24pOworICAgICAgaWYgKHRtcGNvbikKKyAgICAgICAgY29udGV4dF9mcmVlKHRtcGNvbik7Cisg
ICAgICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLCAiVW5hYmxlIHRvIGdldCBTRUxp
bnV4IGNvbnRleHRzIik7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGpvYnJhbmdlID0gY29u
dGV4dF9yYW5nZV9nZXQoam9iY29uKTsKKyAgICBpZiAoam9icmFuZ2UpCisgICAgeworICAgICAg
am9icmFuZ2VfY29weSA9IHN0cmR1cChqb2JyYW5nZSk7CisgICAgICBpZiAoKGpvYmNsZWFyYW5j
ZSA9IHN0cnRvayhqb2JyYW5nZV9jb3B5LCAiLSIpKSAhPSBOVUxMKQorICAgICAgeworCWlmIChj
b250ZXh0X3JhbmdlX3NldCh0bXBjb24sIGpvYmNsZWFyYW5jZSkgPT0gLTEpCisJeworCSAgY3Vw
c2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwKKwkJCSAgIlVuYWJsZSB0byBzZXQgdGhlIHJh
bmdlIGZvciBqb2IgY29udHJvbCBmaWxlIFwiJXNcIiAtICVzLiIsCisJCQkgIGZpbGVuYW1lLCBz
dHJlcnJvcihlcnJubykpOworCSAgZnJlZShqb2JyYW5nZV9jb3B5KTsKKwkgIGNvbnRleHRfZnJl
ZSh0bXBjb24pOworCSAgY29udGV4dF9mcmVlKGpvYmNvbik7CisJICByZXR1cm47CisJfQorICAg
ICAgfQorICAgICAgZWxzZQorICAgICAgeworCWlmIChjb250ZXh0X3JhbmdlX3NldCh0bXBjb24s
IChjb250ZXh0X3JhbmdlX2dldChqb2Jjb24pKSkgPT0gLTEpCisJeworCSAgY3Vwc2RMb2dNZXNz
YWdlKENVUFNEX0xPR19FUlJPUiwKKwkJCSAgIlVuYWJsZSB0byBzZXQgdGhlIHJhbmdlIGZvciBq
b2IgY29udHJvbCBmaWxlIFwiJXNcIiAtICVzLiIsCisJCQkgIGZpbGVuYW1lLCBzdHJlcnJvcihl
cnJubykpOworCSAgZnJlZShqb2JyYW5nZV9jb3B5KTsKKwkgIGNvbnRleHRfZnJlZSh0bXBjb24p
OworCSAgY29udGV4dF9mcmVlKGpvYmNvbik7CisJICByZXR1cm47CisJfQorICAgICAgfQorICAg
ICAgZnJlZShqb2JyYW5nZV9jb3B5KTsKKyAgICB9CisgICAgaWYgKHNldGZpbGVjb24oZmlsZW5h
bWUsIGNvbnRleHRfc3RyKHRtcGNvbikpID09IC0xKQorICAgIHsKKyAgICAgIGN1cHNkTG9nTWVz
c2FnZShDVVBTRF9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBz
ZXQgY29udGV4dCBvZiBqb2IgY29udHJvbCBmaWxlIFwiJXNcIiAtICVzLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICBjb250ZXh0X2Zy
ZWUodG1wY29uKTsKKyAgICAgIGNvbnRleHRfZnJlZShqb2Jjb24pOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0RFQlVHMiwgImN1cHNkU2F2ZUpv
Yihqb2I9JXApOiBuZXcgc3Bvb2wgZmlsZSBjb250ZXh0PSVzIiwKKyAgICAgICAgICAgICAgICAg
ICAgam9iLCBjb250ZXh0X3N0cih0bXBjb24pKTsKKyAgICBjb250ZXh0X2ZyZWUodG1wY29uKTsK
KyAgICBjb250ZXh0X2ZyZWUoam9iY29uKTsKKyAgfQorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwor
CiAgIGpvYi0+YXR0cnMtPnN0YXRlID0gSVBQX0lETEU7CiAKICAgaWYgKGlwcFdyaXRlSU8oZnAs
IChpcHBfaW9jYl90KWN1cHNGaWxlV3JpdGUsIDEsIE5VTEwsCkBAIC0zNzU2LDYgKzM5MjgsMTgg
QEAgZ2V0X29wdGlvbnMoY3Vwc2Rfam9iX3QgKmpvYiwJCS8qIEkgLSBKbwogCSAgYmFubmVyX3Bh
Z2UpCiAgICAgICAgIGNvbnRpbnVlOwogCisjaWZkZWYgV0lUSF9MU1BQCisgICAgIC8qCisgICAg
ICAqIEluIExTUFAgbW9kZSByZWZ1c2UgdG8gaG9ub3IgdGhlIHBhZ2UtbGFiZWwKKyAgICAgICov
CisgICAgICBpZiAoaXNfbHNwcF9jb25maWcoKSAmJgorICAgICAgICAgICFzdHJjbXAoYXR0ci0+
bmFtZSwgInBhZ2UtbGFiZWwiKSkKKyAgICAgIHsKKyAgICAgICAgY3Vwc2RMb2dNZXNzYWdlKENV
UFNEX0xPR19ERUJVRywgIklnbm9yaW5nIHBhZ2UtbGFiZWwgb3B0aW9uIGR1ZSB0byBMU1BQIG1v
ZGUiKTsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisjZW5kaWYgLyogV0lUSF9MU1BQICov
CisKICAgICAgLyoKICAgICAgICogT3RoZXJ3aXNlIGFkZCB0aGVtIHRvIHRoZSBsaXN0Li4uCiAg
ICAgICAqLwpAQCAtNDQ4MCw2ICs0NjY0LDE5IEBAIHN0YXRpYyB2b2lkCiBzdGFydF9qb2IoY3Vw
c2Rfam9iX3QgICAgICpqb2IsCQkvKiBJIC0gSm9iIElEICovCiAgICAgICAgICAgY3Vwc2RfcHJp
bnRlcl90ICpwcmludGVyKQkvKiBJIC0gUHJpbnRlciB0byBwcmludCBqb2IgKi8KIHsKKyNpZmRl
ZiBXSVRIX0xTUFAKKyAgY2hhcgkJCSphdWRpdF9tZXNzYWdlID0gTlVMTDsJLyogQXVkaXQgbWVz
c2FnZSBzdHJpbmcgKi8KKyAgY2hhcgkJCSpwcmludGVyZmlsZSA9IE5VTEw7CS8qIERldmljZSBm
aWxlIHBvaW50ZWQgdG8gYnkgdGhlIHByaW50ZXIgKi8KKyAgc2VjdXJpdHlfaWRfdAkJY2xpc2lk
OwkJLyogU0VMaW51eCBTSUQgZm9yIHRoZSBjbGllbnQgKi8KKyAgc2VjdXJpdHlfaWRfdAkJcHNp
ZDsJCS8qIFNFTGludXggU0lEIGZvciB0aGUgcHJpbnRlciAqLworICBjb250ZXh0X3QJCXByaW50
ZXJjb247CS8qIFByaW50ZXIncyBjb250ZXh0IHN0cmluZyAqLworICBzdHJ1Y3Qgc3RhdAkJcHJp
bnRlcnN0YXQ7CS8qIFByaW50ZXIncyBzdGF0IGJ1ZmZlciAqLworICBzZWN1cml0eV9jb250ZXh0
X3QJZGV2Y29uOwkJLyogUHJpbnRlcidzIFNFTGludXggY29udGV4dCAqLworICBzdHJ1Y3QgYXZj
X2VudHJ5X3JlZglhdmNyZWY7CQkvKiBQb2ludGVyIHRvIHRoZSBhY2Nlc3MgdmVjdG9yIGNhY2hl
ICovCisgIHNlY3VyaXR5X2NsYXNzX3QJdGNsYXNzOwkJLyogT2JqZWN0IGNsYXNzIGZvciB0aGUg
U0VMaW51eCBjaGVjayAqLworICBhY2Nlc3NfdmVjdG9yX3QJYXZyOwkJLyogQWNjZXNzIG1ldGhv
ZCBiZWluZyByZXF1ZXN0ZWQgKi8KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KKwogICBjdXBzZExv
Z01lc3NhZ2UoQ1VQU0RfTE9HX0RFQlVHMiwgInN0YXJ0X2pvYihqb2I9JXAoJWQpLCBwcmludGVy
PSVwKCVzKSkiLAogICAgICAgICAgICAgICAgICAgam9iLCBqb2ItPmlkLCBwcmludGVyLCBwcmlu
dGVyLT5uYW1lKTsKIApAQCAtNDYyMiw2ICs0ODE5LDEwOCBAQCBzdGFydF9qb2IoY3Vwc2Rfam9i
X3QgICAgICpqb2IsCQkvKiBJIC0KICAgZmNudGwoam9iLT5zaWRlX3BpcGVzWzFdLCBGX1NFVEZE
LAogCWZjbnRsKGpvYi0+c2lkZV9waXBlc1sxXSwgRl9HRVRGRCkgfCBGRF9DTE9FWEVDKTsKIAor
I2lmZGVmIFdJVEhfTFNQUAorICBpZiAoaXNfbHNwcF9jb25maWcoKSkKKyAgeworICAgLyoKKyAg
ICAqIFBlcmZvcm0gYW4gYWNjZXNzIGNoZWNrIGJlZm9yZSBwcmludGluZywgYnV0IG9ubHkgaWYg
dGhlIHByaW50ZXIgc3RhcnRzIHdpdGggL2Rldi8KKyAgICAqLworICAgIHByaW50ZXJmaWxlID0g
c3Ryc3RyKHByaW50ZXItPmRldmljZV91cmksICIvZGV2LyIpOworICAgIGlmIChwcmludGVyZmls
ZSA9PSBOVUxMICYmIChzdHJuY21wKHByaW50ZXItPmRldmljZV91cmksICJmaWxlOi8iLCA2KSA9
PSAwKSkKKyAgICAgIHByaW50ZXJmaWxlID0gcHJpbnRlci0+ZGV2aWNlX3VyaSArIHN0cmxlbigi
ZmlsZToiKTsKKworICAgIGlmIChwcmludGVyZmlsZSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGN1
cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfREVCVUcsCisgICAgICAgICAgICAgICAgICAgICAgIlN0
YXJ0Sm9iOiBBdHRlbXB0aW5nIHRvIGNoZWNrIGFjY2VzcyBvbiBwcmludGVyIGRldmljZSAlcyIs
IHByaW50ZXJmaWxlKTsKKyAgICAgIGlmIChsc3RhdChwcmludGVyZmlsZSwgJnByaW50ZXJzdGF0
KSA8IDApCisgICAgICB7CisJaWYgKGVycm5vICE9IEVOT0VOVCkKKwl7CisJICBjdXBzZExvZ01l
c3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLCAiU3RhcnRKb2I6IFVuYWJsZSB0byBzdGF0IHRoZSBwcmlu
dGVyIik7CisJICBjdXBzZFNldEpvYlN0YXRlKGpvYiwgSVBQX0pPQl9BQk9SVEVELCBDVVBTRF9K
T0JfREVGQVVMVCwgTlVMTCk7CisJICByZXR1cm4gOworCX0KKwkvKgorCSAqIFRoZSBwcmludGVy
IGRvZXMgbm90IGV4aXN0LCBzbyBmb3Igbm93IGFzc3VtZSBpdCdzIGEgRmlsZURldmljZQorCSAq
LworCXRjbGFzcyA9IFNFQ0NMQVNTX0ZJTEU7CisJYXZyID0gRklMRV9fV1JJVEU7CisgICAgICB9
CisgICAgICBlbHNlIGlmIChTX0lTQ0hSKHByaW50ZXJzdGF0LnN0X21vZGUpKQorICAgICAgewor
CXRjbGFzcyA9IFNFQ0NMQVNTX0NIUl9GSUxFOworCWF2ciA9IENIUl9GSUxFX19XUklURTsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgaWYgKFNfSVNSRUcocHJpbnRlcnN0YXQuc3RfbW9kZSkpCisgICAg
ICB7CisJdGNsYXNzID0gU0VDQ0xBU1NfRklMRTsKKwlhdnIgPSBGSUxFX19XUklURTsKKyAgICAg
IH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKwljdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9S
LAorCQkJIlN0YXJ0Sm9iOiBQcmludGVyIGlzIG5vdCBhIGNoYXJhY3RlciBkZXZpY2Ugb3IgcmVn
dWxhciBmaWxlIik7CisJY3Vwc2RTZXRKb2JTdGF0ZShqb2IsIElQUF9KT0JfQUJPUlRFRCwgQ1VQ
U0RfSk9CX0RFRkFVTFQsIE5VTEwpOworCXJldHVybiA7CisgICAgICB9CisgICAgICBzdGF0aWMg
YXZjX2luaXRpYWxpemVkID0gMDsKKyAgICAgIGlmICghYXZjX2luaXRpYWxpemVkKyspCisgICAg
ICAgICAgYXZjX2luaXQoImN1cHNkX2RlcXVldWVfIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7
CisgICAgICBhdmNfZW50cnlfcmVmX2luaXQoJmF2Y3JlZik7CisgICAgICBpZiAoYXZjX2NvbnRl
eHRfdG9fc2lkKGpvYi0+c2NvbiwgJmNsaXNpZCkgIT0gMCkKKyAgICAgIHsKKyAgICAgICAgY3Vw
c2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJT
dGFydEpvYjogVW5hYmxlIHRvIGRldGVybWluZSB0aGUgU0VMaW51eCBzaWQgZm9yIHRoZSBqb2Ii
KTsKKyAgICAgICAgY3Vwc2RTZXRKb2JTdGF0ZShqb2IsIElQUF9KT0JfQUJPUlRFRCwgQ1VQU0Rf
Sk9CX0RFRkFVTFQsIE5VTEwpOworICAgICAgICByZXR1cm4gOworICAgICAgfQorICAgICAgaWYg
KGdldGZpbGVjb24ocHJpbnRlcmZpbGUsICZkZXZjb24pID09IC0xKQorICAgICAgeworICAgICAg
ICBjdXBzZExvZ01lc3NhZ2UoQ1VQU0RfTE9HX0VSUk9SLCAiU3RhcnRKb2I6IFVuYWJsZSB0byBn
ZXQgdGhlIFNFTGludXggY29udGV4dCBvZiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBw
cmludGVyZmlsZSk7CisgICAgICAgIGN1cHNkU2V0Sm9iU3RhdGUoam9iLCBJUFBfSk9CX0FCT1JU
RUQsIENVUFNEX0pPQl9ERUZBVUxULCBOVUxMKTsKKyAgICAgICAgcmV0dXJuIDsKKyAgICAgIH0K
KyAgICAgIHByaW50ZXJjb24gPSBjb250ZXh0X25ldyhkZXZjb24pOworICAgICAgY3Vwc2RMb2dN
ZXNzYWdlKENVUFNEX0xPR19ERUJVRywgIlN0YXJ0Sm9iOiBwcmludGVyIGNvbnRleHQgJXMgY2xp
ZW50IGNvbnRleHQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfc3RyKHByaW50
ZXJjb24pLCBqb2ItPnNjb24pOworICAgICAgY29udGV4dF9mcmVlKHByaW50ZXJjb24pOworCisg
ICAgICBpZiAoYXZjX2NvbnRleHRfdG9fc2lkKGRldmNvbiwgJnBzaWQpICE9IDApCisgICAgICB7
CisgICAgICAgIGN1cHNkTG9nTWVzc2FnZShDVVBTRF9MT0dfRVJST1IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiU3RhcnRKb2I6IFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIFNFTGludXggc2lk
IGZvciB0aGUgcHJpbnRlciIpOworICAgICAgICBmcmVlY29uKGRldmNvbik7CisgICAgICAgIGN1
cHNkU2V0Sm9iU3RhdGUoam9iLCBJUFBfSk9CX0FCT1JURUQsIENVUFNEX0pPQl9ERUZBVUxULCBO
VUxMKTsKKyAgICAgICAgcmV0dXJuIDsKKyAgICAgIH0KKyAgICAgIGZyZWVjb24oZGV2Y29uKTsK
KworICAgICAgaWYgKGF2Y19oYXNfcGVybShjbGlzaWQsIHBzaWQsIHRjbGFzcywgYXZyLCAmYXZj
cmVmLCBOVUxMKSAhPSAwKQorICAgICAgeworICAgICAgIC8qCisgICAgICAgICogVGhlIGFjY2Vz
cyBjaGVjayBmYWlsZWQsIHNvIGNhbmNlbCB0aGUgam9iIGFuZCBzZW5kIGFuIGF1ZGl0IG1lc3Nh
Z2UKKyAgICAgICAgKi8KKyAgICAgICAgaWYgKEF1ZGl0TG9nICE9IC0xKQorICAgICAgICB7Cisg
ICAgICAgICAgYXVkaXRfbWVzc2FnZSA9IE5VTEw7CisgICAgICAgICAgY3Vwc2RTZXRTdHJpbmdm
KCZhdWRpdF9tZXNzYWdlLCAiam9iPSVkIGF1aWQ9JXUgYWNjdD0lcyBvYmo9JXMgY2FuY2VsZWQi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHVuYWJsZSB0byBh
Y2Nlc3MgcHJpbnRlcj0lcyIsIGpvYi0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGpv
Yi0+YXVpZCwgKGpvYi0+dXNlcm5hbWUpP2pvYi0+dXNlcm5hbWU6Ij8iLCBqb2ItPnNjb24sIHBy
aW50ZXItPm5hbWUpOworICAgICAgICAgIGF1ZGl0X2xvZ191c2VyX21lc3NhZ2UoQXVkaXRMb2cs
IEFVRElUX1VTRVJfTEFCRUxFRF9FWFBPUlQsIGF1ZGl0X21lc3NhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJOYW1lLCBOVUxMLCBOVUxMLCAwKTsKKyAgICAgICAg
ICBjdXBzZENsZWFyU3RyaW5nKCZhdWRpdF9tZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAg
IGN1cHNkU2V0Sm9iU3RhdGUoam9iLCBJUFBfSk9CX0FCT1JURUQsIENVUFNEX0pPQl9ERUZBVUxU
LCBOVUxMKTsKKworICAgICAgICByZXR1cm4gOworICAgICAgfQorICAgIH0KKyAgfQorI2VuZGlm
IC8qIFdJVEhfTFNQUCAqLworCiAgLyoKICAgKiBOb3cgc3RhcnQgdGhlIGZpcnN0IGZpbGUgaW4g
dGhlIGpvYi4uLgogICAqLwpkaWZmIC11cCBjdXBzLTEuNi4yL3NjaGVkdWxlci9qb2IuaC5sc3Bw
IGN1cHMtMS42LjIvc2NoZWR1bGVyL2pvYi5oCi0tLSBjdXBzLTEuNi4yL3NjaGVkdWxlci9qb2Iu
aC5sc3BwCTIwMTItMDUtMjMgMDM6MzY6NTAuMDAwMDAwMDAwICswMjAwCisrKyBjdXBzLTEuNi4y
L3NjaGVkdWxlci9qb2IuaAkyMDEzLTAzLTE4IDE5OjAwOjMwLjczNjQ0NzcxMyArMDEwMApAQCAt
MTMsNiArMTMsMTMgQEAKICAqICAgZmlsZSBpcyBtaXNzaW5nIG9yIGRhbWFnZWQsIHNlZSB0aGUg
bGljZW5zZSBhdCAiaHR0cDovL3d3dy5jdXBzLm9yZy8iLgogICovCiAKKy8qIENvcHlyaWdodCAo
QykgMjAwNSBUcnVzdGVkIENvbXB1dGVyIFNvbHV0aW9ucywgSW5jLiAqLworLyogKGMpIENvcHly
aWdodCAyMDA1LTIwMDYgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4g
Ki8KKworI2lmZGVmIFdJVEhfTFNQUAorI2luY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgorI2Vu
ZGlmIC8qIFdJVEhfTFNQUCAqLworCiAvKgogICogQ29uc3RhbnRzLi4uCiAgKi8KQEAgLTgyLDYg
Kzg5LDEwIEBAIHN0cnVjdCBjdXBzZF9qb2JfcwkJCS8qKioqIEpvYiByZXF1ZXN0ICoKICAgaW50
CQkJcHJvZ3Jlc3M7CS8qIFByaW50aW5nIHByb2dyZXNzICovCiAgIGludAkJCW51bV9rZXl3b3Jk
czsJLyogTnVtYmVyIG9mIFBQRCBrZXl3b3JkcyAqLwogICBjdXBzX29wdGlvbl90CQkqa2V5d29y
ZHM7CS8qIFBQRCBrZXl3b3JkcyAqLworI2lmZGVmIFdJVEhfTFNQUAorICBzZWN1cml0eV9jb250
ZXh0X3QJc2NvbjsJCS8qIFNlY3VyaXR5IGNvbnRleHQgb2Ygam9iICovCisgIHVpZF90CQkJYXVp
ZDsJCS8qIEF1ZGl0IGxvZ2ludWlkIGZvciB0aGlzIGpvYiAqLworI2VuZGlmIC8qIFdJVEhfTFNQ
UCAqLwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgY3Vwc2Rfam9ibG9nX3MJCS8qKioqIEpvYiBsb2cg
bWVzc2FnZSAqKioqLwpkaWZmIC11cCBjdXBzLTEuNi4yL3NjaGVkdWxlci9tYWluLmMubHNwcCBj
dXBzLTEuNi4yL3NjaGVkdWxlci9tYWluLmMKLS0tIGN1cHMtMS42LjIvc2NoZWR1bGVyL21haW4u
Yy5sc3BwCTIwMTMtMDMtMTggMTk6MDA6MzAuNzA4NDQ4MTAxICswMTAwCisrKyBjdXBzLTEuNi4y
L3NjaGVkdWxlci9tYWluLmMJMjAxMy0wMy0xOCAxOTowNTozNi40MjIyMDY4ODggKzAxMDAKQEAg
LTM4LDYgKzM4LDggQEAKICAqICAgdXNhZ2UoKSAgICAgICAgICAgICAgIC0gU2hvdyBzY2hlZHVs
ZXIgdXNhZ2UuCiAgKi8KIAorLyogKGMpIENvcHlyaWdodCAyMDA1LTIwMDYgSGV3bGV0dC1QYWNr
YXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4gKi8KKwogLyoKICAqIEluY2x1ZGUgbmVjZXNz
YXJ5IGhlYWRlcnMuLi4KICAqLwpAQCAtODAsNiArODIsOSBAQAogIyAgaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfUEFSQU1fSCAqLwogCisjaWZkZWYgV0lUSF9MU1BQ
CisjICBpbmNsdWRlIDxsaWJhdWRpdC5oPgorI2VuZGlmIC8qIFdJVEhfTFNQUCAqLwogCiAvKgog
ICogTG9jYWwgZnVuY3Rpb25zLi4uCkBAIC0xNDMsNiArMTQ4LDkgQEAgbWFpbihpbnQgIGFyZ2Ms
CQkJCS8qIEkgLSBOdW1iZXIgb2YgY29tbQogI2lmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pICYm
ICFkZWZpbmVkKEhBVkVfU0lHU0VUKQogICBzdHJ1Y3Qgc2lnYWN0aW9uCWFjdGlvbjsJCS8qIEFj
dGlvbnMgZm9yIFBPU0lYIHNpZ25hbHMgKi8KICNlbmRpZiAvKiBIQVZFX1NJR0FDVElPTiAmJiAh
SEFWRV9TSUdTRVQgKi8KKyNpZiBXSVRIX0xTUFAKKyAgYXVkaXRmYWlsX3QgICAgICAgICAgIGZh
aWxtb2RlOyAgICAgICAvKiBBY3Rpb24gZm9yIGF1ZGl0X29wZW4gZmFpbHVyZSAqLworI2VuZGlm
IC8qIFdJVEhfTFNQUCAqLwogI2lmZGVmIF9fc2dpCiAgIGN1cHNfZmlsZV90CQkqZnA7CQkvKiBG
YWtlIGxwc2NoZWQgbG9jayBmaWxlICovCiAgIHN0cnVjdCBzdGF0CQlzdGF0YnVmOwkvKiBOZWVk
ZWQgZm9yIGNoZWNraW5nIGxwc2NoZWQgRklGTyAqLwpAQCAtNTIyLDYgKzUzMCwyNSBAQCBtYWlu
KGludCAgYXJnYywJCQkJLyogSSAtIE51bWJlciBvZiBjb21tCiAjZW5kaWYgLyogREVCVUcgKi8K
ICAgfQogCisjaWZkZWYgV0lUSF9MU1BQCisgIGlmICgoQXVkaXRMb2cgPSBhdWRpdF9vcGVuKCkp
IDwgMCApCisgIHsKKyAgICBpZiAoZ2V0X2F1ZGl0ZmFpbF9hY3Rpb24oJmZhaWxtb2RlKSA9PSAw
KQorICAgIHsKKyAgICAgIGlmIChmYWlsbW9kZSA9PSBGQUlMX0xPRykKKyAgICAgIHsKKyAgICAg
ICAgY3Vwc2RMb2dNZXNzYWdlKENVUFNEX0xPR19FUlJPUiwgIlVuYWJsZSB0byBjb25uZWN0IHRv
IGF1ZGl0IHN1YnN5c3RlbS4iKTsKKyAgICAgICAgQXVkaXRMb2cgPSAtMTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKGZhaWxtb2RlID09IEZBSUxfVEVSTUlOQVRFKQorICAgICAgeworICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgImN1cHNkOiB1bmFibGUgdG8gc3RhcnQgYXVkaXRpbmcsIHRlcm1p
bmF0aW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyNlbmRp
ZiAvKiBXSVRIX0xTUFAgKi8KKwogIC8qCiAgICogU2V0IHRoZSB0aW1lem9uZSBpbmZvLi4uCiAg
ICovCkBAIC0xMjE2LDYgKzEyNDMsMTEgQEAgbWFpbihpbnQgIGFyZ2MsCQkJCS8qIEkgLSBOdW1i
ZXIgb2YgY29tbQogCiAgIGN1cHNkU3RvcFNlbGVjdCgpOwogCisjaWZkZWYgV0lUSF9MU1BQCisg
IGlmIChBdWRpdExvZyAhPSAtMSkKKyAgICBhdWRpdF9jbG9zZShBdWRpdExvZyk7CisjZW5kaWYg
LyogV0lUSF9MU1BQICovCisKICAgcmV0dXJuICghc3RvcF9zY2hlZHVsZXIpOwogfQogCmRpZmYg
LXVwIGN1cHMtMS42LjIvc2NoZWR1bGVyL3ByaW50ZXJzLmMubHNwcCBjdXBzLTEuNi4yL3NjaGVk
dWxlci9wcmludGVycy5jCi0tLSBjdXBzLTEuNi4yL3NjaGVkdWxlci9wcmludGVycy5jLmxzcHAJ
MjAxMy0wMy0xOCAxOTowMDozMC42NDk0NDg5MjAgKzAxMDAKKysrIGN1cHMtMS42LjIvc2NoZWR1
bGVyL3ByaW50ZXJzLmMJMjAxMy0wMy0xOCAxOTowNzo0OC4yNDQzNzc2NzMgKzAxMDAKQEAgLTU2
LDYgKzU2LDggQEAKICAqICAgd3JpdGVfeG1sX3N0cmluZygpICAgICAgICAgLSBXcml0ZSBhIHN0
cmluZyB3aXRoIFhNTCBlc2NhcGluZy4KICAqLwogCisvKiAoYykgQ29weXJpZ2h0IDIwMDUtMjAw
NiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLiAqLworCiAvKgogICog
SW5jbHVkZSBuZWNlc3NhcnkgaGVhZGVycy4uLgogICovCkBAIC04MCw2ICs4MiwxMCBAQAogIyAg
aW5jbHVkZSA8YXNsLmg+CiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAKKyNpZmRlZiBXSVRIX0xT
UFAKKyMgIGluY2x1ZGUgPGxpYmF1ZGl0Lmg+CisjICBpbmNsdWRlIDxzZWxpbnV4L2NvbnRleHQu
aD4KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KIAogLyoKICAqIExvY2FsIGZ1bmN0aW9ucy4uLgpA
QCAtMjA5MCw2ICsyMDk2LDEzIEBAIGN1cHNkU2V0UHJpbnRlckF0dHJzKGN1cHNkX3ByaW50ZXJf
dCAqcCkKICAgaXBwX2F0dHJpYnV0ZV90ICphdHRyOwkJLyogQXR0cmlidXRlIGRhdGEgKi8KICAg
Y2hhcgkJKm5hbWUsCQkJLyogQ3VycmVudCB1c2VyL2dyb3VwIG5hbWUgKi8KIAkJKmZpbHRlcjsJ
CS8qIEN1cnJlbnQgZmlsdGVyICovCisjaWZkZWYgV0lUSF9MU1BQCisgIGNoYXIJCSphdWRpdF9t
ZXNzYWdlOwkJLyogQXVkaXQgbWVzc2FnZSBzdHJpbmcgKi8KKyAgY2hhcgkJKnByaW50ZXJmaWxl
OwkJLyogUGF0aCB0byBhIGxvY2FsIHByaW50ZXIgZGV2ICovCisgIGNoYXIJCSpyYW5nZXN0cjsJ
CS8qIFByaW50ZXIncyByYW5nZSBpZiBpdHMgYXZhaWxhYmxlICovCisgIHNlY3VyaXR5X2NvbnRl
eHRfdAlkZXZjb247CQkvKiBQcmludGVyIFNFTGludXggY29udGV4dCAqLworICBjb250ZXh0X3QJ
cHJpbnRlcmNvbjsJCS8qIGNvbnRleHRfdCBmb3IgdGhlIHByaW50ZXIgKi8KKyNlbmRpZiAvKiBX
SVRIX0xTUFAgKi8KIAogCiAgIERFQlVHX3ByaW50ZigoImN1cHNkU2V0UHJpbnRlckF0dHJzOiBl
bnRlcmluZyBuYW1lID0gJXMsIHR5cGUgPSAleFxuIiwgcC0+bmFtZSwKQEAgLTIyMTIsNiArMjIy
NSw0NSBAQCBjdXBzZFNldFByaW50ZXJBdHRycyhjdXBzZF9wcmludGVyX3QgKnApCiAgICAgICBh
dHRyLT52YWx1ZXNbMV0uc3RyaW5nLnRleHQgPSBfY3Vwc1N0ckFsbG9jKENsYXNzaWZpY2F0aW9u
ID8KIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIDog
cC0+am9iX3NoZWV0c1sxXSk7CiAgICAgfQorI2lmZGVmIFdJVEhfTFNQUAorICAgIGlmIChBdWRp
dExvZyAhPSAtMSkKKyAgICB7CisgICAgICBhdWRpdF9tZXNzYWdlID0gTlVMTDsKKyAgICAgIHJh
bmdlc3RyID0gTlVMTDsKKyAgICAgIHByaW50ZXJjb24gPSAwOworICAgICAgcHJpbnRlcmZpbGUg
PSBzdHJzdHIocC0+ZGV2aWNlX3VyaSwgIi9kZXYvIik7CisgICAgICBpZiAocHJpbnRlcmZpbGUg
PT0gTlVMTCAmJiAoc3RybmNtcChwLT5kZXZpY2VfdXJpLCAiZmlsZTovIiwgNikgPT0gMCkpCisg
ICAgICAgIHByaW50ZXJmaWxlID0gcC0+ZGV2aWNlX3VyaSArIHN0cmxlbigiZmlsZToiKTsKKwor
ICAgICAgaWYgKHByaW50ZXJmaWxlICE9IE5VTEwpCisgICAgICB7CisgICAgICAgIGlmIChnZXRm
aWxlY29uKHByaW50ZXJmaWxlLCAmZGV2Y29uKSA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAg
IGlmKGlzX3NlbGludXhfZW5hYmxlZCgpKQorICAgICAgICAgICAgY3Vwc2RMb2dNZXNzYWdlKENV
UFNEX0xPR19ERUJVRywgImN1cHNkU2V0UHJpbnRlckF0dHJzOiBVbmFibGUgdG8gZ2V0IHByaW50
ZXIgY29udGV4dCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgIHByaW50ZXJjb24gPSBjb250ZXh0X25ldyhkZXZjb24pOworICAgICAgICAgIGZyZWVjb24o
ZGV2Y29uKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAocHJpbnRlcmNvbiAmJiBj
b250ZXh0X3JhbmdlX2dldChwcmludGVyY29uKSkKKyAgICAgICAgcmFuZ2VzdHIgPSBzdHJkdXAo
Y29udGV4dF9yYW5nZV9nZXQocHJpbnRlcmNvbikpOworICAgICAgZWxzZQorICAgICAgICByYW5n
ZXN0ciA9IHN0cmR1cCgidW5rbm93biIpOworCisgICAgICBjdXBzZFNldFN0cmluZ2YoJmF1ZGl0
X21lc3NhZ2UsICJwcmludGVyPSVzIHVyaT0lcyBiYW5uZXJzPSVzLCVzIHJhbmdlPSVzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICBwLT5uYW1lLCBwLT5zYW5pdGl6ZWRfZGV2aWNlX3VyaSwgcC0+
am9iX3NoZWV0c1swXSwgcC0+am9iX3NoZWV0c1sxXSwgcmFuZ2VzdHIpOworICAgICAgYXVkaXRf
bG9nX3VzZXJfbWVzc2FnZShBdWRpdExvZywgQVVESVRfTEFCRUxfTEVWRUxfQ0hBTkdFLCBhdWRp
dF9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJOYW1lLCBOVUxM
LCBOVUxMLCAxKTsKKyAgICAgIGlmIChwcmludGVyY29uKQorICAgICAgICBjb250ZXh0X2ZyZWUo
cHJpbnRlcmNvbik7CisgICAgICBmcmVlKHJhbmdlc3RyKTsKKyAgICAgIGN1cHNkQ2xlYXJTdHJp
bmcoJmF1ZGl0X21lc3NhZ2UpOworICAgIH0KKyNlbmRpZiAvKiBXSVRIX0xTUFAgKi8KICAgfQog
CiAgIHAtPnJhdyAgICA9IDA7CkBAIC01Mjk4LDcgKzUzNTAsNiBAQCB3cml0ZV9pcml4X3N0YXRl
KGN1cHNkX3ByaW50ZXJfdCAqcCkJLyoKIH0KICNlbmRpZiAvKiBfX3NnaSAqLwogCi0KIC8qCiAg
KiAnd3JpdGVfeG1sX3N0cmluZygpJyAtIFdyaXRlIGEgc3RyaW5nIHdpdGggWE1MIGVzY2FwaW5n
LgogICovCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>